[WebUI] Final Changes Pre Release (#1613)
Description:
1 - Fix nextDisplayPage/nextWebUIPage sync with SSD1306
2 - Discovery message name is SS1306
3 - Stack size tuning - ARDUINO_LOOP_STACK_SIZE=9600
With this change, in your personal ESP32 platformio environments you need to change ${com-esp.build_flags} to ${com-esp32.build_flags} and ${com-esp.lib_deps} to ${com-esp32.lib_deps}
4 - On information page, fix module display
5 - Set OTA URL to String systemUrl = RELEASE_LINK + latestVersion + "/" + ENV_NAME + "-firmware.bin";
6 - Allow back level espressif32 framework support
This commit is contained in:
1 parent
57651334dc
commit
8d5c2c4d58
7 files changed
+154
-166
No files matched your search
+98
-147
@@ -53,8 +53,7 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.irremoteesp}
|
||||
@@ -80,7 +79,7 @@ lib_deps =
|
||||
${libraries.shtc3}
|
||||
${libraries.rn8209}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayRF="RF"'
|
||||
'-DZgatewayLORA="LORA"'
|
||||
'-DZgatewayRF2="RF2"'
|
||||
@@ -118,11 +117,10 @@ build_flags =
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.rc-switch}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayRF="RF"'
|
||||
'-DGateway_Name="OMG_ESP32_RF"'
|
||||
custom_description = RF gateway using RCSwitch library
|
||||
@@ -131,11 +129,10 @@ custom_description = RF gateway using RCSwitch library
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.esppilight}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayPilight="Pilight"'
|
||||
'-DGateway_Name="OMG_ESP32_Pilight"'
|
||||
custom_description = RF gateway using ESPilight library
|
||||
@@ -144,12 +141,11 @@ custom_description = RF gateway using ESPilight library
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.esppilight}
|
||||
${libraries.smartrc-cc1101-driver-lib}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayPilight="Pilight"'
|
||||
'-DZradioCC1101="CC1101"'
|
||||
'-DGateway_Name="OMG_ESP32_Pilight-CC1101"'
|
||||
@@ -159,12 +155,11 @@ custom_description = Gateway using ESPilight library only, need CC1101
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.somfy_remote}
|
||||
${libraries.smartrc-cc1101-driver-lib}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZactuatorSomfy="Somfy"'
|
||||
'-DZradioCC1101="CC1101"'
|
||||
'-DGateway_Name="OMG_ESP32_Somfy-CC1101"'
|
||||
@@ -174,13 +169,12 @@ custom_description = Gateway using Somfy Remote library, need CC1101
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.esppilight}
|
||||
${libraries.somfy_remote}
|
||||
${libraries.smartrc-cc1101-driver-lib}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayPilight="Pilight"'
|
||||
'-DZactuatorSomfy="Somfy"'
|
||||
'-DZradioCC1101="CC1101"'
|
||||
@@ -191,11 +185,10 @@ custom_description = Gateway using Somfy Remote and ESPilight library, need CC11
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.rfWeatherStation}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayWeatherStation="WeatherStation"'
|
||||
'-DGateway_Name="OMG_ESP32_WeatherStation"'
|
||||
custom_description = Gateway to retrieve weather station data Ventus W174/W132 (tested), Auriol H13726, Hama EWS 1500, Meteoscan W155/W160 using WeatherStationDataRx
|
||||
@@ -204,12 +197,11 @@ custom_description = Gateway to retrieve weather station data Ventus W174/W132 (
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.emodbus}
|
||||
${libraries.gfSunInverter}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayGFSunInverter="GFSunInverter"'
|
||||
'-DGateway_Name="OMG_ESP32_GFSunInverter"'
|
||||
custom_description = RS232 reading of GridFree Sun Inverter
|
||||
@@ -218,11 +210,10 @@ custom_description = RS232 reading of GridFree Sun Inverter
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.irremoteesp}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayIR="IR"'
|
||||
'-DGateway_Name="OMG_ESP32_IR"'
|
||||
custom_description = Infrared (Emitting and receiving) using IRremoteESP8266
|
||||
@@ -232,12 +223,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=2'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
@@ -249,12 +239,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=2'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
@@ -267,12 +256,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=2'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
@@ -285,12 +273,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-UZmqttDiscovery="HADiscovery"'
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=2'
|
||||
@@ -310,12 +297,11 @@ platform = ${com.esp32_platform}
|
||||
board = featheresp32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=13'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
@@ -328,12 +314,11 @@ platform = ${com.esp32_platform}
|
||||
board = lolin32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=22'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
@@ -358,12 +343,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32-gateway
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_INFO=33'
|
||||
'-DLED_INFO_ON=1'
|
||||
@@ -377,12 +361,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32-poe
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DESP32_ETHERNET=true'
|
||||
'-DGateway_Name="OMG_ESP32_OLM_POE"'
|
||||
@@ -394,12 +377,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32-poe-iso
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DESP32_ETHERNET=true'
|
||||
'-DGateway_Name="OMG_ESP32_OLM_POE"'
|
||||
@@ -411,12 +393,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32-gateway
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DESP32_ETHERNET=true'
|
||||
'-DETH_PHY_ADDR=1'
|
||||
@@ -431,12 +412,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32-gateway
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_INFO=33'
|
||||
'-DLED_INFO_ON=1'
|
||||
@@ -450,13 +430,12 @@ platform = ${com.esp32_platform}
|
||||
board = m5stack-core-esp32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.irremoteesp}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DZgatewayIR="IR"'
|
||||
'-DLED_SEND_RECEIVE=19'
|
||||
@@ -474,13 +453,12 @@ platform = ${com.esp32_platform}
|
||||
board = m5stack-core-esp32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.m5stack}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DZsensorGPIOInput="GPIOInput"'
|
||||
'-DZboardM5STACK="M5Stack"'
|
||||
@@ -499,13 +477,12 @@ platform = ${com.esp32_platform}
|
||||
board = m5stack-core-esp32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.m5tough}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DZboardM5TOUGH="M5Tough"'
|
||||
'-DGateway_Name="OMG_ESP32_M5TOUGH_BLE"'
|
||||
@@ -518,14 +495,13 @@ platform = ${com.esp32_platform}
|
||||
board = m5stick-c
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.m5stickc}
|
||||
${libraries.irremoteesp}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DZgatewayIR="IR"'
|
||||
'-DZsensorGPIOInput="GPIOInput"'
|
||||
@@ -549,14 +525,13 @@ platform = ${com.esp32_platform}
|
||||
board = pico32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.m5stickcp}
|
||||
${libraries.irremoteesp}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DZgatewayIR="IR"'
|
||||
'-DZsensorGPIOInput="GPIOInput"'
|
||||
@@ -580,14 +555,13 @@ platform = ${com.esp32_platform}
|
||||
board = pico32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.irremoteesp}
|
||||
${libraries.adafruit_neopixel}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DZgatewayIR="IR"'
|
||||
'-DTRIGGER_GPIO=39'
|
||||
@@ -606,14 +580,13 @@ platform = ${com.esp32_platform}
|
||||
board = pico32
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.irremoteesp}
|
||||
${libraries.adafruit_neopixel}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DZgatewayIR="IR"'
|
||||
'-DTRIGGER_GPIO=39'
|
||||
@@ -632,11 +605,10 @@ platform = ${com.esp32_platform}
|
||||
board = esp32doit-devkit-v1
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.rtl_433_ESP}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Config ***
|
||||
;'-UZmqttDiscovery' ; disables MQTT Discovery
|
||||
'-DvalueAsATopic=true' ; MQTT topic includes model and device
|
||||
@@ -713,11 +685,10 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.rtl_433_ESP}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Config ***
|
||||
;'-UZmqttDiscovery' ; disables MQTT Discovery
|
||||
'-DvalueAsATopic=true' ; MQTT topic includes model and device
|
||||
@@ -754,12 +725,11 @@ board = heltec_wifi_lora_32_V2
|
||||
; ~/.platformio/packages/framework-arduinoespressif32/variants/.../pins_arduino.h
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ssd1306}
|
||||
${libraries.rtl_433_ESP}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Config ***
|
||||
;'-UZmqttDiscovery' ; disables MQTT Discovery
|
||||
'-DvalueAsATopic=true' ; MQTT topic includes model and device
|
||||
@@ -783,13 +753,12 @@ board = heltec_wifi_lora_32_V2
|
||||
; ~/.platformio/packages/framework-arduinoespressif32/variants/.../pins_arduino.h
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ssd1306}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Config ***
|
||||
;'-UZmqttDiscovery' ; disables MQTT Discovery
|
||||
'-DZgatewayBT="BT"'
|
||||
@@ -807,12 +776,11 @@ board = ttgo-lora32-v21
|
||||
; ~/.platformio/packages/framework-arduinoespressif32/variants/.../pins_arduino.h
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ssd1306}
|
||||
${libraries.rtl_433_ESP}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Config ***
|
||||
;'-UZmqttDiscovery' ; disables MQTT Discovery
|
||||
'-DvalueAsATopic=true' ; MQTT topic includes model and device
|
||||
@@ -837,13 +805,12 @@ board = ttgo-lora32-v21
|
||||
; ~/.platformio/packages/framework-arduinoespressif32/variants/.../pins_arduino.h
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ssd1306}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Config ***
|
||||
;'-UZmqttDiscovery' ; disables MQTT Discovery
|
||||
'-DZgatewayBT="BT"'
|
||||
@@ -861,15 +828,14 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.rc-switch}
|
||||
${libraries.smartrc-cc1101-driver-lib}
|
||||
${libraries.rtl_433_ESP}
|
||||
${libraries.esppilight}
|
||||
${libraries.newremoteswitch}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayRF="RF"'
|
||||
'-DZgatewayRF2="RF2"'
|
||||
'-DZgatewayRTL_433="RTL_433"'
|
||||
@@ -891,12 +857,11 @@ platform = ${com.esp32_platform}
|
||||
board = tinypico
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DGateway_Name="OMG_ESP32_TINYPICO_BLE"'
|
||||
board_build.flash_mode = dio
|
||||
@@ -907,11 +872,10 @@ custom_hardware = ESP32 TinyPICO
|
||||
platform = ${com.esp32_platform}
|
||||
board = ttgo-lora32-v1
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.lora}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayLORA="LORA"'
|
||||
'-DLORA_BAND=868E6'
|
||||
'-DGateway_Name="OMG_ESP32_LORA"'
|
||||
@@ -922,11 +886,10 @@ custom_hardware= ESP32 TTGO LORA V1
|
||||
platform = ${com.esp32_platform}
|
||||
board = ttgo-lora32-v1
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.lora}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayLORA="LORA"'
|
||||
'-DLORA_BAND=915E6'
|
||||
'-DGateway_Name="OMG_ESP32_LORA"'
|
||||
@@ -940,13 +903,12 @@ platform = ${com.esp32_platform}
|
||||
board = ttgo-t-beam
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.lora}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayLORA="LORA"'
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DGateway_Name="OMG_ESP32_BLE_LORA"'
|
||||
@@ -969,12 +931,11 @@ custom_hardware = TTGO T BEAM
|
||||
platform = ${com.esp32_platform}
|
||||
board = heltec_wifi_lora_32
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.lora}
|
||||
${libraries.ssd1306}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Modules ***
|
||||
'-DZgatewayLORA="LORA"'
|
||||
'-DLORA_BAND=868E6'
|
||||
@@ -997,12 +958,11 @@ custom_hardware = ESP32 HELTEC LORA32
|
||||
platform = ${com.esp32_platform}
|
||||
board = heltec_wifi_lora_32
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.lora}
|
||||
${libraries.ssd1306}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
; *** OpenMQTTGateway Modules ***
|
||||
'-DZgatewayLORA="LORA"'
|
||||
'-DLORA_BAND=915E6'
|
||||
@@ -1027,13 +987,12 @@ platform = ${com.esp32_solo_platform}
|
||||
board = esp32-solo1
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.wifimanager32}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DTimeBtwRead=100'
|
||||
'-DScan_duration=3000'
|
||||
@@ -1490,12 +1449,11 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=2'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
@@ -1510,13 +1468,12 @@ custom_description = Default BLE gateway with additional servicedata, manufactur
|
||||
platform = ${com.esp32_platform}
|
||||
board = esp32-s3-devkitc-1
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.adafruit_neopixel}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DANEOPIX_IND_DATA_GPIO=48'
|
||||
'-DANEOPIX_IND_NUM_LEDS=1'
|
||||
@@ -1530,13 +1487,12 @@ platform = ${com.esp32_platform}
|
||||
board = esp32-c3-devkitm-1
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.adafruit_neopixel}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DANEOPIX_IND_DATA_GPIO=8'
|
||||
'-DANEOPIX_IND_NUM_LEDS=1'
|
||||
@@ -1550,12 +1506,11 @@ platform = ${com.esp32_platform}
|
||||
board = airm2m_core_esp32c3
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_INFO=19'
|
||||
'-DLED_SEND_RECEIVE=20'
|
||||
@@ -1570,13 +1525,12 @@ platform = ${com.esp32_platform}
|
||||
board = esp32-c3-devkitm-1
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.adafruit_neopixel}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DANEOPIX_IND_DATA_GPIO=8'
|
||||
'-DANEOPIX_IND_NUM_LEDS=1'
|
||||
@@ -1603,13 +1557,12 @@ board = lolin_c3_mini
|
||||
board_build.partitions = min_spiffs.csv
|
||||
monitor_speed = 115200
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.decoder}
|
||||
${libraries.adafruit_neopixel}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DANEOPIX_IND_DATA_GPIO=7'
|
||||
'-DANEOPIX_IND_NUM_LEDS=1'
|
||||
@@ -1643,13 +1596,12 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.adafruit_neopixel}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=2'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
@@ -1671,13 +1623,12 @@ platform = ${com.esp32_platform}
|
||||
board = esp32dev
|
||||
board_build.partitions = min_spiffs.csv
|
||||
lib_deps =
|
||||
${com-esp.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
${com-esp32.lib_deps}
|
||||
${libraries.ble}
|
||||
${libraries.adafruit_neopixel}
|
||||
${libraries.decoder}
|
||||
build_flags =
|
||||
${com-esp.build_flags}
|
||||
${com-esp32.build_flags}
|
||||
'-DZgatewayBT="BT"'
|
||||
'-DLED_SEND_RECEIVE=2'
|
||||
'-DLED_SEND_RECEIVE_ON=0'
|
||||
|
||||
@@ -93,12 +93,13 @@ void loopSSD1306() {
|
||||
long enough since the last message and display not being used and a queue message waiting
|
||||
*/
|
||||
if (jsonDisplay && displayState) {
|
||||
if (uptime() >= nextDisplayPage && uxSemaphoreGetCount(semaphoreOLEDOperation) && currentWebUIMessage) {
|
||||
if (uptime() >= nextDisplayPage && uxSemaphoreGetCount(semaphoreOLEDOperation) && currentWebUIMessage && newSSD1306Message) {
|
||||
if (!Oled.displayPage(currentWebUIMessage)) {
|
||||
Log.warning(F("[ssd1306] displayPage failed: %s" CR), currentWebUIMessage->title);
|
||||
}
|
||||
nextDisplayPage = uptime() + DISPLAY_PAGE_INTERVAL;
|
||||
logoDisplayed = false;
|
||||
newSSD1306Message = false;
|
||||
}
|
||||
}
|
||||
/*
|
||||
|
||||
@@ -478,7 +478,7 @@ void pubMqttDiscovery() {
|
||||
|
||||
# ifdef ZdisplaySSD1306
|
||||
createDiscovery("switch", //set Type
|
||||
subjectSSD1306toMQTT, "SS1306: Control", (char*)getUniqueId("onstate", "").c_str(), //set state_topic,name,uniqueId
|
||||
subjectSSD1306toMQTT, "SSD1306: Control", (char*)getUniqueId("onstate", "").c_str(), //set state_topic,name,uniqueId
|
||||
will_Topic, "", "{{ value_json.onstate }}", //set availability_topic,device_class,value_template,
|
||||
"{\"onstate\":true,\"save\":true}", "{\"onstate\":false,\"save\":true}", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
@@ -488,7 +488,7 @@ void pubMqttDiscovery() {
|
||||
"false", "true" //state_off, state_on
|
||||
);
|
||||
createDiscovery("switch", //set Type
|
||||
subjectSSD1306toMQTT, "SS1306: Display metric", (char*)getUniqueId("displaymetric", "").c_str(), //set state_topic,name,uniqueId
|
||||
subjectSSD1306toMQTT, "SSD1306: Display metric", (char*)getUniqueId("displaymetric", "").c_str(), //set state_topic,name,uniqueId
|
||||
will_Topic, "", "{{ value_json.displaymetric }}", //set availability_topic,device_class,value_template,
|
||||
"{\"displaymetric\":true,\"save\":true}", "{\"displaymetric\":false,\"save\":true}", "", //set,payload_on,payload_off,unit_of_meas,
|
||||
0, //set off_delay
|
||||
|
||||
+21
-13
@@ -984,7 +984,7 @@ void handleIN() {
|
||||
informationDisplay += stateWebUIStatus();
|
||||
|
||||
// stateBTMeasures causes a Stack canary watchpoint triggered (loopTask)
|
||||
// WEBUI_TRACE_LOG(F("[WebUI] informationDisplay before %s" CR), informationDisplay.c_str());
|
||||
// WEBUI_TRACE_LOG(F("[WebUI] informationDisplay before %s" CR), informationDisplay.c_str());
|
||||
|
||||
// TODO: need to fix display of modules array within SYStoMQTT
|
||||
|
||||
@@ -994,7 +994,7 @@ void handleIN() {
|
||||
informationDisplay.replace("{\"", "");
|
||||
informationDisplay.replace("\"", "\\\"");
|
||||
|
||||
// WEBUI_TRACE_LOG(F("[WebUI] informationDisplay after %s" CR), informationDisplay.c_str());
|
||||
// WEBUI_TRACE_LOG(F("[WebUI] informationDisplay after %s" CR), informationDisplay.c_str());
|
||||
|
||||
if (informationDisplay.length() > WEB_TEMPLATE_BUFFER_MAX_SIZE) {
|
||||
Log.warning(F("[WebUI] informationDisplay content length ( %d ) greater than WEB_TEMPLATE_BUFFER_MAX_SIZE. Display truncated" CR), informationDisplay.length());
|
||||
@@ -1077,7 +1077,8 @@ void handleUP() {
|
||||
String response = String(buffer);
|
||||
response += String(script);
|
||||
response += String(style);
|
||||
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, upgrade_body, jsonChar, gateway_name, "https://github.com/1technophile/OpenMQTTGateway/releases/");
|
||||
String systemUrl = RELEASE_LINK + latestVersion + "/" + ENV_NAME + "-firmware.bin";
|
||||
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, upgrade_body, jsonChar, gateway_name, systemUrl.c_str());
|
||||
response += String(buffer);
|
||||
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, footer, OMG_VERSION);
|
||||
response += String(buffer);
|
||||
@@ -1141,7 +1142,9 @@ void handleCS() {
|
||||
if (cflg) {
|
||||
message += "\n";
|
||||
}
|
||||
message += String(line, len - 1);
|
||||
for (int x = 0; x < len - 1; x++) {
|
||||
message += line[x];
|
||||
}
|
||||
cflg = true;
|
||||
}
|
||||
message += "}1";
|
||||
@@ -1152,7 +1155,7 @@ void handleCS() {
|
||||
|
||||
char buffer[WEB_TEMPLATE_BUFFER_MAX_SIZE];
|
||||
|
||||
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, header_html, (String(gateway_name) + " - Configuration").c_str());
|
||||
snprintf(buffer, WEB_TEMPLATE_BUFFER_MAX_SIZE, header_html, (String(gateway_name) + " - Console").c_str());
|
||||
String response = String(buffer);
|
||||
response += String(console_script);
|
||||
response += String(script);
|
||||
@@ -1235,20 +1238,21 @@ void WebUISetup() {
|
||||
Log.notice(F("ZwebUI setup done" CR));
|
||||
}
|
||||
|
||||
unsigned long nextWebUIPage = uptime() + DISPLAY_WEBUI_INTERVAL;
|
||||
unsigned long nextWebUIMessage = uptime() + DISPLAY_WEBUI_INTERVAL;
|
||||
|
||||
void WebUILoop() {
|
||||
server.handleClient();
|
||||
|
||||
if (uptime() >= nextWebUIPage && uxQueueMessagesWaiting(webUIQueue)) {
|
||||
if (uptime() >= nextWebUIMessage && uxQueueMessagesWaiting(webUIQueue)) {
|
||||
webUIQueueMessage* message = nullptr;
|
||||
xQueueReceive(webUIQueue, &message, portMAX_DELAY);
|
||||
newSSD1306Message = true;
|
||||
|
||||
if (currentWebUIMessage) {
|
||||
free(currentWebUIMessage);
|
||||
}
|
||||
currentWebUIMessage = message;
|
||||
nextWebUIPage = uptime() + DISPLAY_WEBUI_INTERVAL;
|
||||
nextWebUIMessage = uptime() + DISPLAY_WEBUI_INTERVAL;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1424,7 +1428,7 @@ void webUIPubPrint(const char* topicori, JsonObject& data) {
|
||||
|
||||
# ifdef ZgatewayRTL_433
|
||||
case webUIHash("RTL_433toMQTT"): {
|
||||
if (strncmp(data["model"], "status", 6)) { // Does not contain "status"
|
||||
if (data["model"] && strncmp(data["model"], "status", 6)) { // Does not contain "status"
|
||||
// {"model":"Acurite-Tower","id":2043,"channel":"B","battery_ok":1,"temperature_C":5.3,"humidity":81,"mic":"CHECKSUM","protocol":"Acurite 592TXR Temp/Humidity, 5n1 Weather Station, 6045 Lightning, 3N1, Atlas","rssi":-81,"duration":121060}
|
||||
|
||||
// Line 1
|
||||
@@ -1433,13 +1437,17 @@ void webUIPubPrint(const char* topicori, JsonObject& data) {
|
||||
|
||||
// Line 2
|
||||
|
||||
if (data["id"] || data["channel"]) {
|
||||
String line2 = "";
|
||||
if (data["id"]) {
|
||||
String id = data["id"];
|
||||
String channel = data["channel"];
|
||||
String line2 = "id: " + id + " channel: " + channel;
|
||||
line2.toCharArray(message->line2, WEBUI_TEXT_WIDTH);
|
||||
line2 += "id: " + id + " ";
|
||||
}
|
||||
|
||||
if (data["channel"]) {
|
||||
String channel = data["channel"];
|
||||
line2 += "channel: " + channel;
|
||||
}
|
||||
line2.toCharArray(message->line2, WEBUI_TEXT_WIDTH);
|
||||
// Line 3
|
||||
|
||||
String line3 = "";
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#ifndef config_WebUI_h
|
||||
#define config_WebUI_h
|
||||
|
||||
#include <ArduinoJson.h>
|
||||
#include <Wire.h>
|
||||
|
||||
#define WEBUI_TEXT_WIDTH 128
|
||||
@@ -91,6 +92,7 @@ void MQTTtoWebUI(char*, JsonObject&);
|
||||
String stateWebUIStatus();
|
||||
|
||||
webUIQueueMessage* currentWebUIMessage;
|
||||
bool newSSD1306Message = false; // Flag to indicate new message to display
|
||||
|
||||
/*------------------- End of Global Functions ----------------------*/
|
||||
|
||||
|
||||
+14
-2
@@ -1964,11 +1964,23 @@ String stateMeasures() {
|
||||
}
|
||||
# endif
|
||||
SYSdata["modules"] = modules;
|
||||
String output;
|
||||
serializeJson(SYSdata, output);
|
||||
|
||||
pub(subjectSYStoMQTT, SYSdata);
|
||||
pubOled(subjectSYStoMQTT, SYSdata);
|
||||
|
||||
char jsonChar[100];
|
||||
serializeJson(modules, jsonChar, 99);
|
||||
|
||||
String _modules = jsonChar;
|
||||
|
||||
_modules.replace(",", ", ");
|
||||
_modules.replace("[", "");
|
||||
_modules.replace("]", "");
|
||||
_modules.replace("\"", "'");
|
||||
|
||||
SYSdata["modules"] = _modules.c_str();
|
||||
String output;
|
||||
serializeJson(SYSdata, output);
|
||||
return output;
|
||||
}
|
||||
#endif
|
||||
|
||||
+15
-1
@@ -176,9 +176,22 @@ esp32_platform = espressif32@6.1.0
|
||||
esp32_solo_platform = https://github.com/tasmota/platform-espressif32/releases/download/v.2.0.5/platform-espressif32-v.2.0.5.zip
|
||||
atmelavr_platform = atmelavr@3.3.0
|
||||
|
||||
[com-esp]
|
||||
[com-esp] ; Used by all ESP8266/ESP8285 based builds
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
'-DENV_NAME="$PIOENV"'
|
||||
'-DZmqttDiscovery="HADiscovery"'
|
||||
'-DTRACE=1'
|
||||
'-DMQTTsetMQTT'
|
||||
'-DMQTT_HTTPS_FW_UPDATE'
|
||||
;'-DCORE_DEBUG_LEVEL=4'
|
||||
|
||||
[com-esp32] ; Used by all ESP32 based builds
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
${libraries.wifimanager32}
|
||||
build_flags =
|
||||
${env.build_flags}
|
||||
'-DENV_NAME="$PIOENV"'
|
||||
@@ -190,6 +203,7 @@ build_flags =
|
||||
'-DMQTT_HTTPS_FW_UPDATE'
|
||||
;'-DCORE_DEBUG_LEVEL=4'
|
||||
'-DZwebUI="WebUI"' ; enable WebUI as a default for all ESP32 builds ( the module only enables for ESP32 based builds )
|
||||
'-DARDUINO_LOOP_STACK_SIZE=9600' ; The firmware upgrade options needs a large amount of free stack, ~9600
|
||||
|
||||
[com-arduino]
|
||||
lib_deps =
|
||||
|
||||
Reference in new issue
Block a user