Merge branch 'arendst/development' into development

This commit is contained in:
reloxx13 2018-06-01 18:48:09 +02:00
commit e5811c4e9c
42 changed files with 1306 additions and 340 deletions

View File

@ -15,7 +15,7 @@ If you like **Sonoff-Tasmota**, give it a star, or fork it and contribute!
Current version is **5.14.0b** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. Current version is **5.14.0b** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information.
### Quick install ### Quick Install
Download one of the released binaries from https://github.com/arendst/Sonoff-Tasmota/releases and flash it to your hardware as documented in the wiki. Download one of the released binaries from https://github.com/arendst/Sonoff-Tasmota/releases and flash it to your hardware as documented in the wiki.
### Important User Compilation Information ### Important User Compilation Information
@ -68,7 +68,7 @@ The following devices are supported:
- [Luani HVIO board](https://luani.de/projekte/esp8266-hvio/) - [Luani HVIO board](https://luani.de/projekte/esp8266-hvio/)
- Wemos D1 mini, NodeMcu and Ledunia - Wemos D1 mini, NodeMcu and Ledunia
### Firmware release information ### Firmware Release Information
Different firmware images are released based on Features and Sensors selection guided by code and memory usage. Different firmware images are released based on Features and Sensors selection guided by code and memory usage.
- The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter. - The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter.
@ -129,7 +129,7 @@ Different firmware images are released based on Features and Sensors selection g
| USE_ARILUX_RF | x | x | - | x | x | | USE_ARILUX_RF | x | x | - | x | x |
| USE_SR04 | x | - | - | x | x | | USE_SR04 | x | - | - | x | x |
#### Typical file size #### Typical File Size
| ESP/Arduino library version | sonoff | classic | minimal | knx | allsensors | | ESP/Arduino library version | sonoff | classic | minimal | knx | allsensors |
|-----------------------------|--------|---------|---------|------|------------| |-----------------------------|--------|---------|---------|------|------------|
@ -147,7 +147,7 @@ You can contribute to Sonoff-Tasmota by
### Credits ### Credits
#### Libraries used #### Libraries Used
Libraries used with Sonoff-Tasmota are: Libraries used with Sonoff-Tasmota are:
- [ESP8266 core for Arduino](https://github.com/esp8266/Arduino) - [ESP8266 core for Arduino](https://github.com/esp8266/Arduino)
- [Adafruit BME680](https://github.com/adafruit/Adafruit_BME680) - [Adafruit BME680](https://github.com/adafruit/Adafruit_BME680)

View File

@ -30,6 +30,7 @@ env_default = sonoff
;env_default = sonoff-PL ;env_default = sonoff-PL
;env_default = sonoff-PT ;env_default = sonoff-PT
;env_default = sonoff-RU ;env_default = sonoff-RU
;env_default = sonoff-UK
;env_default = sonoff-TW ;env_default = sonoff-TW
[common] ; ************************************************************ [common] ; ************************************************************
@ -46,7 +47,7 @@ platform = espressif8266@1.5.0
framework = arduino framework = arduino
board = esp01_1m board = esp01_1m
board_flash_mode = dout board_build.flash_mode = dout
; *** Fix espressif8266@1.7.0 induced undesired all warnings ; *** Fix espressif8266@1.7.0 induced undesired all warnings
build_unflags = -Wall build_unflags = -Wall
@ -82,7 +83,7 @@ extra_scripts = pio/strip-floats.py
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -95,7 +96,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DBE_MINIMAL build_flags = ${common.build_flags} -DBE_MINIMAL
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -107,7 +108,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DUSE_CLASSIC build_flags = ${common.build_flags} -DUSE_CLASSIC
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -119,7 +120,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -131,7 +132,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DUSE_ALL_SENSORS build_flags = ${common.build_flags} -DUSE_ALL_SENSORS
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -143,7 +144,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -155,7 +156,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -167,7 +168,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -179,7 +180,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -191,7 +192,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -203,7 +204,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -215,7 +216,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -227,7 +228,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -239,7 +240,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -251,7 +252,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -263,7 +264,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -275,7 +276,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -287,7 +288,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -299,7 +300,7 @@ extra_scripts = ${common.extra_scripts}
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}
@ -307,11 +308,23 @@ upload_speed = ${common.upload_speed}
upload_port = ${common.upload_port} upload_port = ${common.upload_port}
extra_scripts = ${common.extra_scripts} extra_scripts = ${common.extra_scripts}
[env:sonoff-UK]
platform = ${common.platform}
framework = ${common.framework}
board = ${common.board}
board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK
monitor_speed = ${common.monitor_speed}
upload_speed = ${common.upload_speed}
upload_port = ${common.upload_port}
extra_scripts = ${common.extra_scripts}
[env:sonoff-TW] [env:sonoff-TW]
platform = ${common.platform} platform = ${common.platform}
framework = ${common.framework} framework = ${common.framework}
board = ${common.board} board = ${common.board}
board_flash_mode = ${common.board_flash_mode} board_build.flash_mode = ${common.board_build.flash_mode}
build_unflags = ${common.build_unflags} build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW
monitor_speed = ${common.monitor_speed} monitor_speed = ${common.monitor_speed}

View File

@ -1,6 +1,29 @@
/* 5.14.0b /* 5.14.0b
* Added Console Commands to send KNX Commands
usage: KnxTx_Cmnd[slot] command
where [slot] is any of the 5 slots on the KNX Menu and command is 0 or 1
example: KnxTx_Cmnd1 0
* Added Console Commands to send KNX Values
usage: KnxTx_Val[slot] value
where [slot] is any of the 5 slots on the KNX Menu and value is a number
example: KnxTx_Val1 35
* Added Slots on the KNX Web Menu to select Group Addess to send data from console commands
* Added Events to trigger rules when received data from KNX
usage on rules as: event#KnxRx_Val[slot]
where [slot] is any of the 5 slots on the KNX Menu
example: rule on event#KnxRx_Val1 do VAR1 %value% endon
* Added Events to trigger rules when received read requests from KNX
usage on rules as: event#KnxRx_Req[slot]
where [slot] is any of the 5 slots on the KNX Menu
example: rule on event#KnxRx_Req1 do KnxTx_Val1 35 endon
* Added Slots on the KNX Web Menu to select Group Addess to receive data to trigger rules
* Add two rule sets of 511 characters using commands rule1, rule2 and rule3 * Add two rule sets of 511 characters using commands rule1, rule2 and rule3
* Add Ukranian language file
* Add rule support for IrReceive and RfReceive (#2758) * Add rule support for IrReceive and RfReceive (#2758)
* Add command WebSend [<host>(:<port>,<user>:<password>)] <command> (#2821)
* Add source information to command execution to be shown with logging option 3 (#2843)
* Fix some Pow R2 and S31 checksum errors (#1907)
* Fix Hardware Watchdog restart when using event command (#2853)
* *
* 5.14.0a * 5.14.0a
* Add feature information to Status 4 * Add feature information to Status 4

View File

@ -42,6 +42,7 @@
#define D_JSON_BUILDDATETIME "BuildDateTime" #define D_JSON_BUILDDATETIME "BuildDateTime"
#define D_JSON_CO2 "CarbonDioxide" #define D_JSON_CO2 "CarbonDioxide"
#define D_JSON_COMMAND "Command" #define D_JSON_COMMAND "Command"
#define D_JSON_CONNECT_FAILED "Connect failed"
#define D_JSON_COREVERSION "Core" #define D_JSON_COREVERSION "Core"
#define D_JSON_COUNTER "Counter" #define D_JSON_COUNTER "Counter"
#define D_JSON_CURRENT "Current" // As in Voltage and Current #define D_JSON_CURRENT "Current" // As in Voltage and Current
@ -67,6 +68,7 @@
#define D_JSON_GATEWAY "Gateway" #define D_JSON_GATEWAY "Gateway"
#define D_JSON_HEAPSIZE "Heap" #define D_JSON_HEAPSIZE "Heap"
#define D_JSON_HIGH "High" #define D_JSON_HIGH "High"
#define D_JSON_HOST_NOT_FOUND "Host not found"
#define D_JSON_HSBCOLOR "HSBColor" #define D_JSON_HSBCOLOR "HSBColor"
#define D_JSON_HUMIDITY "Humidity" #define D_JSON_HUMIDITY "Humidity"
#define D_JSON_I2CSCAN_DEVICES_FOUND_AT "Device(s) found at" #define D_JSON_I2CSCAN_DEVICES_FOUND_AT "Device(s) found at"
@ -133,6 +135,7 @@
#define D_JSON_VOLTAGE "Voltage" #define D_JSON_VOLTAGE "Voltage"
#define D_JSON_WIFI "Wifi" #define D_JSON_WIFI "Wifi"
#define D_JSON_WRONG "Wrong" #define D_JSON_WRONG "Wrong"
#define D_JSON_WRONG_PARAMETERS "Wrong parameters"
#define D_JSON_YESTERDAY "Yesterday" #define D_JSON_YESTERDAY "Yesterday"
#define D_JSON_ZERO_POINT_CALIBRATION "Zero Point Calibration" #define D_JSON_ZERO_POINT_CALIBRATION "Zero Point Calibration"
@ -213,14 +216,6 @@
#define D_WCFG_5_WAIT "Wait" #define D_WCFG_5_WAIT "Wait"
#define D_CMND_FRIENDLYNAME "FriendlyName" #define D_CMND_FRIENDLYNAME "FriendlyName"
#define D_CMND_SWITCHMODE "SwitchMode" #define D_CMND_SWITCHMODE "SwitchMode"
#define D_CMND_WEBSERVER "Webserver"
#define D_JSON_WEBSERVER_MODE "WebServerMode"
#define D_JSON_ACTIVE_FOR "Active for"
#define D_JSON_ON_DEVICE "on"
#define D_JSON_WITH_IP_ADDRESS "with IP address"
#define D_CMND_WEBPASSWORD "WebPassword"
#define D_CMND_WEBLOG "WebLog"
#define D_CMND_EMULATION "Emulation"
#define D_CMND_TELEPERIOD "TelePeriod" #define D_CMND_TELEPERIOD "TelePeriod"
#define D_CMND_RESTART "Restart" #define D_CMND_RESTART "Restart"
#define D_JSON_ONE_TO_RESTART "1 to restart" #define D_JSON_ONE_TO_RESTART "1 to restart"
@ -238,7 +233,7 @@
#define D_CMND_SERIALDELIMITER "SerialDelimiter" #define D_CMND_SERIALDELIMITER "SerialDelimiter"
#define D_CMND_BAUDRATE "Baudrate" #define D_CMND_BAUDRATE "Baudrate"
// Commands xdrv_00_mqtt.ino // Commands xdrv_01_mqtt.ino
#define D_CMND_MQTTHOST "MqttHost" #define D_CMND_MQTTHOST "MqttHost"
#define D_CMND_MQTTPORT "MqttPort" #define D_CMND_MQTTPORT "MqttPort"
#define D_CMND_MQTTRETRY "MqttRetry" #define D_CMND_MQTTRETRY "MqttRetry"
@ -263,37 +258,16 @@
#define D_CMND_SENSORRETAIN "SensorRetain" #define D_CMND_SENSORRETAIN "SensorRetain"
#define D_CMND_PUBLISH "Publish" #define D_CMND_PUBLISH "Publish"
// Commands xdrv_01_light.ino // Commands xdrv_02_webserver.ino
#define D_CMND_CHANNEL "Channel" #define D_CMND_WEBSERVER "Webserver"
#define D_CMND_COLOR "Color" #define D_JSON_WEBSERVER_MODE "WebServerMode"
#define D_CMND_COLORTEMPERATURE "CT" #define D_JSON_ACTIVE_FOR "Active for"
#define D_CMND_DIMMER "Dimmer" #define D_JSON_ON_DEVICE "on"
#define D_CMND_HSBCOLOR "HSBColor" #define D_JSON_WITH_IP_ADDRESS "with IP address"
#define D_CMND_LED "Led" #define D_CMND_WEBPASSWORD "WebPassword"
#define D_CMND_LEDTABLE "LedTable" #define D_CMND_WEBLOG "WebLog"
#define D_CMND_FADE "Fade" #define D_CMND_WEBSEND "WebSend"
#define D_CMND_PIXELS "Pixels" #define D_CMND_EMULATION "Emulation"
#define D_CMND_ROTATION "Rotation"
#define D_CMND_SCHEME "Scheme"
#define D_CMND_SPEED "Speed"
#define D_CMND_WAKEUP "Wakeup"
#define D_CMND_WAKEUPDURATION "WakeUpDuration"
#define D_CMND_WIDTH "Width"
// Commands xdrv_02_irremote.ino
#define D_CMND_IRSEND "IRSend"
#define D_JSON_INVALID_JSON "Invalid JSON"
#define D_JSON_PROTOCOL_NOT_SUPPORTED "Protocol not supported"
#define D_JSON_IR_PROTOCOL "Protocol"
#define D_JSON_IR_BITS "Bits"
#define D_JSON_IR_DATA "Data"
#define D_CMND_IRHVAC "IRHVAC"
#define D_JSON_IRHVAC_VENDOR "VENDOR"
#define D_JSON_IRHVAC_POWER "POWER"
#define D_JSON_IRHVAC_MODE "MODE"
#define D_JSON_IRHVAC_FANSPEED "FANSPEED"
#define D_JSON_IRHVAC_TEMP "TEMP"
#define D_JSON_IRRECEIVED "IrReceived"
// Commands xdrv_03_energy.ino // Commands xdrv_03_energy.ino
#define D_CMND_POWERLOW "PowerLow" #define D_CMND_POWERLOW "PowerLow"
@ -324,7 +298,39 @@
#define D_JSON_ENERGYMONITOR "EnergyMonitor" #define D_JSON_ENERGYMONITOR "EnergyMonitor"
#define D_JSON_MAXENERGYREACHED "MaxEnergyReached" #define D_JSON_MAXENERGYREACHED "MaxEnergyReached"
// Commands xdrv_04_snfbridge.ino // Commands xdrv_04_light.ino
#define D_CMND_CHANNEL "Channel"
#define D_CMND_COLOR "Color"
#define D_CMND_COLORTEMPERATURE "CT"
#define D_CMND_DIMMER "Dimmer"
#define D_CMND_HSBCOLOR "HSBColor"
#define D_CMND_LED "Led"
#define D_CMND_LEDTABLE "LedTable"
#define D_CMND_FADE "Fade"
#define D_CMND_PIXELS "Pixels"
#define D_CMND_ROTATION "Rotation"
#define D_CMND_SCHEME "Scheme"
#define D_CMND_SPEED "Speed"
#define D_CMND_WAKEUP "Wakeup"
#define D_CMND_WAKEUPDURATION "WakeUpDuration"
#define D_CMND_WIDTH "Width"
// Commands xdrv_05_irremote.ino
#define D_CMND_IRSEND "IRSend"
#define D_JSON_INVALID_JSON "Invalid JSON"
#define D_JSON_PROTOCOL_NOT_SUPPORTED "Protocol not supported"
#define D_JSON_IR_PROTOCOL "Protocol"
#define D_JSON_IR_BITS "Bits"
#define D_JSON_IR_DATA "Data"
#define D_CMND_IRHVAC "IRHVAC"
#define D_JSON_IRHVAC_VENDOR "VENDOR"
#define D_JSON_IRHVAC_POWER "POWER"
#define D_JSON_IRHVAC_MODE "MODE"
#define D_JSON_IRHVAC_FANSPEED "FANSPEED"
#define D_JSON_IRHVAC_TEMP "TEMP"
#define D_JSON_IRRECEIVED "IrReceived"
// Commands xdrv_06_snfbridge.ino
#define D_CMND_RFCODE "RfCode" #define D_CMND_RFCODE "RfCode"
#define D_CMND_RFHIGH "RfHigh" #define D_CMND_RFHIGH "RfHigh"
#define D_CMND_RFHOST "RfHost" #define D_CMND_RFHOST "RfHost"
@ -340,7 +346,7 @@
#define D_CMND_RFSYNC "RfSync" #define D_CMND_RFSYNC "RfSync"
#define D_JSON_RFRECEIVED "RfReceived" #define D_JSON_RFRECEIVED "RfReceived"
// Commands xdrv_05_domoticz.ino // Commands xdrv_07_domoticz.ino
#define D_CMND_DOMOTICZ "Domoticz" #define D_CMND_DOMOTICZ "Domoticz"
#define D_CMND_IDX "Idx" #define D_CMND_IDX "Idx"
#define D_CMND_KEYIDX "KeyIdx" #define D_CMND_KEYIDX "KeyIdx"
@ -348,18 +354,6 @@
#define D_CMND_SENSORIDX "SensorIdx" #define D_CMND_SENSORIDX "SensorIdx"
#define D_CMND_UPDATETIMER "UpdateTimer" #define D_CMND_UPDATETIMER "UpdateTimer"
// Commands xdrv_06_display.ino
#define D_CMND_DISPLAY "Display"
#define D_CMND_DISP_ADDRESS "Address"
#define D_CMND_DISP_COLS "Cols"
#define D_CMND_DISP_DIMMER "Dimmer"
#define D_CMND_DISP_MODE "Mode"
#define D_CMND_DISP_MODEL "Model"
#define D_CMND_DISP_REFRESH "Refresh"
#define D_CMND_DISP_ROWS "Rows"
#define D_CMND_DISP_SIZE "Size"
#define D_CMND_DISP_TEXT "Text"
// Commands xdrv_08_serial_bridge.ino // Commands xdrv_08_serial_bridge.ino
#define D_CMND_SSERIALSEND "SSerialSend" #define D_CMND_SSERIALSEND "SSerialSend"
#define D_CMND_SBAUDRATE "SBaudrate" #define D_CMND_SBAUDRATE "SBaudrate"
@ -380,6 +374,18 @@
#define D_CMND_LATITUDE "Latitude" #define D_CMND_LATITUDE "Latitude"
#define D_CMND_LONGITUDE "Longitude" #define D_CMND_LONGITUDE "Longitude"
// Commands xdrv_98_display.ino
#define D_CMND_DISPLAY "Display"
#define D_CMND_DISP_ADDRESS "Address"
#define D_CMND_DISP_COLS "Cols"
#define D_CMND_DISP_DIMMER "Dimmer"
#define D_CMND_DISP_MODE "Mode"
#define D_CMND_DISP_MODEL "Model"
#define D_CMND_DISP_REFRESH "Refresh"
#define D_CMND_DISP_ROWS "Rows"
#define D_CMND_DISP_SIZE "Size"
#define D_CMND_DISP_TEXT "Text"
/********************************************************************************************/ /********************************************************************************************/
#define D_ASTERIX "********" #define D_ASTERIX "********"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Използване на параметри по подразбиране" #define D_USE_DEFAULTS "Използване на параметри по подразбиране"
#define D_ERASED_SECTOR "Изтрит сектор" #define D_ERASED_SECTOR "Изтрит сектор"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Минимаен фърмуеър - моля надградете го" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Минимаен фърмуеър - моля надградете го"
#define D_WEBSERVER_ACTIVE_ON "Уеб сървърът е активен на" #define D_WEBSERVER_ACTIVE_ON "Уеб сървърът е активен на"
#define D_WITH_IP_ADDRESS "с IP адрес" #define D_WITH_IP_ADDRESS "с IP адрес"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Включете ниво 2 на лога, ако очаквате отговор" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Включете ниво 2 на лога, ако очаквате отговор"
#define D_NEED_USER_AND_PASSWORD "Очаква user=<username>&password=<password>" #define D_NEED_USER_AND_PASSWORD "Очаква user=<username>&password=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Проверка на TLS отпечатък..." #define D_FINGERPRINT "Проверка на TLS отпечатък..."
#define D_TLS_CONNECT_FAILED_TO "Неуспешно TLS свързване към" #define D_TLS_CONNECT_FAILED_TO "Неуспешно TLS свързване към"
#define D_RETRY_IN "Повторно след" #define D_RETRY_IN "Повторно след"
@ -335,7 +335,7 @@
#define D_INSECURE "Нешифрована връзка, недействителен отпечатък" #define D_INSECURE "Нешифрована връзка, недействителен отпечатък"
#define D_CONNECT_FAILED_TO "Грешка при свързването към" #define D_CONNECT_FAILED_TO "Грешка при свързването към"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast е изключен" #define D_MULTICAST_DISABLED "Multicast е изключен"
#define D_MULTICAST_REJOINED "Multicast е повторно съединен" #define D_MULTICAST_REJOINED "Multicast е повторно съединен"
#define D_MULTICAST_JOIN_FAILED "Multicast грешка при присъединяването" #define D_MULTICAST_JOIN_FAILED "Multicast грешка при присъединяването"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST аргументи" #define D_HUE_POST_ARGS "Hue POST аргументи"
#define D_3_RESPONSE_PACKETS_SENT "Изпратени са 3 пакета за отговор" #define D_3_RESPONSE_PACKETS_SENT "Изпратени са 3 пакета за отговор"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz параметри" #define D_DOMOTICZ_PARAMETERS "Domoticz параметри"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "изпратен до" #define D_SENT_TO "изпратен до"
#define D_KNX_WARNING "Груповият адрес ( 0 / 0 / 0 ) е резервиран и не може да бъде използван." #define D_KNX_WARNING "Груповият адрес ( 0 / 0 / 0 ) е резервиран и не може да бъде използван."
#define D_KNX_ENHANCEMENT "Подобрена комуникация" #define D_KNX_ENHANCEMENT "Подобрена комуникация"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Използвана енергия днес" #define D_ENERGY_TODAY "Използвана енергия днес"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Použij defaultní hodnoty" #define D_USE_DEFAULTS "Použij defaultní hodnoty"
#define D_ERASED_SECTOR "Smazaný sektor" #define D_ERASED_SECTOR "Smazaný sektor"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MINIMÁLNÍ - prosím zaktualizujte" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MINIMÁLNÍ - prosím zaktualizujte"
#define D_WEBSERVER_ACTIVE_ON "Aktivní Web server" #define D_WEBSERVER_ACTIVE_ON "Aktivní Web server"
#define D_WITH_IP_ADDRESS "na IP adrese" #define D_WITH_IP_ADDRESS "na IP adrese"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Zapni úroveň 2 zápisu Weblog, pokud je očekávána odpověď" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Zapni úroveň 2 zápisu Weblog, pokud je očekávána odpověď"
#define D_NEED_USER_AND_PASSWORD "Vyžadován uživatel=<username>&heslo=<password>" #define D_NEED_USER_AND_PASSWORD "Vyžadován uživatel=<username>&heslo=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Verifikuj otisk TLS..." #define D_FINGERPRINT "Verifikuj otisk TLS..."
#define D_TLS_CONNECT_FAILED_TO "Nepřipojeno TLS do" #define D_TLS_CONNECT_FAILED_TO "Nepřipojeno TLS do"
#define D_RETRY_IN "Zopakuji za" #define D_RETRY_IN "Zopakuji za"
@ -335,7 +335,7 @@
#define D_INSECURE "Nesprávné připojení z důvodu chybného otisku TLS" #define D_INSECURE "Nesprávné připojení z důvodu chybného otisku TLS"
#define D_CONNECT_FAILED_TO "Spojení se nepodařilo navázat" #define D_CONNECT_FAILED_TO "Spojení se nepodařilo navázat"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast je vypnutý" #define D_MULTICAST_DISABLED "Multicast je vypnutý"
#define D_MULTICAST_REJOINED "Multicast opět připojený" #define D_MULTICAST_REJOINED "Multicast opět připojený"
#define D_MULTICAST_JOIN_FAILED "Multicast neúspěšný" #define D_MULTICAST_JOIN_FAILED "Multicast neúspěšný"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 pakety odpovědi odeslány" #define D_3_RESPONSE_PACKETS_SENT "3 pakety odpovědi odeslány"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Nastavení Domoticz" #define D_DOMOTICZ_PARAMETERS "Nastavení Domoticz"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "pošli" #define D_SENT_TO "pošli"
#define D_KNX_WARNING "Skupinová adresa ( 0 / 0 / 0 ) je rezervována a nemůže být použita." #define D_KNX_WARNING "Skupinová adresa ( 0 / 0 / 0 ) je rezervována a nemůže být použita."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Spotřeba Dnes" #define D_ENERGY_TODAY "Spotřeba Dnes"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Standard verwenden" #define D_USE_DEFAULTS "Standard verwenden"
#define D_ERASED_SECTOR "gelöschter Sektor" #define D_ERASED_SECTOR "gelöschter Sektor"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMUM-Firmware - bitte upgraden" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMUM-Firmware - bitte upgraden"
#define D_WEBSERVER_ACTIVE_ON "Web-Server aktiv bei" #define D_WEBSERVER_ACTIVE_ON "Web-Server aktiv bei"
#define D_WITH_IP_ADDRESS "mit IP-Adresse" #define D_WITH_IP_ADDRESS "mit IP-Adresse"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Aktivere Web Log Level 2 falls Reaktion erwartet" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Aktivere Web Log Level 2 falls Reaktion erwartet"
#define D_NEED_USER_AND_PASSWORD "Benötige user=<Benutzername>&password=<Passwort>" #define D_NEED_USER_AND_PASSWORD "Benötige user=<Benutzername>&password=<Passwort>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "TLS-Fingerabdruck wird verifiziert..." #define D_FINGERPRINT "TLS-Fingerabdruck wird verifiziert..."
#define D_TLS_CONNECT_FAILED_TO "TLS-Verbindung fehlgeschlagen an" #define D_TLS_CONNECT_FAILED_TO "TLS-Verbindung fehlgeschlagen an"
#define D_RETRY_IN "Wiederversuch in" #define D_RETRY_IN "Wiederversuch in"
@ -335,7 +335,7 @@
#define D_INSECURE "unsichere Verbindung aufgrund ungültigen Fingerabdrucks" #define D_INSECURE "unsichere Verbindung aufgrund ungültigen Fingerabdrucks"
#define D_CONNECT_FAILED_TO "Verbindung fehlgeschlagen aufgrund von" #define D_CONNECT_FAILED_TO "Verbindung fehlgeschlagen aufgrund von"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast deaktiviert" #define D_MULTICAST_DISABLED "Multicast deaktiviert"
#define D_MULTICAST_REJOINED "Multicast (wieder-)verbunden" #define D_MULTICAST_REJOINED "Multicast (wieder-)verbunden"
#define D_MULTICAST_JOIN_FAILED "Multicast Verbindung fehlgeschlagen" #define D_MULTICAST_JOIN_FAILED "Multicast Verbindung fehlgeschlagen"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST-Argumente" #define D_HUE_POST_ARGS "Hue POST-Argumente"
#define D_3_RESPONSE_PACKETS_SENT "3 Antwortpakete gesendet" #define D_3_RESPONSE_PACKETS_SENT "3 Antwortpakete gesendet"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz-Parameter" #define D_DOMOTICZ_PARAMETERS "Domoticz-Parameter"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energie heute" #define D_ENERGY_TODAY "Energie heute"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Χρήση προεπιλογών" #define D_USE_DEFAULTS "Χρήση προεπιλογών"
#define D_ERASED_SECTOR "Διαγραμμένος τομέας" #define D_ERASED_SECTOR "Διαγραμμένος τομέας"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - παρακαλώ αναβαθμήστε" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - παρακαλώ αναβαθμήστε"
#define D_WEBSERVER_ACTIVE_ON "Web διακομιστής ενεργός" #define D_WEBSERVER_ACTIVE_ON "Web διακομιστής ενεργός"
#define D_WITH_IP_ADDRESS "με διεύθυνση IP" #define D_WITH_IP_ADDRESS "με διεύθυνση IP"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Ενεργοποιήστε το weblog 2 αν περιμένετε απάντηση" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Ενεργοποιήστε το weblog 2 αν περιμένετε απάντηση"
#define D_NEED_USER_AND_PASSWORD "Χρειάζεστε user=<όνομα χρήστη>&password=<κωδικό χρήστη>" #define D_NEED_USER_AND_PASSWORD "Χρειάζεστε user=<όνομα χρήστη>&password=<κωδικό χρήστη>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Επαλήθευση TLS fingerprint..." #define D_FINGERPRINT "Επαλήθευση TLS fingerprint..."
#define D_TLS_CONNECT_FAILED_TO "Αποτυχία TLS σύνδεσης" #define D_TLS_CONNECT_FAILED_TO "Αποτυχία TLS σύνδεσης"
#define D_RETRY_IN "Επανάληψη σε" #define D_RETRY_IN "Επανάληψη σε"
@ -335,7 +335,7 @@
#define D_INSECURE "Μη ασφαλής σύνδεση λόγο ακατάλληλου Fingerprint" #define D_INSECURE "Μη ασφαλής σύνδεση λόγο ακατάλληλου Fingerprint"
#define D_CONNECT_FAILED_TO "Αποτυχία σύνδεσης στο" #define D_CONNECT_FAILED_TO "Αποτυχία σύνδεσης στο"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast απενεργοποιημένο" #define D_MULTICAST_DISABLED "Multicast απενεργοποιημένο"
#define D_MULTICAST_REJOINED "Multicast επανασύνδεση" #define D_MULTICAST_REJOINED "Multicast επανασύνδεση"
#define D_MULTICAST_JOIN_FAILED "Αποτυχία σύνδεσης Multicast" #define D_MULTICAST_JOIN_FAILED "Αποτυχία σύνδεσης Multicast"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3πλο πακέτο απάντησεης στάλθηκε" #define D_3_RESPONSE_PACKETS_SENT "3πλο πακέτο απάντησεης στάλθηκε"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz παράμετροι" #define D_DOMOTICZ_PARAMETERS "Domoticz παράμετροι"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "αποστολή σε" #define D_SENT_TO "αποστολή σε"
#define D_KNX_WARNING "Η Ομάδα Διευθύνσεων ( 0 / 0 / 0 ) είναι δεσμευμένη και δεν μπορεί να χρησιμοποιηθεί." #define D_KNX_WARNING "Η Ομάδα Διευθύνσεων ( 0 / 0 / 0 ) είναι δεσμευμένη και δεν μπορεί να χρησιμοποιηθεί."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energy Σήμερα" #define D_ENERGY_TODAY "Energy Σήμερα"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v5.14.0a * Updated until v5.14.0b
\*********************************************************************/ \*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Use defaults" #define D_USE_DEFAULTS "Use defaults"
#define D_ERASED_SECTOR "Erased sector" #define D_ERASED_SECTOR "Erased sector"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - please upgrade" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - please upgrade"
#define D_WEBSERVER_ACTIVE_ON "Web server active on" #define D_WEBSERVER_ACTIVE_ON "Web server active on"
#define D_WITH_IP_ADDRESS "with IP address" #define D_WITH_IP_ADDRESS "with IP address"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Enable weblog 2 if response expected" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Enable weblog 2 if response expected"
#define D_NEED_USER_AND_PASSWORD "Need user=<username>&password=<password>" #define D_NEED_USER_AND_PASSWORD "Need user=<username>&password=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Verify TLS fingerprint..." #define D_FINGERPRINT "Verify TLS fingerprint..."
#define D_TLS_CONNECT_FAILED_TO "TLS Connect failed to" #define D_TLS_CONNECT_FAILED_TO "TLS Connect failed to"
#define D_RETRY_IN "Retry in" #define D_RETRY_IN "Retry in"
@ -335,7 +335,7 @@
#define D_INSECURE "Insecure connection due to invalid Fingerprint" #define D_INSECURE "Insecure connection due to invalid Fingerprint"
#define D_CONNECT_FAILED_TO "Connect failed to" #define D_CONNECT_FAILED_TO "Connect failed to"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast disabled" #define D_MULTICAST_DISABLED "Multicast disabled"
#define D_MULTICAST_REJOINED "Multicast (re)joined" #define D_MULTICAST_REJOINED "Multicast (re)joined"
#define D_MULTICAST_JOIN_FAILED "Multicast join failed" #define D_MULTICAST_JOIN_FAILED "Multicast join failed"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 response packets sent" #define D_3_RESPONSE_PACKETS_SENT "3 response packets sent"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz parameters" #define D_DOMOTICZ_PARAMETERS "Domoticz parameters"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energy Today" #define D_ENERGY_TODAY "Energy Today"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v5.14.0a * Updated until v5.14.0b
\*********************************************************************/ \*********************************************************************/
#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Usar valores por defecto" #define D_USE_DEFAULTS "Usar valores por defecto"
#define D_ERASED_SECTOR "Sector borrado" #define D_ERASED_SECTOR "Sector borrado"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MÍNIMO - actualice por favor" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MÍNIMO - actualice por favor"
#define D_WEBSERVER_ACTIVE_ON "Servidor web activo en" #define D_WEBSERVER_ACTIVE_ON "Servidor web activo en"
#define D_WITH_IP_ADDRESS "con dirección IP" #define D_WITH_IP_ADDRESS "con dirección IP"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 si desea respuesta" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 si desea respuesta"
#define D_NEED_USER_AND_PASSWORD "Se necesita user=<username>&password=<password>" #define D_NEED_USER_AND_PASSWORD "Se necesita user=<username>&password=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Verificar TLS fingerprint..." #define D_FINGERPRINT "Verificar TLS fingerprint..."
#define D_TLS_CONNECT_FAILED_TO "Falló Conección TLS a" #define D_TLS_CONNECT_FAILED_TO "Falló Conección TLS a"
#define D_RETRY_IN "Reintentando" #define D_RETRY_IN "Reintentando"
@ -335,7 +335,7 @@
#define D_INSECURE "Conección insegura por Fingerprint no válido" #define D_INSECURE "Conección insegura por Fingerprint no válido"
#define D_CONNECT_FAILED_TO "Falló Conección a" #define D_CONNECT_FAILED_TO "Falló Conección a"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast deshabilitado" #define D_MULTICAST_DISABLED "Multicast deshabilitado"
#define D_MULTICAST_REJOINED "Multicast (re)conectado" #define D_MULTICAST_REJOINED "Multicast (re)conectado"
#define D_MULTICAST_JOIN_FAILED "Conección Multicast fallida" #define D_MULTICAST_JOIN_FAILED "Conección Multicast fallida"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 paquetes de respuesta enviados" #define D_3_RESPONSE_PACKETS_SENT "3 paquetes de respuesta enviados"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Parámetros Domoticz" #define D_DOMOTICZ_PARAMETERS "Parámetros Domoticz"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "enviada a" #define D_SENT_TO "enviada a"
#define D_KNX_WARNING "La dirección de grupo ( 0 / 0 / 0 ) está reservada y no puede ser utilizada." #define D_KNX_WARNING "La dirección de grupo ( 0 / 0 / 0 ) está reservada y no puede ser utilizada."
#define D_KNX_ENHANCEMENT "Mejora de Comunicación" #define D_KNX_ENHANCEMENT "Mejora de Comunicación"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energía Hoy" #define D_ENERGY_TODAY "Energía Hoy"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Utiliser par défaut" #define D_USE_DEFAULTS "Utiliser par défaut"
#define D_ERASED_SECTOR "Secteur effacé" #define D_ERASED_SECTOR "Secteur effacé"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MINIMAL - merci de mettre à jour" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MINIMAL - merci de mettre à jour"
#define D_WEBSERVER_ACTIVE_ON "Serveur web actif sur" #define D_WEBSERVER_ACTIVE_ON "Serveur web actif sur"
#define D_WITH_IP_ADDRESS "avec l'adresse IP" #define D_WITH_IP_ADDRESS "avec l'adresse IP"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Activer Weblog 2 si une réponse est attendue" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Activer Weblog 2 si une réponse est attendue"
#define D_NEED_USER_AND_PASSWORD "Nécessite utilisateur=<username>&password=<password>" #define D_NEED_USER_AND_PASSWORD "Nécessite utilisateur=<username>&password=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Vérification d'empreinte TLS ..." #define D_FINGERPRINT "Vérification d'empreinte TLS ..."
#define D_TLS_CONNECT_FAILED_TO "Échec de connexion TLS à" #define D_TLS_CONNECT_FAILED_TO "Échec de connexion TLS à"
#define D_RETRY_IN "Nouvelle tentative dans" #define D_RETRY_IN "Nouvelle tentative dans"
@ -335,7 +335,7 @@
#define D_INSECURE "Connexion non sécurisée car empreinte non vérifiée" #define D_INSECURE "Connexion non sécurisée car empreinte non vérifiée"
#define D_CONNECT_FAILED_TO "Échec de connexion à" #define D_CONNECT_FAILED_TO "Échec de connexion à"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast désactivé" #define D_MULTICAST_DISABLED "Multicast désactivé"
#define D_MULTICAST_REJOINED "Multicast (re)joint" #define D_MULTICAST_REJOINED "Multicast (re)joint"
#define D_MULTICAST_JOIN_FAILED "Multicast échec abonnement" #define D_MULTICAST_JOIN_FAILED "Multicast échec abonnement"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 paquets de réponse envoyés" #define D_3_RESPONSE_PACKETS_SENT "3 paquets de réponse envoyés"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Paramètres Domoticz" #define D_DOMOTICZ_PARAMETERS "Paramètres Domoticz"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "envoyé à" #define D_SENT_TO "envoyé à"
#define D_KNX_WARNING "L'Adresse de Groupe ( 0 / 0 / 0 ) est réservée et ne peut être utilisée." #define D_KNX_WARNING "L'Adresse de Groupe ( 0 / 0 / 0 ) est réservée et ne peut être utilisée."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xsns_03_energy.ino // xsns_03_energy.ino
#define D_ENERGY_TODAY "Énergie aujourd'hui" #define D_ENERGY_TODAY "Énergie aujourd'hui"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Alapértelmezett beáll. használata" #define D_USE_DEFAULTS "Alapértelmezett beáll. használata"
#define D_ERASED_SECTOR "Szektor törlése" #define D_ERASED_SECTOR "Szektor törlése"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - frissítsd!" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - frissítsd!"
#define D_WEBSERVER_ACTIVE_ON "Web szerver aktív a" #define D_WEBSERVER_ACTIVE_ON "Web szerver aktív a"
#define D_WITH_IP_ADDRESS "IP címe:" #define D_WITH_IP_ADDRESS "IP címe:"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Engedélyezz 2-es weblogolást több információért" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Engedélyezz 2-es weblogolást több információért"
#define D_NEED_USER_AND_PASSWORD "Kell felhasználó=<felhasználónév>&jelszó=<jelszó>" #define D_NEED_USER_AND_PASSWORD "Kell felhasználó=<felhasználónév>&jelszó=<jelszó>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "TLS fingerprint hitelesítése..." #define D_FINGERPRINT "TLS fingerprint hitelesítése..."
#define D_TLS_CONNECT_FAILED_TO "TLS Csatlakozás sikertelen a" #define D_TLS_CONNECT_FAILED_TO "TLS Csatlakozás sikertelen a"
#define D_RETRY_IN "Újrapróbálás" #define D_RETRY_IN "Újrapróbálás"
@ -335,7 +335,7 @@
#define D_INSECURE "Nem biztonságos kapcsolat érvénytelen Fingerprint miatt" #define D_INSECURE "Nem biztonságos kapcsolat érvénytelen Fingerprint miatt"
#define D_CONNECT_FAILED_TO "Sikertelen csatlakozás a" #define D_CONNECT_FAILED_TO "Sikertelen csatlakozás a"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast kikapcsolva" #define D_MULTICAST_DISABLED "Multicast kikapcsolva"
#define D_MULTICAST_REJOINED "Multicast (újra)csatlakozás" #define D_MULTICAST_REJOINED "Multicast (újra)csatlakozás"
#define D_MULTICAST_JOIN_FAILED "Multicast csatlakozás sikertelen" #define D_MULTICAST_JOIN_FAILED "Multicast csatlakozás sikertelen"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 válaszcsomagok elküldve" #define D_3_RESPONSE_PACKETS_SENT "3 válaszcsomagok elküldve"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz paraméterek" #define D_DOMOTICZ_PARAMETERS "Domoticz paraméterek"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Mai Energia" #define D_ENERGY_TODAY "Mai Energia"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Utilizzo valori default" #define D_USE_DEFAULTS "Utilizzo valori default"
#define D_ERASED_SECTOR "Settore cancellato" #define D_ERASED_SECTOR "Settore cancellato"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - effettuare aggiornamento" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - effettuare aggiornamento"
#define D_WEBSERVER_ACTIVE_ON "Web server attivo su" #define D_WEBSERVER_ACTIVE_ON "Web server attivo su"
#define D_WITH_IP_ADDRESS "con indirizzo IP" #define D_WITH_IP_ADDRESS "con indirizzo IP"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Abilitare weblog 2 se è attesa una risposta" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Abilitare weblog 2 se è attesa una risposta"
#define D_NEED_USER_AND_PASSWORD "Richiesto user=<username>&password=<password>" #define D_NEED_USER_AND_PASSWORD "Richiesto user=<username>&password=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Verifica TLS fingerprint..." #define D_FINGERPRINT "Verifica TLS fingerprint..."
#define D_TLS_CONNECT_FAILED_TO "Connessione TLS fallita a" #define D_TLS_CONNECT_FAILED_TO "Connessione TLS fallita a"
#define D_RETRY_IN "Nuovo tentativo in" #define D_RETRY_IN "Nuovo tentativo in"
@ -335,7 +335,7 @@
#define D_INSECURE "Connessione insicura a causa di Fingerprint non valido" #define D_INSECURE "Connessione insicura a causa di Fingerprint non valido"
#define D_CONNECT_FAILED_TO "Connessione Fallita a" #define D_CONNECT_FAILED_TO "Connessione Fallita a"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast disabilitato" #define D_MULTICAST_DISABLED "Multicast disabilitato"
#define D_MULTICAST_REJOINED "Multicast (ri)associato" #define D_MULTICAST_REJOINED "Multicast (ri)associato"
#define D_MULTICAST_JOIN_FAILED "Associazione Multicast fallita" #define D_MULTICAST_JOIN_FAILED "Associazione Multicast fallita"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST argomenti" #define D_HUE_POST_ARGS "Hue POST argomenti"
#define D_3_RESPONSE_PACKETS_SENT "3 pacchetti di risposta inviati" #define D_3_RESPONSE_PACKETS_SENT "3 pacchetti di risposta inviati"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Parametri Domoticz" #define D_DOMOTICZ_PARAMETERS "Parametri Domoticz"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "invia a" #define D_SENT_TO "invia a"
#define D_KNX_WARNING "L'indirizzo del gruppo ( 0 / 0 / 0 ) è riservato e non può essere usato." #define D_KNX_WARNING "L'indirizzo del gruppo ( 0 / 0 / 0 ) è riservato e non può essere usato."
#define D_KNX_ENHANCEMENT "Miglioramento Comunicazione" #define D_KNX_ENHANCEMENT "Miglioramento Comunicazione"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energia Oggi" #define D_ENERGY_TODAY "Energia Oggi"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Gebruik standaardwaarden" #define D_USE_DEFAULTS "Gebruik standaardwaarden"
#define D_ERASED_SECTOR "Wis sector" #define D_ERASED_SECTOR "Wis sector"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - opwaarderen" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMAL firmware - opwaarderen"
#define D_WEBSERVER_ACTIVE_ON "Webserver actief op" #define D_WEBSERVER_ACTIVE_ON "Webserver actief op"
#define D_WITH_IP_ADDRESS "met IP adres" #define D_WITH_IP_ADDRESS "met IP adres"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Schakel weblog 2 in indien antwoord verwacht" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Schakel weblog 2 in indien antwoord verwacht"
#define D_NEED_USER_AND_PASSWORD "Benodig user=<gebruiker>&password=<webwachtwoord>" #define D_NEED_USER_AND_PASSWORD "Benodig user=<gebruiker>&password=<webwachtwoord>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Controleer TLS vingerafdruk..." #define D_FINGERPRINT "Controleer TLS vingerafdruk..."
#define D_TLS_CONNECT_FAILED_TO "TLS Verbinding mislukt naar" #define D_TLS_CONNECT_FAILED_TO "TLS Verbinding mislukt naar"
#define D_RETRY_IN "Opnieuw proberen over" #define D_RETRY_IN "Opnieuw proberen over"
@ -335,7 +335,7 @@
#define D_INSECURE "Door ongeldige vingerafdruk een onveilige verbinding" #define D_INSECURE "Door ongeldige vingerafdruk een onveilige verbinding"
#define D_CONNECT_FAILED_TO "Verbinding mislukt naar" #define D_CONNECT_FAILED_TO "Verbinding mislukt naar"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast uitgeschakeld" #define D_MULTICAST_DISABLED "Multicast uitgeschakeld"
#define D_MULTICAST_REJOINED "Multicast verbonden" #define D_MULTICAST_REJOINED "Multicast verbonden"
#define D_MULTICAST_JOIN_FAILED "Multicast verbinding mislukt" #define D_MULTICAST_JOIN_FAILED "Multicast verbinding mislukt"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST argumenten" #define D_HUE_POST_ARGS "Hue POST argumenten"
#define D_3_RESPONSE_PACKETS_SENT "3 antwoord paketten verstuurd" #define D_3_RESPONSE_PACKETS_SENT "3 antwoord paketten verstuurd"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz parameters" #define D_DOMOTICZ_PARAMETERS "Domoticz parameters"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Toets idx" #define D_DOMOTICZ_KEY_IDX "Toets idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "verzend naar" #define D_SENT_TO "verzend naar"
#define D_KNX_WARNING "Groep adres (0/0/0) is gereserveerd en mag niet worden gebruikt." #define D_KNX_WARNING "Groep adres (0/0/0) is gereserveerd en mag niet worden gebruikt."
#define D_KNX_ENHANCEMENT "Verbeter verbinding" #define D_KNX_ENHANCEMENT "Verbeter verbinding"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Verbruik vandaag" #define D_ENERGY_TODAY "Verbruik vandaag"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Użyj domyślnych" #define D_USE_DEFAULTS "Użyj domyślnych"
#define D_ERASED_SECTOR "Wymazany sektor" #define D_ERASED_SECTOR "Wymazany sektor"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Oprogramowanie MINIMAL - proszę uaktualnić" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Oprogramowanie MINIMAL - proszę uaktualnić"
#define D_WEBSERVER_ACTIVE_ON "Aktywny serwer Web" #define D_WEBSERVER_ACTIVE_ON "Aktywny serwer Web"
#define D_WITH_IP_ADDRESS "z adresem IP" #define D_WITH_IP_ADDRESS "z adresem IP"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Włącz poziom 2 zapisu Weblog, jeśli oczekiwana jest odpowiedź" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Włącz poziom 2 zapisu Weblog, jeśli oczekiwana jest odpowiedź"
#define D_NEED_USER_AND_PASSWORD "Wymagany użytkownik=<username>&hasło=<password>" #define D_NEED_USER_AND_PASSWORD "Wymagany użytkownik=<username>&hasło=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Weryfikuj odcisk TLS..." #define D_FINGERPRINT "Weryfikuj odcisk TLS..."
#define D_TLS_CONNECT_FAILED_TO "Nieudane połączenie TLS do" #define D_TLS_CONNECT_FAILED_TO "Nieudane połączenie TLS do"
#define D_RETRY_IN "Spróbuj ponownie" #define D_RETRY_IN "Spróbuj ponownie"
@ -335,7 +335,7 @@
#define D_INSECURE "Nieprawidłowe połączenie z powodu błędnego odcisku TLS" #define D_INSECURE "Nieprawidłowe połączenie z powodu błędnego odcisku TLS"
#define D_CONNECT_FAILED_TO "Nie udało się nawiązać połączenia" #define D_CONNECT_FAILED_TO "Nie udało się nawiązać połączenia"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast jest wyłączony" #define D_MULTICAST_DISABLED "Multicast jest wyłączony"
#define D_MULTICAST_REJOINED "Multicast (re)dołączony" #define D_MULTICAST_REJOINED "Multicast (re)dołączony"
#define D_MULTICAST_JOIN_FAILED "Multicast nie powiodło się" #define D_MULTICAST_JOIN_FAILED "Multicast nie powiodło się"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 pakiety odpowiedzi wysyłane" #define D_3_RESPONSE_PACKETS_SENT "3 pakiety odpowiedzi wysyłane"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Parametry Domoticz" #define D_DOMOTICZ_PARAMETERS "Parametry Domoticz"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energia Dzisiaj" #define D_ENERGY_TODAY "Energia Dzisiaj"

View File

@ -28,7 +28,7 @@
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele. * Use online command Prefix to translate cmnd, stat and tele.
* *
* Updated until v5.13.0 * Updated until v5.14.0b
\*********************************************************************/ \*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
@ -52,8 +52,8 @@
// Common // Common
#define D_ADMIN "Admin" #define D_ADMIN "Admin"
#define D_AIR_QUALITY "Qualidade do Ar" #define D_AIR_QUALITY "Qualidade do ar"
#define D_AP "Pondo de acesso" // Ponto de Acesso #define D_AP "Ponto de acesso" // Ponto de Acesso
#define D_AS "como" #define D_AS "como"
#define D_AUTO "Auto" #define D_AUTO "Auto"
#define D_BLINK "Pulsar" #define D_BLINK "Pulsar"
@ -64,16 +64,16 @@
#define D_BY "por" // Write by me #define D_BY "por" // Write by me
#define D_BYTES "Bytes" #define D_BYTES "Bytes"
#define D_CELSIUS "Celsius" #define D_CELSIUS "Celsius"
#define D_CO2 "Dióxido de Carbono" #define D_CO2 "Dióxido de carbono"
#define D_CODE "Código" // Button code #define D_CODE "Código" // Button code
#define D_COLDLIGHT "Luz Fria" #define D_COLDLIGHT "Luz fria"
#define D_COMMAND "Comando" #define D_COMMAND "Comando"
#define D_CONNECTED "Ligado" #define D_CONNECTED "Ligado"
#define D_COUNT "Contagem" #define D_COUNT "Contagem"
#define D_COUNTER "Contador" #define D_COUNTER "Contador"
#define D_CURRENT "Corrente" // As in Voltage and Current #define D_CURRENT "Corrente" // As in Voltage and Current
#define D_DATA "Dados" #define D_DATA "Dados"
#define D_DARKLIGHT "Luz Escura" #define D_DARKLIGHT "Luz escura"
#define D_DEBUG "Depurar" #define D_DEBUG "Depurar"
#define D_DISABLED "Desabilitado" #define D_DISABLED "Desabilitado"
#define D_DISTANCE "Distância" #define D_DISTANCE "Distância"
@ -91,8 +91,8 @@
#define D_FALLBACK_TOPIC "Tópico para retornar" #define D_FALLBACK_TOPIC "Tópico para retornar"
#define D_FALSE "Falso" #define D_FALSE "Falso"
#define D_FILE "Arquivo" #define D_FILE "Arquivo"
#define D_FREE_MEMORY "Memória Livre" #define D_FREE_MEMORY "Memória livre"
#define D_FREQUENCY "Frequency" #define D_FREQUENCY "Frequência"
#define D_GAS "Gás" #define D_GAS "Gás"
#define D_GATEWAY "Gateway" #define D_GATEWAY "Gateway"
#define D_GROUP "Grupo" #define D_GROUP "Grupo"
@ -103,7 +103,7 @@
#define D_IMMEDIATE "Imediato" // Button immediate #define D_IMMEDIATE "Imediato" // Button immediate
#define D_INDEX "Índice" #define D_INDEX "Índice"
#define D_INFO "Informação" #define D_INFO "Informação"
#define D_INFRARED "Infrared" #define D_INFRARED "Infravermelho"
#define D_INITIALIZED "Inicializado" #define D_INITIALIZED "Inicializado"
#define D_IP_ADDRESS "Endereço IP" #define D_IP_ADDRESS "Endereço IP"
#define D_LIGHT "Luz" #define D_LIGHT "Luz"
@ -122,9 +122,9 @@
#define D_PORT "Porta" #define D_PORT "Porta"
#define D_POWER_FACTOR "Fator de potência" #define D_POWER_FACTOR "Fator de potência"
#define D_POWERUSAGE "Potência" #define D_POWERUSAGE "Potência"
#define D_POWERUSAGE_ACTIVE "Active Power" #define D_POWERUSAGE_ACTIVE "Potência ativa"
#define D_POWERUSAGE_APPARENT "Apparent Power" #define D_POWERUSAGE_APPARENT "Potência aparente"
#define D_POWERUSAGE_REACTIVE "Reactive Power" #define D_POWERUSAGE_REACTIVE "Potência reativa"
#define D_PRESSURE "Pressão" #define D_PRESSURE "Pressão"
#define D_PRESSUREATSEALEVEL "Pressão ao nível do mar" #define D_PRESSUREATSEALEVEL "Pressão ao nível do mar"
#define D_PROGRAM_FLASH_SIZE "Tamanho do programa na memória" #define D_PROGRAM_FLASH_SIZE "Tamanho do programa na memória"
@ -168,10 +168,10 @@
#define D_WEB_SERVER "Servidor WEB" #define D_WEB_SERVER "Servidor WEB"
// sonoff.ino // sonoff.ino
#define D_WARNING_MINIMAL_VERSION "AVISO esta versão não supporta configurações persistentes" #define D_WARNING_MINIMAL_VERSION "AVISO: esta versão não supporta configurações persistentes"
#define D_LEVEL_10 "nível 1-0" #define D_LEVEL_10 "nível 1-0"
#define D_LEVEL_01 "nível 0-1" #define D_LEVEL_01 "nível 0-1"
#define D_SERIAL_LOGGING_DISABLED "Registro em serie desabilitado" #define D_SERIAL_LOGGING_DISABLED "Registro em série desabilitado"
#define D_SYSLOG_LOGGING_REENABLED "Registro do Syslog reativado" #define D_SYSLOG_LOGGING_REENABLED "Registro do Syslog reativado"
#define D_SET_BAUDRATE_TO "Ajuste da velocidade para" #define D_SET_BAUDRATE_TO "Ajuste da velocidade para"
@ -205,15 +205,15 @@
#define D_USE_DEFAULTS "Usar predefinições" #define D_USE_DEFAULTS "Usar predefinições"
#define D_ERASED_SECTOR "Apagar setores" #define D_ERASED_SECTOR "Apagar setores"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware mínimo - Atualizar por favor" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware mínimo - Atualizar por favor"
#define D_WEBSERVER_ACTIVE_ON "Servidor WEB ativo em" #define D_WEBSERVER_ACTIVE_ON "Servidor WEB ativo em"
#define D_WITH_IP_ADDRESS "com o endereço IP" #define D_WITH_IP_ADDRESS "com o endereço IP"
#define D_WEBSERVER_STOPPED "Servidor WEB parou" #define D_WEBSERVER_STOPPED "Servidor WEB parou"
#define D_FILE_NOT_FOUND "Arquivo não encontrado" #define D_FILE_NOT_FOUND "Arquivo não encontrado"
#define D_REDIRECTED "Redirecionado para o portal ativo" #define D_REDIRECTED "Redirecionado para o portal ativo"
#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager configura o Ponto de Acesso e mantém a estação" #define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager: configura o Ponto de Acesso e a Estação"
#define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager configura o Ponto de Acesso" #define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager: configura o Ponto de Acesso"
#define D_TRYING_TO_CONNECT "Conectar o dispositivo à rede" #define D_TRYING_TO_CONNECT "Conectar o dispositivo à rede"
#define D_RESTART_IN "Reinicia em" #define D_RESTART_IN "Reinicia em"
@ -238,7 +238,7 @@
#define D_RESTORE_CONFIGURATION "Repor configuração" #define D_RESTORE_CONFIGURATION "Repor configuração"
#define D_MAIN_MENU "Menu principal" #define D_MAIN_MENU "Menu principal"
#define D_MODULE_PARAMETERS "Parametros do módulo" #define D_MODULE_PARAMETERS "Parâmetros do módulo"
#define D_MODULE_TYPE "Tipo de módulo" #define D_MODULE_TYPE "Tipo de módulo"
#define D_GPIO "GPIO" #define D_GPIO "GPIO"
#define D_SERIAL_IN "Entrada serial" #define D_SERIAL_IN "Entrada serial"
@ -282,12 +282,12 @@
#define D_SINGLE_DEVICE "Dispositivo único" #define D_SINGLE_DEVICE "Dispositivo único"
#define D_MULTI_DEVICE "Múltiplos dispositivos" #define D_MULTI_DEVICE "Múltiplos dispositivos"
#define D_SAVE_CONFIGURATION "Salvar configuração" #define D_SAVE_CONFIGURATION "Gravar configuração"
#define D_CONFIGURATION_SAVED "Configuração salva" #define D_CONFIGURATION_SAVED "Configuração gravada"
#define D_CONFIGURATION_RESET "Reinicialização da configuração" #define D_CONFIGURATION_RESET "Reinicialização da configuração"
#define D_PROGRAM_VERSION "Versão do programa" #define D_PROGRAM_VERSION "Versão do programa"
#define D_BUILD_DATE_AND_TIME "Data e Hora da construção" #define D_BUILD_DATE_AND_TIME "Data e Hora da compilação"
#define D_CORE_AND_SDK_VERSION "Versão Core/SDK" #define D_CORE_AND_SDK_VERSION "Versão Core/SDK"
#define D_FLASH_WRITE_COUNT "Contagem de gravação flash" #define D_FLASH_WRITE_COUNT "Contagem de gravação flash"
#define D_MAC_ADDRESS "Endereço MAC" #define D_MAC_ADDRESS "Endereço MAC"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 se resposta esperada" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 se resposta esperada"
#define D_NEED_USER_AND_PASSWORD "Necessário user=<nome usuário>&password=<senha>" #define D_NEED_USER_AND_PASSWORD "Necessário user=<nome usuário>&password=<senha>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Verifique a impressão digital TLS..." #define D_FINGERPRINT "Verifique a impressão digital TLS..."
#define D_TLS_CONNECT_FAILED_TO "TLS não conseguiu ligar" #define D_TLS_CONNECT_FAILED_TO "TLS não conseguiu ligar"
#define D_RETRY_IN "Tentativa em" #define D_RETRY_IN "Tentativa em"
@ -335,7 +335,7 @@
#define D_INSECURE "Ligação insegura devido à impressão digital inválida" #define D_INSECURE "Ligação insegura devido à impressão digital inválida"
#define D_CONNECT_FAILED_TO "A ligação falhou ao" #define D_CONNECT_FAILED_TO "A ligação falhou ao"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast desabilitado" #define D_MULTICAST_DISABLED "Multicast desabilitado"
#define D_MULTICAST_REJOINED "Multicast (re)ingressou" #define D_MULTICAST_REJOINED "Multicast (re)ingressou"
#define D_MULTICAST_JOIN_FAILED "Multicast falha no reingresso" #define D_MULTICAST_JOIN_FAILED "Multicast falha no reingresso"
@ -355,15 +355,15 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 pacotes de resposta enviados" #define D_3_RESPONSE_PACKETS_SENT "3 pacotes de resposta enviados"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Parâmetros Domoticz" #define D_DOMOTICZ_PARAMETERS "Parâmetros Domoticz"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Chave idx" #define D_DOMOTICZ_KEY_IDX "Chave idx"
#define D_DOMOTICZ_SWITCH_IDX "Interruptor idx" #define D_DOMOTICZ_SWITCH_IDX "Interruptor idx"
#define D_DOMOTICZ_SENSOR_IDX "Sensor idx" #define D_DOMOTICZ_SENSOR_IDX "Sensor idx"
#define D_DOMOTICZ_TEMP "Temp" #define D_DOMOTICZ_TEMP "Temp"
#define D_DOMOTICZ_TEMP_HUM "Temp,Hum" #define D_DOMOTICZ_TEMP_HUM "Temp,Umi"
#define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Umi,Pres"
#define D_DOMOTICZ_POWER_ENERGY "Potência,Energia" #define D_DOMOTICZ_POWER_ENERGY "Potência,Energia"
#define D_DOMOTICZ_ILLUMINANCE "Luminância" #define D_DOMOTICZ_ILLUMINANCE "Luminância"
#define D_DOMOTICZ_COUNT "Contagem/PM1" #define D_DOMOTICZ_COUNT "Contagem/PM1"
@ -401,7 +401,9 @@
#define D_KNX_COMMAND_OTHER "Outros" #define D_KNX_COMMAND_OTHER "Outros"
#define D_SENT_TO "Enviar para" #define D_SENT_TO "Enviar para"
#define D_KNX_WARNING "O endereço ( 0 / 0 / 0 ) é reservado e não pode ser usado." #define D_KNX_WARNING "O endereço ( 0 / 0 / 0 ) é reservado e não pode ser usado."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Melhoria da comunicação"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Consumo energético de hoje" #define D_ENERGY_TODAY "Consumo energético de hoje"
@ -446,12 +448,12 @@
#define D_SENSOR_PWM "PWM" // Suffix "1" #define D_SENSOR_PWM "PWM" // Suffix "1"
#define D_SENSOR_COUNTER "Contador" // Suffix "1" #define D_SENSOR_COUNTER "Contador" // Suffix "1"
#define D_SENSOR_IRRECV "IRrecv" #define D_SENSOR_IRRECV "IRrecv"
#define D_SENSOR_MHZ_RX "MHZ Rx" #define D_SENSOR_MHZ_RX "MHz Rx"
#define D_SENSOR_MHZ_TX "MHZ Tx" #define D_SENSOR_MHZ_TX "MHz Tx"
#define D_SENSOR_PZEM_RX "PZEM Rx" #define D_SENSOR_PZEM_RX "PZEM Rx"
#define D_SENSOR_PZEM_TX "PZEM Tx" #define D_SENSOR_PZEM_TX "PZEM Tx"
#define D_SENSOR_SAIR_RX "SAir Rx" #define D_SENSOR_SAIR_RX "SAIR Rx"
#define D_SENSOR_SAIR_TX "SAir Tx" #define D_SENSOR_SAIR_TX "SAIR Tx"
#define D_SENSOR_SPI_CS "SPI CS" #define D_SENSOR_SPI_CS "SPI CS"
#define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_SPI_DC "SPI DC"
#define D_SENSOR_BACKLIGHT "Luz de fundo" #define D_SENSOR_BACKLIGHT "Luz de fundo"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Usar predefinições" #define D_USE_DEFAULTS "Usar predefinições"
#define D_ERASED_SECTOR "Apagar setores" #define D_ERASED_SECTOR "Apagar setores"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMO firmware - Atualizar Por favor" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "MINIMO firmware - Atualizar Por favor"
#define D_WEBSERVER_ACTIVE_ON "Servidor WEB ativo em" #define D_WEBSERVER_ACTIVE_ON "Servidor WEB ativo em"
#define D_WITH_IP_ADDRESS "com o endereço IP" #define D_WITH_IP_ADDRESS "com o endereço IP"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 se resposta esperada" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 se resposta esperada"
#define D_NEED_USER_AND_PASSWORD "Necessário user=<nome utilizador>&password=<palavra chave>" #define D_NEED_USER_AND_PASSWORD "Necessário user=<nome utilizador>&password=<palavra chave>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Verifique a impressão digital TLS..." #define D_FINGERPRINT "Verifique a impressão digital TLS..."
#define D_TLS_CONNECT_FAILED_TO "TLS não conseguiu ligar" #define D_TLS_CONNECT_FAILED_TO "TLS não conseguiu ligar"
#define D_RETRY_IN "Tentativa em" #define D_RETRY_IN "Tentativa em"
@ -335,7 +335,7 @@
#define D_INSECURE "Ligação insegura devido à impressão digital inválida" #define D_INSECURE "Ligação insegura devido à impressão digital inválida"
#define D_CONNECT_FAILED_TO "A ligação falhou ao" #define D_CONNECT_FAILED_TO "A ligação falhou ao"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast desabilitado" #define D_MULTICAST_DISABLED "Multicast desabilitado"
#define D_MULTICAST_REJOINED "Multicast (re)ingressou" #define D_MULTICAST_REJOINED "Multicast (re)ingressou"
#define D_MULTICAST_JOIN_FAILED "Multicast falha no reingresso" #define D_MULTICAST_JOIN_FAILED "Multicast falha no reingresso"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 pacotes de resposta enviados" #define D_3_RESPONSE_PACKETS_SENT "3 pacotes de resposta enviados"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Parametros Domoticz" #define D_DOMOTICZ_PARAMETERS "Parametros Domoticz"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Chave idx" #define D_DOMOTICZ_KEY_IDX "Chave idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Consumo energético de hoje" #define D_ENERGY_TODAY "Consumo energético de hoje"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "Использовать значение по умолчанию" #define D_USE_DEFAULTS "Использовать значение по умолчанию"
#define D_ERASED_SECTOR "Стереть сектор" #define D_ERASED_SECTOR "Стереть сектор"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Прошивка MINIMAL - пожалуйста обновите" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Прошивка MINIMAL - пожалуйста обновите"
#define D_WEBSERVER_ACTIVE_ON "Веб-сервер активен" #define D_WEBSERVER_ACTIVE_ON "Веб-сервер активен"
#define D_WITH_IP_ADDRESS "с IP-адресом" #define D_WITH_IP_ADDRESS "с IP-адресом"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Включить Веб лог уровня 2 если ожидается ответ" #define D_ENABLE_WEBLOG_FOR_RESPONSE "Включить Веб лог уровня 2 если ожидается ответ"
#define D_NEED_USER_AND_PASSWORD "Ожидается user=<username>&password=<password>" #define D_NEED_USER_AND_PASSWORD "Ожидается user=<username>&password=<password>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "Проверка TLS Fingerprint..." #define D_FINGERPRINT "Проверка TLS Fingerprint..."
#define D_TLS_CONNECT_FAILED_TO "Сбой подключения TLS к" #define D_TLS_CONNECT_FAILED_TO "Сбой подключения TLS к"
#define D_RETRY_IN "Повторить" #define D_RETRY_IN "Повторить"
@ -335,7 +335,7 @@
#define D_INSECURE "Небезопасное соединение, недействительный Fingerprint" #define D_INSECURE "Небезопасное соединение, недействительный Fingerprint"
#define D_CONNECT_FAILED_TO "Ошибка подключения к" #define D_CONNECT_FAILED_TO "Ошибка подключения к"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast отключен" #define D_MULTICAST_DISABLED "Multicast отключен"
#define D_MULTICAST_REJOINED "Multicast (ре)соединился" #define D_MULTICAST_REJOINED "Multicast (ре)соединился"
#define D_MULTICAST_JOIN_FAILED "Multicast ошибка соединения" #define D_MULTICAST_JOIN_FAILED "Multicast ошибка соединения"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST args" #define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 ответных пакета получено" #define D_3_RESPONSE_PACKETS_SENT "3 ответных пакета получено"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz parameters" #define D_DOMOTICZ_PARAMETERS "Domoticz parameters"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Энергия Сегодня" #define D_ENERGY_TODAY "Энергия Сегодня"

522
sonoff/language/uk-UK.h Normal file
View File

@ -0,0 +1,522 @@
/*
uk-UK.h - localization for Ukrainian - Ukrain for Sonoff-Tasmota
Copyright (C) 2018 Theo Arends / vadym-adik
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _LANGUAGE_UK_UK_H_
#define _LANGUAGE_UK_UK_H_
/*************************** ATTENTION *******************************\
*
* Due to memory constraints only UTF-8 is supported.
* To save code space keep text as short as possible.
* Time and Date provided by SDK can not be localized (yet).
* Use online command StateText to translate ON, OFF, HOLD and TOGGLE.
* Use online command Prefix to translate cmnd, stat and tele.
*
* Updated until v5.14.0a
\*********************************************************************/
//#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English)
#define LANGUAGE_LCID 1058
// HTML (ISO 639-1) Language Code
#define D_HTML_LANGUAGE "uk"
// "2017-03-07T11:08:02" - ISO8601:2004
#define D_YEAR_MONTH_SEPARATOR "-"
#define D_MONTH_DAY_SEPARATOR "-"
#define D_DATE_TIME_SEPARATOR "T"
#define D_HOUR_MINUTE_SEPARATOR ":"
#define D_MINUTE_SECOND_SEPARATOR ":"
#define D_DAY3LIST "НедПонВівСерЧетПятСуб"
#define D_MONTH3LIST "СічЛютБерКвіТраЧерЛипВерЖовЛисГру"
// Non JSON decimal separator
#define D_DECIMAL_SEPARATOR ","
// Common
#define D_ADMIN "Admin"
#define D_AIR_QUALITY "Якість повітря"
#define D_AP "AP" // Access Point
#define D_AS "як"
#define D_AUTO "АВТО"
#define D_BLINK "Блимати"
#define D_BLINKOFF "Не блимати"
#define D_BOOT_COUNT "Кіл-сть завант."
#define D_BRIGHTLIGHT "Яскравість"
#define D_BUTTON "Кнопка"
#define D_BY "by" // Written by me
#define D_BYTES "Байт"
#define D_CELSIUS "Цельсія"
#define D_CO2 "Вуглек. газ"
#define D_CODE "код" // Button code
#define D_COLDLIGHT "Холодний"
#define D_COMMAND "Команда"
#define D_CONNECTED "Під'єднано"
#define D_COUNT "Підрахунок"
#define D_COUNTER "Лічильник"
#define D_CURRENT "Струм" // As in Voltage and Current
#define D_DATA "Дані"
#define D_DARKLIGHT "Темний"
#define D_DEBUG "Налагодження"
#define D_DISABLED "Заблоковано"
#define D_DISTANCE "Дистанція"
#define D_DNS_SERVER "DNS Сервер"
#define D_DONE "Виконано"
#define D_DST_TIME "Літній час"
#define D_ECO2 "eCO2"
#define D_EMULATION "Емуляція"
#define D_ENABLED "Активно"
#define D_ERASE "Стирати"
#define D_ERROR "Помилка"
#define D_FAHRENHEIT "Фаренгейт"
#define D_FAILED "Невдало"
#define D_FALLBACK "Зворотній зв'язок"
#define D_FALLBACK_TOPIC "Топік зворотнього зв'язку"
#define D_FALSE "Помилково"
#define D_FILE "Файл"
#define D_FREE_MEMORY "Вільна память"
#define D_FREQUENCY "Частота"
#define D_GAS "Газ"
#define D_GATEWAY "Шлюз"
#define D_GROUP "Група"
#define D_HOST "Хост"
#define D_HOSTNAME "Ім'я Хосту"
#define D_HUMIDITY "Вологість"
#define D_ILLUMINANCE "Освітленність"
#define D_IMMEDIATE "негайно" // Button immediate
#define D_INDEX "Індекс"
#define D_INFO "Інфо"
#define D_INFRARED "Інфрачервоний"
#define D_INITIALIZED "Ініціалізовано"
#define D_IP_ADDRESS "IP Адрес"
#define D_LIGHT "Світло"
#define D_LWT "LWT"
#define D_MODULE "Модуль"
#define D_MQTT "MQTT"
#define D_MULTI_PRESS "багаторазове натискання"
#define D_NOISE "Шум"
#define D_NONE "Ні"
#define D_OFF "Вимк."
#define D_OFFLINE "Офф-лайн"
#define D_OK "Ок"
#define D_ON "Увімк."
#define D_ONLINE "Он-лайн"
#define D_PASSWORD "Гасло"
#define D_PORT "Порт"
#define D_POWER_FACTOR "Коефіцієнт потужності"
#define D_POWERUSAGE "Потужність"
#define D_POWERUSAGE_ACTIVE "Активна потужність"
#define D_POWERUSAGE_APPARENT "Дійсна потужність"
#define D_POWERUSAGE_REACTIVE "Реактивна потужність"
#define D_PRESSURE "Тиск"
#define D_PRESSUREATSEALEVEL "Тиск на рівні моря"
#define D_PROGRAM_FLASH_SIZE "Розмір Flash для програм"
#define D_PROGRAM_SIZE "Розмір програм "
#define D_PROJECT "Проект"
#define D_RECEIVED "Отримано"
#define D_RESTART "Перезавантаження"
#define D_RESTARTING "Перезавантаження"
#define D_RESTART_REASON "Причина перезавантаження"
#define D_RESTORE "відновлення"
#define D_RETAINED "нерозподілений"
#define D_RULE "Правило"
#define D_SAVE "Зберегти"
#define D_SENSOR "Датчик"
#define D_SSID "SSID"
#define D_START "Старт"
#define D_STD_TIME "STD"
#define D_STOP "Стоп"
#define D_SUBNET_MASK "Маска Підмережі"
#define D_SUBSCRIBE_TO "Підписатись на"
#define D_SUCCESSFUL "Успішно"
#define D_SUNRISE "Схід сонця"
#define D_SUNSET "Захід сонця"
#define D_TEMPERATURE "Температура"
#define D_TO "до"
#define D_TOGGLE "Перекл."
#define D_TOPIC "Топік"
#define D_TRANSMIT "Передати"
#define D_TRUE "Істина"
#define D_TVOC "TVOC"
#define D_UPGRADE "оновлення"
#define D_UPLOAD "Завантажити"
#define D_UPTIME "Час роботи"
#define D_USER "Користувач"
#define D_UTC_TIME "UTC"
#define D_UV_INDEX "УФ індекс"
#define D_UV_LEVEL "УФ рівень"
#define D_VERSION "Версія"
#define D_VOLTAGE "Напруга"
#define D_WARMLIGHT "Тепло"
#define D_WEB_SERVER "Web сервер"
// sonoff.ino
#define D_WARNING_MINIMAL_VERSION "ПОПЕРЕДЖЕННЯ! Ця версія не підтримує персистентні налаштування"
#define D_LEVEL_10 "рівень 1-0"
#define D_LEVEL_01 "рівень 0-1"
#define D_SERIAL_LOGGING_DISABLED "Serial logging вимкнений"
#define D_SYSLOG_LOGGING_REENABLED "Syslog logging увімкнений"
#define D_SET_BAUDRATE_TO "Встановити швидкість передачі (Baudrate)"
#define D_RECEIVED_TOPIC "Отриманий Топік"
#define D_DATA_SIZE "Розмір даних"
#define D_ANALOG_INPUT "Аналоговий вхід"
// support.ino
#define D_OSWATCH "osWatch"
#define D_BLOCKED_LOOP "Блокуючий цикл"
#define D_WPS_FAILED_WITH_STATUS "WPS конфігурація з статусом НЕВДАЛА"
#define D_ACTIVE_FOR_3_MINUTES "активний протягом 3 хвилин"
#define D_FAILED_TO_START "не вдалось запустити"
#define D_PATCH_ISSUE_2186 "Проблема з виправленням 2186"
#define D_CONNECTING_TO_AP "Підключення до AP"
#define D_IN_MODE "в режимі"
#define D_CONNECT_FAILED_NO_IP_ADDRESS "Помилка підключення, IP-адрес не отриманий"
#define D_CONNECT_FAILED_AP_NOT_REACHED "Помилка з'єднання, AP не запущений"
#define D_CONNECT_FAILED_WRONG_PASSWORD "Помилка з'єднання, невірне гасло до AP"
#define D_CONNECT_FAILED_AP_TIMEOUT "Помилка з'єднання з AP по тайм-ауту"
#define D_ATTEMPTING_CONNECTION "Спроба підключення..."
#define D_CHECKING_CONNECTION "Перевірка з'єднання..."
#define D_QUERY_DONE "Запит виконаний. Виявлено служби MQTT"
#define D_MQTT_SERVICE_FOUND "MQTT сервіс знайдено"
#define D_FOUND_AT "знайдено в"
#define D_SYSLOG_HOST_NOT_FOUND "System лог хост не знайдено"
// settings.ino
#define D_SAVED_TO_FLASH_AT "Збережено в флэш-пам'ять"
#define D_LOADED_FROM_FLASH_AT "Завантажено з флэш-пам'яті"
#define D_USE_DEFAULTS "Використовувати значення за замовчуванням"
#define D_ERASED_SECTOR "Стерти сектор"
// xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Прошивка MINIMAL - будь-ласка оновіть"
#define D_WEBSERVER_ACTIVE_ON "Веб-сервер активний"
#define D_WITH_IP_ADDRESS "з IP-адресом"
#define D_WEBSERVER_STOPPED "Веб-сервер зупинений"
#define D_FILE_NOT_FOUND "Файл не знайдений"
#define D_REDIRECTED "Перенаправлено на адаптивний портал"
#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifi менеджер встановлює Точку Доступу і зберігає параметри"
#define D_WIFIMANAGER_SET_ACCESSPOINT "Wifi менеджер встановив Точку Доступу"
#define D_TRYING_TO_CONNECT "Спроба підключення пристрою до мережі"
#define D_RESTART_IN "Перезавантаження"
#define D_SECONDS "секунд"
#define D_DEVICE_WILL_RESTART "Пристрій буде перезавантажено через декілька секунд"
#define D_BUTTON_TOGGLE "Переключити"
#define D_CONFIGURATION "Конфігурація"
#define D_INFORMATION "Інформація"
#define D_FIRMWARE_UPGRADE "Оновлення прошивки"
#define D_CONSOLE "Консоль"
#define D_CONFIRM_RESTART "Підтвердити перезавантаження"
#define D_CONFIGURE_MODULE "Конфігурація модуля"
#define D_CONFIGURE_WIFI "Конфігурація WiFi"
#define D_CONFIGURE_MQTT "Конфігурація MQTT"
#define D_CONFIGURE_DOMOTICZ "Конфігурація Domoticz"
#define D_CONFIGURE_LOGGING "Конфігурація Логів"
#define D_CONFIGURE_OTHER "Конфігурація інше"
#define D_CONFIRM_RESET_CONFIGURATION "Підтвердити скидання конфігурації"
#define D_RESET_CONFIGURATION "Скидання конфігурації"
#define D_BACKUP_CONFIGURATION "Резервне копіювання конфігурації"
#define D_RESTORE_CONFIGURATION "Відновлення конфігурації"
#define D_MAIN_MENU "Головне меню"
#define D_MODULE_PARAMETERS "Параметри модулю"
#define D_MODULE_TYPE "Тип модулю"
#define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial вхід"
#define D_SERIAL_OUT "Serial вихід"
#define D_WIFI_PARAMETERS "Параметри Wifi"
#define D_SCAN_FOR_WIFI_NETWORKS "Сканування беспроводових мереж Wifi"
#define D_SCAN_DONE "Сканування завершене"
#define D_NO_NETWORKS_FOUND "Не знайдено мереж"
#define D_REFRESH_TO_SCAN_AGAIN "Оновити для повторного сканування"
#define D_DUPLICATE_ACCESSPOINT "Дублювати Точку Доступу (AP)"
#define D_SKIPPING_LOW_QUALITY "Пропущено через низьку якість"
#define D_RSSI "RSSI"
#define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK"
#define D_WPA2_PSK "WPA2 PSK"
#define D_AP1_SSID "AP1 SSID"
#define D_AP1_PASSWORD "AP1 Гасло"
#define D_AP2_SSID "AP2 SSID"
#define D_AP2_PASSWORD "AP2 Гасло"
#define D_MQTT_PARAMETERS "Параметри MQTT"
#define D_CLIENT "Клієнт"
#define D_FULL_TOPIC "Повний Топік"
#define D_LOGGING_PARAMETERS "Параметри логів"
#define D_SERIAL_LOG_LEVEL "Serial лог рівень"
#define D_WEB_LOG_LEVEL "Web лог рівень"
#define D_SYS_LOG_LEVEL "System лог рівень"
#define D_MORE_DEBUG "Додаткова інформація для налагодження"
#define D_SYSLOG_HOST "System лог хост"
#define D_SYSLOG_PORT "System лог порт"
#define D_TELEMETRY_PERIOD "Період телеметрії"
#define D_OTHER_PARAMETERS "Параметри Інше"
#define D_WEB_ADMIN_PASSWORD "Гасло Web адміністратора"
#define D_MQTT_ENABLE "MQTT активний"
#define D_FRIENDLY_NAME "Дружнє Ім'я"
#define D_BELKIN_WEMO "Belkin WeMo"
#define D_HUE_BRIDGE "Hue Bridge"
#define D_SINGLE_DEVICE "одиночне"
#define D_MULTI_DEVICE "мульти"
#define D_SAVE_CONFIGURATION "Зберегти конфігурацію"
#define D_CONFIGURATION_SAVED "Конфігурація збережена "
#define D_CONFIGURATION_RESET "Конфігурація скинута"
#define D_PROGRAM_VERSION "Версія програми"
#define D_BUILD_DATE_AND_TIME "Дата & Час збірки"
#define D_CORE_AND_SDK_VERSION "Версія Core/SDK"
#define D_FLASH_WRITE_COUNT "Кіл-ть записів Flash"
#define D_MAC_ADDRESS "MAC Адрес"
#define D_MQTT_HOST "MQTT Хост"
#define D_MQTT_PORT "MQTT Порт"
#define D_MQTT_CLIENT "MQTT Клієнт ID"
#define D_MQTT_USER "MQTT Користувач"
#define D_MQTT_TOPIC "MQTT Топік"
#define D_MQTT_GROUP_TOPIC "MQTT Топік групи"
#define D_MQTT_FULL_TOPIC "MQTT Топік повний"
#define D_MDNS_DISCOVERY "mDNS Виявлення"
#define D_MDNS_ADVERTISE "mDNS Транcляція"
#define D_ESP_CHIP_ID "ID чипу ESP"
#define D_FLASH_CHIP_ID "ID чипу Flash пам'яті"
#define D_FLASH_CHIP_SIZE "Розмір Flash пам'яті"
#define D_FREE_PROGRAM_SPACE "Вільний простір програм"
#define D_UPGRADE_BY_WEBSERVER "Оновлення через Веб-сервер"
#define D_OTA_URL "OTA Url"
#define D_START_UPGRADE "Почати оновлення"
#define D_UPGRADE_BY_FILE_UPLOAD "Оновлення шляхом завантаження файлів"
#define D_UPLOAD_STARTED "Завантаження почалось"
#define D_UPGRADE_STARTED "Оновлення почалось"
#define D_UPLOAD_DONE "Завантаження завершено"
#define D_UPLOAD_ERR_1 "Файл не вибраний"
#define D_UPLOAD_ERR_2 "Недостатньо місця"
#define D_UPLOAD_ERR_3 "Magic байт не 0xE9"
#define D_UPLOAD_ERR_4 "Размір прошивки більше, чим реальний размір флеш пам'яті"
#define D_UPLOAD_ERR_5 "Помилка завантаження буферу"
#define D_UPLOAD_ERR_6 "Помилка завантаження. Увімкнено лог рівень 3"
#define D_UPLOAD_ERR_7 "Завантаження перервано"
#define D_UPLOAD_ERR_8 "Файл невірний"
#define D_UPLOAD_ERR_9 "Занадто великий файл"
#define D_UPLOAD_ERROR_CODE "Код помилки завантаження"
#define D_ENTER_COMMAND "Уведіть команду"
#define D_ENABLE_WEBLOG_FOR_RESPONSE "Увімкніть Веб лог рівня 2 якщо очікуєте відповідь"
#define D_NEED_USER_AND_PASSWORD "Очікується user=<username>&password=<password>"
// xdrv_01_mqtt.ino
#define D_FINGERPRINT "Перевірка TLS відбитка..."
#define D_TLS_CONNECT_FAILED_TO "Збій підключення TLS до"
#define D_RETRY_IN "Повторити"
#define D_VERIFIED "Перевірено відбиток"
#define D_INSECURE "Небезпечне з'єднання, недійсний відбиток "
#define D_CONNECT_FAILED_TO "Помилка підключення до"
// xplg_wemohue.ino
#define D_MULTICAST_DISABLED "Multicast вимкнений"
#define D_MULTICAST_REJOINED "Multicast (пере)під'єднався"
#define D_MULTICAST_JOIN_FAILED "Multicast помилка з'єднання"
#define D_FAILED_TO_SEND_RESPONSE "Не вдалось відправити відповідь"
#define D_WEMO "WeMo"
#define D_WEMO_BASIC_EVENT "WeMo основна подія"
#define D_WEMO_EVENT_SERVICE "WeMo служба подій"
#define D_WEMO_META_SERVICE "WeMo мета-сервіс"
#define D_WEMO_SETUP "WeMo налаштування"
#define D_RESPONSE_SENT "Відповідь відправлена"
#define D_HUE "Hue"
#define D_HUE_BRIDGE_SETUP "Hue налаштування"
#define D_HUE_API_NOT_IMPLEMENTED "Hue API не реалізовано"
#define D_HUE_API "Hue API"
#define D_HUE_POST_ARGS "Hue POST args"
#define D_3_RESPONSE_PACKETS_SENT "3 пакету відповіді отримано"
// xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz налаштування"
#define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Ключ idx"
#define D_DOMOTICZ_SWITCH_IDX "Перемикач idx"
#define D_DOMOTICZ_SENSOR_IDX "Датчик idx"
#define D_DOMOTICZ_TEMP "Температура"
#define D_DOMOTICZ_TEMP_HUM "Темп,Волог"
#define D_DOMOTICZ_TEMP_HUM_BARO "Темп,Волог,Тиск"
#define D_DOMOTICZ_POWER_ENERGY "Потуж,Енергія"
#define D_DOMOTICZ_ILLUMINANCE "Освітлення"
#define D_DOMOTICZ_COUNT "Лічильник/PM1"
#define D_DOMOTICZ_VOLTAGE "Напруга/PM2,5"
#define D_DOMOTICZ_CURRENT "Струм/PM10"
#define D_DOMOTICZ_AIRQUALITY "Якість повітря"
#define D_DOMOTICZ_UPDATE_TIMER "Оновлення таймерів"
// xdrv_09_timers.ino
#define D_CONFIGURE_TIMER "Конфігурація таймеру"
#define D_TIMER_PARAMETERS "Налаштування таймеру"
#define D_TIMER_ARM "Увімкнений"
#define D_TIMER_TIME "Час"
#define D_TIMER_DAYS "Дні"
#define D_TIMER_REPEAT "Повтор"
#define D_TIMER_OUTPUT "Вихід"
#define D_TIMER_ACTION "Дія"
// xdrv_10_knx.ino
#define D_CONFIGURE_KNX "Конфігурація KNX"
#define D_KNX_PARAMETERS "Налаштування KNX"
#define D_KNX_GENERAL_CONFIG "Основні"
#define D_KNX_PHYSICAL_ADDRESS "Фізична адреса"
#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Має бути унікальним у мережі KNX)"
#define D_KNX_ENABLE "Увімкнений KNX"
#define D_KNX_GROUP_ADDRESS_TO_WRITE "Дані для запису групових адрес"
#define D_ADD "Додати"
#define D_DELETE "Видалити"
#define D_REPLY "Повторити"
#define D_KNX_GROUP_ADDRESS_TO_READ "Дані для читання групових адрес"
#define D_LOG_KNX "KNX: "
#define D_RECEIVED_FROM "Отримати з"
#define D_KNX_COMMAND_WRITE "Записати"
#define D_KNX_COMMAND_READ "Читати"
#define D_KNX_COMMAND_OTHER "Інше"
#define D_SENT_TO "надіслати до"
#define D_KNX_WARNING "Адреса групи (0/0/0) зарезервована і не може бути використана."
#define D_KNX_ENHANCEMENT "Підвищення зв'язку"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino
#define D_ENERGY_TODAY "Енергія Сьогодні"
#define D_ENERGY_YESTERDAY "Енергія Вчора"
#define D_ENERGY_TOTAL "Енергія Всього"
// xsns_05_ds18b20.ino
#define D_SENSOR_BUSY "Датчик DS18x20 занятий"
#define D_SENSOR_CRC_ERROR "Датчик DS18x20 - помилка CRC"
#define D_SENSORS_FOUND "Датчик DS18x20 знайдено"
// xsns_06_dht.ino
#define D_TIMEOUT_WAITING_FOR "Тайм-аут, в очікуванні"
#define D_START_SIGNAL_LOW "стартовий сигнал низький"
#define D_START_SIGNAL_HIGH "стартовий сигнал високий"
#define D_PULSE "імпульс"
#define D_CHECKSUM_FAILURE "Помилка контрольної суми"
// xsns_07_sht1x.ino
#define D_SENSOR_DID_NOT_ACK_COMMAND "Датчик не отримав команду ACK"
#define D_SHT1X_FOUND "SHT1X знайдено"
// xsns_18_pms5003.ino
#define D_STANDARD_CONCENTRATION "CF-1 PM" // Standard Particle CF-1 Particle Matter
#define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter
#define D_PARTICALS_BEYOND "Через Частини"
// sonoff_template.h
#define D_SENSOR_NONE "-відсутньо-"
#define D_SENSOR_DHT11 "DHT11"
#define D_SENSOR_AM2301 "AM2301"
#define D_SENSOR_SI7021 "SI7021"
#define D_SENSOR_DS18X20 "DS18x20"
#define D_SENSOR_I2C_SCL "I2C SCL"
#define D_SENSOR_I2C_SDA "I2C SDA"
#define D_SENSOR_WS2812 "WS2812"
#define D_SENSOR_IRSEND "IRsend"
#define D_SENSOR_SWITCH "Перемикач" // Suffix "1"
#define D_SENSOR_BUTTON "Кнопка" // Suffix "1"
#define D_SENSOR_RELAY "Реле" // Suffix "1i"
#define D_SENSOR_LED "Led" // Suffix "1i"
#define D_SENSOR_PWM "PWM" // Suffix "1"
#define D_SENSOR_COUNTER "Лічильник" // Suffix "1"
#define D_SENSOR_IRRECV "IRrecv"
#define D_SENSOR_MHZ_RX "MHZ Rx"
#define D_SENSOR_MHZ_TX "MHZ Tx"
#define D_SENSOR_PZEM_RX "PZEM Rx"
#define D_SENSOR_PZEM_TX "PZEM Tx"
#define D_SENSOR_SAIR_RX "SAir Rx"
#define D_SENSOR_SAIR_TX "SAir Tx"
#define D_SENSOR_SPI_CS "SPI CS"
#define D_SENSOR_SPI_DC "SPI DC"
#define D_SENSOR_BACKLIGHT "BkLight"
#define D_SENSOR_PMS5003 "PMS5003"
#define D_SENSOR_SDS0X1 "SDS0X1"
#define D_SENSOR_SBR_RX "SerBr Rx"
#define D_SENSOR_SBR_TX "SerBr Tx"
#define D_SENSOR_SR04_TRIG "SR04 Tri"
#define D_SENSOR_SR04_ECHO "SR04 Ech"
#define D_SENSOR_SDM120_TX "SDM120 Tx"
#define D_SENSOR_SDM120_RX "SDM120 Rx"
#define D_SENSOR_SDM630_TX "SDM630 Tx"
#define D_SENSOR_SDM630_RX "SDM630 Rx"
// Units
#define D_UNIT_AMPERE "А"
#define D_UNIT_CENTIMETER "cм"
#define D_UNIT_HERTZ "Гц"
#define D_UNIT_HOUR "Г"
#define D_UNIT_KILOOHM "кОм"
#define D_UNIT_KILOWATTHOUR "кВт"
#define D_UNIT_LUX "лк"
#define D_UNIT_MICROGRAM_PER_CUBIC_METER "мкг/м3"
#define D_UNIT_MICROMETER "мкм"
#define D_UNIT_MICROSECOND "мкс"
#define D_UNIT_MILLIAMPERE "мА"
#define D_UNIT_MILLISECOND "мс"
#define D_UNIT_MINUTE "хв"
#define D_UNIT_PARTS_PER_BILLION "ppb"
#define D_UNIT_PARTS_PER_DECILITER "ppd"
#define D_UNIT_PARTS_PER_MILLION "ppm"
#define D_UNIT_PRESSURE "гПа"
#define D_UNIT_SECOND "сек"
#define D_UNIT_SECTORS "секторів"
#define D_UNIT_VA "ВA"
#define D_UNIT_VAR "VAr"
#define D_UNIT_VOLT "В"
#define D_UNIT_WATT "Вт"
#define D_UNIT_WATTHOUR "ВтГод"
// Log message prefix
#define D_LOG_APPLICATION "APP: " // Application
#define D_LOG_BRIDGE "BRG: " // Bridge
#define D_LOG_CONFIG "CFG: " // Settings
#define D_LOG_COMMAND "CMD: " // Command
#define D_LOG_DEBUG "DBG: " // Debug
#define D_LOG_DHT "DHT: " // DHT sensor
#define D_LOG_DOMOTICZ "DOM: " // Domoticz
#define D_LOG_DSB "DSB: " // DS18xB20 sensor
#define D_LOG_HTTP "HTP: " // HTTP webserver
#define D_LOG_I2C "I2C: " // I2C
#define D_LOG_IRR "IRR: " // Infra Red Received
#define D_LOG_LOG "LOG: " // Logging
#define D_LOG_MODULE "MOD: " // Module
#define D_LOG_MDNS "DNS: " // mDNS
#define D_LOG_MQTT "MQT: " // MQTT
#define D_LOG_OTHER "OTH: " // Other
#define D_LOG_RESULT "RSL: " // Result
#define D_LOG_RFR "RFR: " // RF Received
#define D_LOG_SERIAL "SER: " // Serial
#define D_LOG_SHT1 "SHT: " // SHT1x sensor
#define D_LOG_UPLOAD "UPL: " // Upload
#define D_LOG_UPNP "UPP: " // UPnP
#define D_LOG_WIFI "WIF: " // Wifi
#endif // _LANGUAGE_UK_UK_H_

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "使用默认设置" #define D_USE_DEFAULTS "使用默认设置"
#define D_ERASED_SECTOR "擦除删除" #define D_ERASED_SECTOR "擦除删除"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "固件版本过低 - 请升级" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "固件版本过低 - 请升级"
#define D_WEBSERVER_ACTIVE_ON "Web服务器:" #define D_WEBSERVER_ACTIVE_ON "Web服务器:"
#define D_WITH_IP_ADDRESS "IP地址:" #define D_WITH_IP_ADDRESS "IP地址:"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "如果预期响应则启用Weblog 2" #define D_ENABLE_WEBLOG_FOR_RESPONSE "如果预期响应则启用Weblog 2"
#define D_NEED_USER_AND_PASSWORD "需要 user=<用户名>&password=<密码>" #define D_NEED_USER_AND_PASSWORD "需要 user=<用户名>&password=<密码>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "验证 TLS 指纹..." #define D_FINGERPRINT "验证 TLS 指纹..."
#define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" #define D_TLS_CONNECT_FAILED_TO "TLS 连接失败"
#define D_RETRY_IN "重试倒计时:" #define D_RETRY_IN "重试倒计时:"
@ -335,7 +335,7 @@
#define D_INSECURE "指纹无效导致连接不安全" #define D_INSECURE "指纹无效导致连接不安全"
#define D_CONNECT_FAILED_TO "连接失败:" #define D_CONNECT_FAILED_TO "连接失败:"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "组播已禁用" #define D_MULTICAST_DISABLED "组播已禁用"
#define D_MULTICAST_REJOINED "组播已(重新)加入" #define D_MULTICAST_REJOINED "组播已(重新)加入"
#define D_MULTICAST_JOIN_FAILED "组播加入失败" #define D_MULTICAST_JOIN_FAILED "组播加入失败"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST 参数" #define D_HUE_POST_ARGS "Hue POST 参数"
#define D_3_RESPONSE_PACKETS_SENT "3 请求包发送" #define D_3_RESPONSE_PACKETS_SENT "3 请求包发送"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz 设置" #define D_DOMOTICZ_PARAMETERS "Domoticz 设置"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "今日用电量" #define D_ENERGY_TODAY "今日用电量"

View File

@ -205,7 +205,7 @@
#define D_USE_DEFAULTS "使用默認設置" #define D_USE_DEFAULTS "使用默認設置"
#define D_ERASED_SECTOR "擦除刪除" #define D_ERASED_SECTOR "擦除刪除"
// webserver.ino // xdrv_02_webserver.ino
#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "固件版本過低 - 請升級" #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "固件版本過低 - 請升級"
#define D_WEBSERVER_ACTIVE_ON "Web服務器:" #define D_WEBSERVER_ACTIVE_ON "Web服務器:"
#define D_WITH_IP_ADDRESS "IP地址:" #define D_WITH_IP_ADDRESS "IP地址:"
@ -327,7 +327,7 @@
#define D_ENABLE_WEBLOG_FOR_RESPONSE "如果預期響應則啟用Weblog 2" #define D_ENABLE_WEBLOG_FOR_RESPONSE "如果預期響應則啟用Weblog 2"
#define D_NEED_USER_AND_PASSWORD "需要 user=<用戶名>&password=<密碼>" #define D_NEED_USER_AND_PASSWORD "需要 user=<用戶名>&password=<密碼>"
// xdrv_00_mqtt.ino // xdrv_01_mqtt.ino
#define D_FINGERPRINT "驗證 TLS 指紋..." #define D_FINGERPRINT "驗證 TLS 指紋..."
#define D_TLS_CONNECT_FAILED_TO "TLS 連接失敗" #define D_TLS_CONNECT_FAILED_TO "TLS 連接失敗"
#define D_RETRY_IN "重試倒計時:" #define D_RETRY_IN "重試倒計時:"
@ -335,7 +335,7 @@
#define D_INSECURE "指紋無效導致連接不安全" #define D_INSECURE "指紋無效導致連接不安全"
#define D_CONNECT_FAILED_TO "連接失敗:" #define D_CONNECT_FAILED_TO "連接失敗:"
// xdrv_wemohue.ino // xplg_wemohue.ino
#define D_MULTICAST_DISABLED "組播已禁用" #define D_MULTICAST_DISABLED "組播已禁用"
#define D_MULTICAST_REJOINED "組播已(重新)加入" #define D_MULTICAST_REJOINED "組播已(重新)加入"
#define D_MULTICAST_JOIN_FAILED "組播加入失敗" #define D_MULTICAST_JOIN_FAILED "組播加入失敗"
@ -355,7 +355,7 @@
#define D_HUE_POST_ARGS "Hue POST 參數" #define D_HUE_POST_ARGS "Hue POST 參數"
#define D_3_RESPONSE_PACKETS_SENT "3 請求包發送" #define D_3_RESPONSE_PACKETS_SENT "3 請求包發送"
// xdrv_05_domoticz.ino // xdrv_07_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz 設置" #define D_DOMOTICZ_PARAMETERS "Domoticz 設置"
#define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_IDX "Idx"
#define D_DOMOTICZ_KEY_IDX "Key idx" #define D_DOMOTICZ_KEY_IDX "Key idx"
@ -402,6 +402,8 @@
#define D_SENT_TO "sent to" #define D_SENT_TO "sent to"
#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used."
#define D_KNX_ENHANCEMENT "Communication Enhancement" #define D_KNX_ENHANCEMENT "Communication Enhancement"
#define D_KNX_TX_SLOT "KNX TX"
#define D_KNX_RX_SLOT "KNX RX"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "今日用電量" #define D_ENERGY_TODAY "今日用電量"

View File

@ -137,7 +137,7 @@ typedef unsigned long power_t; // Power (Relay) type
#define DAWN_NAUTIC -12.0 #define DAWN_NAUTIC -12.0
#define DAWN_ASTRONOMIC -18.0 #define DAWN_ASTRONOMIC -18.0
// Sensor definition for KNX Driver // Sensor and Commands definition for KNX Driver
#define KNX_TEMPERATURE 17 #define KNX_TEMPERATURE 17
#define KNX_HUMIDITY 18 #define KNX_HUMIDITY 18
#define KNX_ENERGY_VOLTAGE 19 #define KNX_ENERGY_VOLTAGE 19
@ -147,7 +147,13 @@ typedef unsigned long power_t; // Power (Relay) type
#define KNX_ENERGY_DAILY 23 #define KNX_ENERGY_DAILY 23
#define KNX_ENERGY_START 24 #define KNX_ENERGY_START 24
#define KNX_ENERGY_TOTAL 25 #define KNX_ENERGY_TOTAL 25
#define KNX_MAX_device_param 25 #define KNX_SLOT1 26
#define KNX_SLOT2 27
#define KNX_SLOT3 28
#define KNX_SLOT4 29
#define KNX_SLOT5 30
#define KNX_MAX_device_param 30
#define MAX_KNXTX_CMNDS 5
/*********************************************************************************************\ /*********************************************************************************************\
* Enumeration * Enumeration
@ -192,6 +198,10 @@ enum XsnsFunctions {FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_SECO
const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 };
enum CommandSource { SRC_IGNORE, SRC_MQTT, SRC_RESTART, SRC_BUTTON, SRC_SWITCH, SRC_BACKLOG, SRC_SERIAL, SRC_WEBGUI, SRC_WEBCOMMAND, SRC_WEBCONSOLE, SRC_PULSETIMER,
SRC_TIMER, SRC_RULE, SRC_MAXPOWER, SRC_MAXENERGY, SRC_LIGHT, SRC_KNX, SRC_DISPLAY, SRC_WEMO, SRC_HUE, SRC_MAX };
const char kCommandSource[] PROGMEM = "I|MQTT|Restart|Button|Switch|Backlog|Serial|WebGui|WebCommand|WebConsole|PulseTimer|Timer|Rule|MaxPower|MaxEnergy|Light|Knx|Display|Wemo|Hue";
/*********************************************************************************************\ /*********************************************************************************************\
* Extern global variables * Extern global variables
\*********************************************************************************************/ \*********************************************************************************************/

View File

@ -82,7 +82,7 @@ enum TasmotaCommands {
CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE, CMND_GPIO, CMND_GPIOS, CMND_PWM, CMND_PWMFREQUENCY, CMND_PWMRANGE, CMND_COUNTER, CMND_COUNTERTYPE,
CMND_COUNTERDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG, CMND_COUNTERDEBOUNCE, CMND_SLEEP, CMND_UPGRADE, CMND_UPLOAD, CMND_OTAURL, CMND_SERIALLOG, CMND_SYSLOG,
CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME, CMND_LOGHOST, CMND_LOGPORT, CMND_IPADDRESS, CMND_NTPSERVER, CMND_AP, CMND_SSID, CMND_PASSWORD, CMND_HOSTNAME,
CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE, CMND_WEBSERVER, CMND_WEBPASSWORD, CMND_WEBLOG, CMND_EMULATION, CMND_WIFICONFIG, CMND_FRIENDLYNAME, CMND_SWITCHMODE,
CMND_TELEPERIOD, CMND_RESTART, CMND_RESET, CMND_TIMEZONE, CMND_TIMESTD, CMND_TIMEDST, CMND_ALTITUDE, CMND_LEDPOWER, CMND_LEDSTATE, CMND_TELEPERIOD, CMND_RESTART, CMND_RESET, CMND_TIMEZONE, CMND_TIMESTD, CMND_TIMEDST, CMND_ALTITUDE, CMND_LEDPOWER, CMND_LEDSTATE,
CMND_I2CSCAN, CMND_SERIALSEND, CMND_BAUDRATE, CMND_SERIALDELIMITER }; CMND_I2CSCAN, CMND_SERIALSEND, CMND_BAUDRATE, CMND_SERIALDELIMITER };
const char kTasmotaCommands[] PROGMEM = const char kTasmotaCommands[] PROGMEM =
@ -92,7 +92,7 @@ const char kTasmotaCommands[] PROGMEM =
D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|" D_CMND_GPIO "|" D_CMND_GPIOS "|" D_CMND_PWM "|" D_CMND_PWMFREQUENCY "|" D_CMND_PWMRANGE "|" D_CMND_COUNTER "|" D_CMND_COUNTERTYPE "|"
D_CMND_COUNTERDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|" D_CMND_COUNTERDEBOUNCE "|" D_CMND_SLEEP "|" D_CMND_UPGRADE "|" D_CMND_UPLOAD "|" D_CMND_OTAURL "|" D_CMND_SERIALLOG "|" D_CMND_SYSLOG "|"
D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|" D_CMND_LOGHOST "|" D_CMND_LOGPORT "|" D_CMND_IPADDRESS "|" D_CMND_NTPSERVER "|" D_CMND_AP "|" D_CMND_SSID "|" D_CMND_PASSWORD "|" D_CMND_HOSTNAME "|"
D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_WEBSERVER "|" D_CMND_WEBPASSWORD "|" D_CMND_WEBLOG "|" D_CMND_EMULATION "|" D_CMND_WIFICONFIG "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|"
D_CMND_TELEPERIOD "|" D_CMND_RESTART "|" D_CMND_RESET "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_TELEPERIOD "|" D_CMND_RESTART "|" D_CMND_RESET "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|" D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|"
D_CMND_I2CSCAN "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER; D_CMND_I2CSCAN "|" D_CMND_SERIALSEND "|" D_CMND_BAUDRATE "|" D_CMND_SERIALDELIMITER;
@ -304,10 +304,12 @@ void SetLatchingRelay(power_t power, uint8_t state)
} }
} }
void SetDevicePower(power_t rpower) void SetDevicePower(power_t rpower, int source)
{ {
uint8_t state; uint8_t state;
ShowSource(source);
if (POWER_ALL_ALWAYS_ON == Settings.poweronstate) { // All on and stay on if (POWER_ALL_ALWAYS_ON == Settings.poweronstate) { // All on and stay on
power = (1 << devices_present) -1; power = (1 << devices_present) -1;
rpower = power; rpower = power;
@ -396,6 +398,8 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
memcpy(dataBuf, data +i, sizeof(dataBuf)); memcpy(dataBuf, data +i, sizeof(dataBuf));
dataBuf[sizeof(dataBuf)-1] = 0; dataBuf[sizeof(dataBuf)-1] = 0;
if (topicBuf[0] != '/') { ShowSource(SRC_MQTT); }
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_RESULT D_RECEIVED_TOPIC " %s, " D_DATA_SIZE " %d, " D_DATA " %s"), snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_RESULT D_RECEIVED_TOPIC " %s, " D_DATA_SIZE " %d, " D_DATA " %s"),
topicBuf, data_len, dataBuf); topicBuf, data_len, dataBuf);
AddLog(LOG_LEVEL_DEBUG_MORE); AddLog(LOG_LEVEL_DEBUG_MORE);
@ -490,7 +494,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
else if ((CMND_POWER == command_code) && (index > 0) && (index <= devices_present)) { else if ((CMND_POWER == command_code) && (index > 0) && (index <= devices_present)) {
if ((payload < 0) || (payload > 4)) payload = 9; if ((payload < 0) || (payload > 4)) payload = 9;
// Settings.flag.device_index_enable = user_append_index; // Settings.flag.device_index_enable = user_append_index;
ExecuteCommandPower(index, payload); ExecuteCommandPower(index, payload, SRC_IGNORE);
fallback_topic_flag = 0; fallback_topic_flag = 0;
return; return;
} }
@ -516,7 +520,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
Settings.poweronstate = payload; Settings.poweronstate = payload;
if (POWER_ALL_ALWAYS_ON == Settings.poweronstate) { if (POWER_ALL_ALWAYS_ON == Settings.poweronstate) {
for (byte i = 1; i <= devices_present; i++) { for (byte i = 1; i <= devices_present; i++) {
ExecuteCommandPower(i, POWER_ON); ExecuteCommandPower(i, POWER_ON, SRC_IGNORE);
} }
} }
} }
@ -980,38 +984,6 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
if ((payload >= 0) && (payload < MAX_SWITCH_OPTION)) Settings.switchmode[index -1] = payload; if ((payload >= 0) && (payload < MAX_SWITCH_OPTION)) Settings.switchmode[index -1] = payload;
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, index, Settings.switchmode[index-1]); snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, index, Settings.switchmode[index-1]);
} }
#ifdef USE_WEBSERVER
else if (CMND_WEBSERVER == command_code) {
if ((payload >= 0) && (payload <= 2)) Settings.webserver = payload;
if (Settings.webserver) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WEBSERVER "\":\"" D_JSON_ACTIVE_FOR " %s " D_JSON_ON_DEVICE " %s " D_JSON_WITH_IP_ADDRESS " %s\"}"),
(2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str());
} else {
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(0));
}
}
else if (CMND_WEBPASSWORD == command_code) {
if ((data_len > 0) && (data_len < sizeof(Settings.web_password))) {
strlcpy(Settings.web_password, (!strcmp(dataBuf,"0")) ? "" : (1 == payload) ? WEB_PASSWORD : dataBuf, sizeof(Settings.web_password));
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.web_password);
} else {
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_ASTERIX, command);
}
}
else if (CMND_WEBLOG == command_code) {
if ((payload >= LOG_LEVEL_NONE) && (payload <= LOG_LEVEL_ALL)) Settings.weblog_level = payload;
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.weblog_level);
}
#ifdef USE_EMULATION
else if (CMND_EMULATION == command_code) {
if ((payload >= EMUL_NONE) && (payload < EMUL_MAX)) {
Settings.flag2.emulation = payload;
restart_flag = 2;
}
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.emulation);
}
#endif // USE_EMULATION
#endif // USE_WEBSERVER
else if (CMND_TELEPERIOD == command_code) { else if (CMND_TELEPERIOD == command_code) {
if ((payload >= 0) && (payload < 3601)) { if ((payload >= 0) && (payload < 3601)) {
Settings.tele_period = (1 == payload) ? TELE_PERIOD : payload; Settings.tele_period = (1 == payload) ? TELE_PERIOD : payload;
@ -1187,7 +1159,7 @@ boolean SendKey(byte key, byte device, byte state)
return result; return result;
} }
void ExecuteCommandPower(byte device, byte state) void ExecuteCommandPower(byte device, byte state, int source)
{ {
// device = Relay number 1 and up // device = Relay number 1 and up
// state 0 = Relay Off // state 0 = Relay Off
@ -1199,6 +1171,8 @@ void ExecuteCommandPower(byte device, byte state)
// state 7 = Relay On and no publishPowerState // state 7 = Relay On and no publishPowerState
// state 9 = Show power state // state 9 = Show power state
// ShowSource(source);
uint8_t publish_power = 1; uint8_t publish_power = 1;
if ((POWER_OFF_NO_STATE == state) || (POWER_ON_NO_STATE == state)) { if ((POWER_OFF_NO_STATE == state) || (POWER_ON_NO_STATE == state)) {
state &= 1; state &= 1;
@ -1216,7 +1190,7 @@ void ExecuteCommandPower(byte device, byte state)
interlock_mutex = 1; interlock_mutex = 1;
for (byte i = 0; i < devices_present; i++) { for (byte i = 0; i < devices_present; i++) {
power_t imask = 1 << i; power_t imask = 1 << i;
if ((power & imask) && (mask != imask)) ExecuteCommandPower(i +1, POWER_OFF); if ((power & imask) && (mask != imask)) ExecuteCommandPower(i +1, POWER_OFF, SRC_IGNORE);
} }
interlock_mutex = 0; interlock_mutex = 0;
} }
@ -1230,7 +1204,7 @@ void ExecuteCommandPower(byte device, byte state)
case POWER_TOGGLE: case POWER_TOGGLE:
power ^= mask; power ^= mask;
} }
SetDevicePower(power); SetDevicePower(power, source);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzUpdatePowerState(device); DomoticzUpdatePowerState(device);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
@ -1257,7 +1231,7 @@ void ExecuteCommandPower(byte device, byte state)
byte flag = (blink_mask & mask); byte flag = (blink_mask & mask);
blink_mask &= (POWER_MASK ^ mask); // Clear device mask blink_mask &= (POWER_MASK ^ mask); // Clear device mask
MqttPublishPowerBlinkState(device); MqttPublishPowerBlinkState(device);
if (flag) ExecuteCommandPower(device, (blink_powersave >> (device -1))&1); // Restore state if (flag) ExecuteCommandPower(device, (blink_powersave >> (device -1))&1, SRC_IGNORE); // Restore state
return; return;
} }
if (publish_power) MqttPublishPowerState(device); if (publish_power) MqttPublishPowerState(device);
@ -1272,18 +1246,20 @@ void StopAllPowerBlink()
if (blink_mask & mask) { if (blink_mask & mask) {
blink_mask &= (POWER_MASK ^ mask); // Clear device mask blink_mask &= (POWER_MASK ^ mask); // Clear device mask
MqttPublishPowerBlinkState(i); MqttPublishPowerBlinkState(i);
ExecuteCommandPower(i, (blink_powersave >> (i -1))&1); // Restore state ExecuteCommandPower(i, (blink_powersave >> (i -1))&1, SRC_IGNORE); // Restore state
} }
} }
} }
void ExecuteCommand(char *cmnd) void ExecuteCommand(char *cmnd, int source)
{ {
char stopic[CMDSZ]; char stopic[CMDSZ];
char svalue[INPUT_BUFFER_SIZE]; char svalue[INPUT_BUFFER_SIZE];
char *start; char *start;
char *token; char *token;
ShowSource(source);
token = strtok(cmnd, " "); token = strtok(cmnd, " ");
if (token != NULL) { if (token != NULL) {
start = strrchr(token, '/'); // Skip possible cmnd/sonoff/ preamble start = strrchr(token, '/'); // Skip possible cmnd/sonoff/ preamble
@ -1582,7 +1558,7 @@ void ButtonHandler()
} }
if (button_pressed) { if (button_pressed) {
if (!SendKey(0, button_index +1, POWER_TOGGLE)) { // Execute Toggle command via MQTT if ButtonTopic is set if (!SendKey(0, button_index +1, POWER_TOGGLE)) { // Execute Toggle command via MQTT if ButtonTopic is set
ExecuteCommandPower(button_index +1, POWER_TOGGLE); // Execute Toggle command internally ExecuteCommandPower(button_index +1, POWER_TOGGLE, SRC_BUTTON); // Execute Toggle command internally
} }
} }
} else { } else {
@ -1591,7 +1567,7 @@ void ButtonHandler()
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_IMMEDIATE), button_index +1); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_BUTTON "%d " D_IMMEDIATE), button_index +1);
AddLog(LOG_LEVEL_DEBUG); AddLog(LOG_LEVEL_DEBUG);
if (!SendKey(0, button_index +1, POWER_TOGGLE)) { // Execute Toggle command via MQTT if ButtonTopic is set if (!SendKey(0, button_index +1, POWER_TOGGLE)) { // Execute Toggle command via MQTT if ButtonTopic is set
ExecuteCommandPower(button_index +1, POWER_TOGGLE); // Execute Toggle command internally ExecuteCommandPower(button_index +1, POWER_TOGGLE, SRC_BUTTON); // Execute Toggle command internally
} }
} else { } else {
multipress[button_index] = (multiwindow[button_index]) ? multipress[button_index] +1 : 1; multipress[button_index] = (multiwindow[button_index]) ? multipress[button_index] +1 : 1;
@ -1610,7 +1586,7 @@ void ButtonHandler()
if (holdbutton[button_index] == Settings.param[P_HOLD_TIME] * (STATES / 10) * hold_time_extent) { // Button held for factor times longer if (holdbutton[button_index] == Settings.param[P_HOLD_TIME] * (STATES / 10) * hold_time_extent) { // Button held for factor times longer
// Settings.flag.button_single = 0; // Settings.flag.button_single = 0;
snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_SETOPTION "13 0")); // Disable single press only snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_SETOPTION "13 0")); // Disable single press only
ExecuteCommand(scmnd); ExecuteCommand(scmnd, SRC_BUTTON);
} }
} else { } else {
if (Settings.flag.button_restrict) { // Button restriction if (Settings.flag.button_restrict) { // Button restriction
@ -1622,7 +1598,7 @@ void ButtonHandler()
if (holdbutton[button_index] == (Settings.param[P_HOLD_TIME] * (STATES / 10)) * hold_time_extent) { // Button held for factor times longer if (holdbutton[button_index] == (Settings.param[P_HOLD_TIME] * (STATES / 10)) * hold_time_extent) { // Button held for factor times longer
multipress[button_index] = 0; multipress[button_index] = 0;
snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_RESET " 1")); snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_RESET " 1"));
ExecuteCommand(scmnd); ExecuteCommand(scmnd, SRC_BUTTON);
} }
} }
} }
@ -1649,12 +1625,12 @@ void ButtonHandler()
if (WifiState()) { // WPSconfig, Smartconfig or Wifimanager active if (WifiState()) { // WPSconfig, Smartconfig or Wifimanager active
restart_flag = 1; restart_flag = 1;
} else { } else {
ExecuteCommandPower(button_index + multipress[button_index], POWER_TOGGLE); // Execute Toggle command internally ExecuteCommandPower(button_index + multipress[button_index], POWER_TOGGLE, SRC_BUTTON); // Execute Toggle command internally
} }
} else { // 3 - 7 press } else { // 3 - 7 press
if (!Settings.flag.button_restrict) { if (!Settings.flag.button_restrict) {
snprintf_P(scmnd, sizeof(scmnd), kCommands[multipress[button_index] -3]); snprintf_P(scmnd, sizeof(scmnd), kCommands[multipress[button_index] -3]);
ExecuteCommand(scmnd); ExecuteCommand(scmnd, SRC_BUTTON);
} }
} }
} }
@ -1737,7 +1713,7 @@ void SwitchHandler()
if (switchflag < 3) { if (switchflag < 3) {
if (!SendKey(1, i +1, switchflag)) { // Execute command via MQTT if (!SendKey(1, i +1, switchflag)) { // Execute command via MQTT
ExecuteCommandPower(i +1, switchflag); // Execute command internally (if i < devices_present) ExecuteCommandPower(i +1, switchflag, SRC_SWITCH); // Execute command internally (if i < devices_present)
} }
} }
@ -1784,8 +1760,8 @@ void StateLoop()
if ((pulse_timer[i] > 0) && (pulse_timer[i] < 112)) { if ((pulse_timer[i] > 0) && (pulse_timer[i] < 112)) {
pulse_timer[i]--; pulse_timer[i]--;
if (!pulse_timer[i]) { if (!pulse_timer[i]) {
// ExecuteCommandPower(i +1, POWER_OFF); // ExecuteCommandPower(i +1, POWER_OFF, SRC_PULSETIMER);
ExecuteCommandPower(i +1, (POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? POWER_ON : POWER_OFF); ExecuteCommandPower(i +1, (POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? POWER_ON : POWER_OFF, SRC_PULSETIMER);
} }
} }
} }
@ -1800,7 +1776,7 @@ void StateLoop()
} else { } else {
blink_power ^= 1; blink_power ^= 1;
power_now = (power & (POWER_MASK ^ blink_mask)) | ((blink_power) ? blink_mask : 0); power_now = (power & (POWER_MASK ^ blink_mask)) | ((blink_power) ? blink_mask : 0);
SetDevicePower(power_now); SetDevicePower(power_now, SRC_IGNORE);
} }
} }
} }
@ -1809,7 +1785,7 @@ void StateLoop()
if (backlog_delay) backlog_delay--; if (backlog_delay) backlog_delay--;
if ((backlog_pointer != backlog_index) && !backlog_delay && !backlog_mutex) { if ((backlog_pointer != backlog_index) && !backlog_delay && !backlog_mutex) {
backlog_mutex = 1; backlog_mutex = 1;
ExecuteCommand((char*)backlog[backlog_pointer].c_str()); ExecuteCommand((char*)backlog[backlog_pointer].c_str(), SRC_BACKLOG);
backlog_mutex = 0; backlog_mutex = 0;
backlog_pointer++; backlog_pointer++;
if (backlog_pointer >= MAX_BACKLOG) backlog_pointer = 0; if (backlog_pointer >= MAX_BACKLOG) backlog_pointer = 0;
@ -2154,7 +2130,7 @@ void SerialInput()
seriallog_level = (Settings.seriallog_level < LOG_LEVEL_INFO) ? (byte)LOG_LEVEL_INFO : Settings.seriallog_level; seriallog_level = (Settings.seriallog_level < LOG_LEVEL_INFO) ? (byte)LOG_LEVEL_INFO : Settings.seriallog_level;
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_COMMAND "%s"), serial_in_buffer); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_COMMAND "%s"), serial_in_buffer);
AddLog(LOG_LEVEL_INFO); AddLog(LOG_LEVEL_INFO);
ExecuteCommand(serial_in_buffer); ExecuteCommand(serial_in_buffer, SRC_SERIAL);
serial_in_byte_counter = 0; serial_in_byte_counter = 0;
serial_polling_window = 0; serial_polling_window = 0;
Serial.flush(); Serial.flush();
@ -2411,36 +2387,36 @@ void setup()
if (MOTOR == Settings.module) Settings.poweronstate = POWER_ALL_ON; // Needs always on else in limbo! if (MOTOR == Settings.module) Settings.poweronstate = POWER_ALL_ON; // Needs always on else in limbo!
if (POWER_ALL_ALWAYS_ON == Settings.poweronstate) { if (POWER_ALL_ALWAYS_ON == Settings.poweronstate) {
SetDevicePower(1); SetDevicePower(1, SRC_RESTART);
} else { } else {
if ((resetInfo.reason == REASON_DEFAULT_RST) || (resetInfo.reason == REASON_EXT_SYS_RST)) { if ((resetInfo.reason == REASON_DEFAULT_RST) || (resetInfo.reason == REASON_EXT_SYS_RST)) {
switch (Settings.poweronstate) { switch (Settings.poweronstate) {
case POWER_ALL_OFF: case POWER_ALL_OFF:
case POWER_ALL_OFF_PULSETIME_ON: case POWER_ALL_OFF_PULSETIME_ON:
power = 0; power = 0;
SetDevicePower(power); SetDevicePower(power, SRC_RESTART);
break; break;
case POWER_ALL_ON: // All on case POWER_ALL_ON: // All on
power = (1 << devices_present) -1; power = (1 << devices_present) -1;
SetDevicePower(power); SetDevicePower(power, SRC_RESTART);
break; break;
case POWER_ALL_SAVED_TOGGLE: case POWER_ALL_SAVED_TOGGLE:
power = (Settings.power & ((1 << devices_present) -1)) ^ POWER_MASK; power = (Settings.power & ((1 << devices_present) -1)) ^ POWER_MASK;
if (Settings.flag.save_state) { if (Settings.flag.save_state) {
SetDevicePower(power); SetDevicePower(power, SRC_RESTART);
} }
break; break;
case POWER_ALL_SAVED: case POWER_ALL_SAVED:
power = Settings.power & ((1 << devices_present) -1); power = Settings.power & ((1 << devices_present) -1);
if (Settings.flag.save_state) { if (Settings.flag.save_state) {
SetDevicePower(power); SetDevicePower(power, SRC_RESTART);
} }
break; break;
} }
} else { } else {
power = Settings.power & ((1 << devices_present) -1); power = Settings.power & ((1 << devices_present) -1);
if (Settings.flag.save_state) { if (Settings.flag.save_state) {
SetDevicePower(power); SetDevicePower(power, SRC_RESTART);
} }
} }
} }
@ -2480,13 +2456,6 @@ void loop()
OsWatchLoop(); OsWatchLoop();
#ifdef USE_WEBSERVER
PollDnsWebserver();
#ifdef USE_EMULATION
if (Settings.flag2.emulation) PollUdp();
#endif // USE_EMULATION
#endif // USE_WEBSERVER
if (millis() >= state_loop_timer) StateLoop(); if (millis() >= state_loop_timer) StateLoop();
if (!serial_local) SerialInput(); if (!serial_local) SerialInput();

View File

@ -244,6 +244,29 @@ char* LTrim(char* p)
return p; return p;
} }
char* RTrim(char* p)
{
char* q = p + strlen(p) -1;
while ((q >= p) && (isblank(*q))) {
q--; // Trim trailing spaces
}
q++;
*q = '\0';
return p;
}
char* Trim(char* p)
{
if (*p == '\0') { return p; }
while (isspace(*p)) { p++; } // Trim leading spaces
if (*p == '\0') { return p; }
char* q = p + strlen(p) -1;
while (isspace(*q) && q >= p) { q--; } // Trim trailing spaces
q++;
*q = '\0';
return p;
}
char* NoAlNumToUnderscore(char* dest, const char* source) char* NoAlNumToUnderscore(char* dest, const char* source)
{ {
char* write = dest; char* write = dest;
@ -606,6 +629,15 @@ uint32_t GetHash(const char *buffer, size_t size)
return hash; return hash;
} }
void ShowSource(int source)
{
if ((source > 0) && (source < SRC_MAX)) {
char stemp1[20];
snprintf_P(log_data, sizeof(log_data), PSTR("SRC: %s"), GetTextIndexed(stemp1, sizeof(stemp1), source, kCommandSource));
AddLog(LOG_LEVEL_DEBUG);
}
}
/*********************************************************************************************\ /*********************************************************************************************\
* Fill feature list * Fill feature list
\*********************************************************************************************/ \*********************************************************************************************/
@ -633,52 +665,52 @@ void GetFeatures()
feature_drv1 |= 0x00000040; // sonoff.ino feature_drv1 |= 0x00000040; // sonoff.ino
#endif #endif
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
feature_drv1 |= 0x00000080; // webserver.ino feature_drv1 |= 0x00000080; // xdrv_02_webserver.ino
#endif #endif
#ifdef WEBSERVER_ADVERTISE #ifdef WEBSERVER_ADVERTISE
feature_drv1 |= 0x00000100; // webserver.ino feature_drv1 |= 0x00000100; // xdrv_02_webserver.ino
#endif #endif
#ifdef USE_EMULATION #ifdef USE_EMULATION
feature_drv1 |= 0x00000200; // xplg_wemohue.ino feature_drv1 |= 0x00000200; // xplg_wemohue.ino
#endif #endif
#if (MQTT_LIBRARY_TYPE == MQTT_PUBSUBCLIENT) #if (MQTT_LIBRARY_TYPE == MQTT_PUBSUBCLIENT)
feature_drv1 |= 0x00000400; // xdrv_00_mqtt.ino feature_drv1 |= 0x00000400; // xdrv_01_mqtt.ino
#endif #endif
#if (MQTT_LIBRARY_TYPE == MQTT_TASMOTAMQTT) #if (MQTT_LIBRARY_TYPE == MQTT_TASMOTAMQTT)
feature_drv1 |= 0x00000800; // xdrv_00_mqtt.ino feature_drv1 |= 0x00000800; // xdrv_01_mqtt.ino
#endif #endif
#if (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO) #if (MQTT_LIBRARY_TYPE == MQTT_ESPMQTTARDUINO)
feature_drv1 |= 0x00001000; // xdrv_00_mqtt.ino feature_drv1 |= 0x00001000; // xdrv_01_mqtt.ino
#endif #endif
#ifdef MQTT_HOST_DISCOVERY #ifdef MQTT_HOST_DISCOVERY
feature_drv1 |= 0x00002000; // xdrv_00_mqtt.ino feature_drv1 |= 0x00002000; // xdrv_01_mqtt.ino
#endif #endif
#ifdef USE_ARILUX_RF #ifdef USE_ARILUX_RF
feature_drv1 |= 0x00004000; // xdrv_01_light.ino feature_drv1 |= 0x00004000; // xdrv_04_light.ino
#endif #endif
#ifdef USE_WS2812 #ifdef USE_WS2812
feature_drv1 |= 0x00008000; // xdrv_01_light.ino feature_drv1 |= 0x00008000; // xdrv_04_light.ino
#endif #endif
#ifdef USE_WS2812_DMA #ifdef USE_WS2812_DMA
feature_drv1 |= 0x00010000; // xdrv_01_light.ino feature_drv1 |= 0x00010000; // xdrv_04_light.ino
#endif #endif
#ifdef USE_IR_REMOTE #ifdef USE_IR_REMOTE
feature_drv1 |= 0x00020000; // xdrv_02_irremote.ino feature_drv1 |= 0x00020000; // xdrv_05_irremote.ino
#endif #endif
#ifdef USE_IR_HVAC #ifdef USE_IR_HVAC
feature_drv1 |= 0x00040000; // xdrv_02_irremote.ino feature_drv1 |= 0x00040000; // xdrv_05_irremote.ino
#endif #endif
#ifdef USE_IR_RECEIVE #ifdef USE_IR_RECEIVE
feature_drv1 |= 0x00080000; // xdrv_02_irremote.ino feature_drv1 |= 0x00080000; // xdrv_05_irremote.ino
#endif #endif
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
feature_drv1 |= 0x00100000; // xdrv_05_domoticz.ino feature_drv1 |= 0x00100000; // xdrv_07_domoticz.ino
#endif #endif
#ifdef USE_DISPLAY #ifdef USE_DISPLAY
feature_drv1 |= 0x00200000; // xdrv_06_display.ino feature_drv1 |= 0x00200000; // xdrv_98_display.ino
#endif #endif
#ifdef USE_HOME_ASSISTANT #ifdef USE_HOME_ASSISTANT
feature_drv1 |= 0x00400000; // xdrv_07_home_assistant.ino feature_drv1 |= 0x00400000; // xdrv_12_home_assistant.ino
#endif #endif
#ifdef USE_SERIAL_BRIDGE #ifdef USE_SERIAL_BRIDGE
feature_drv1 |= 0x00800000; // xdrv_08_serial_bridge.ino feature_drv1 |= 0x00800000; // xdrv_08_serial_bridge.ino
@ -1141,7 +1173,7 @@ void WifiCheck(uint8_t param)
StartWebserver(Settings.webserver, WiFi.localIP()); StartWebserver(Settings.webserver, WiFi.localIP());
#ifdef USE_DISCOVERY #ifdef USE_DISCOVERY
#ifdef WEBSERVER_ADVERTISE #ifdef WEBSERVER_ADVERTISE
MDNS.addService("http", "tcp", 80); MDNS.addService("http", "tcp", WEB_PORT);
#endif // WEBSERVER_ADVERTISE #endif // WEBSERVER_ADVERTISE
#endif // USE_DISCOVERY #endif // USE_DISCOVERY
} else { } else {

View File

@ -196,6 +196,7 @@
//#define MY_LANGUAGE pt-BR // Portuguese in Brazil //#define MY_LANGUAGE pt-BR // Portuguese in Brazil
//#define MY_LANGUAGE pt-PT // Portuguese in Portugal //#define MY_LANGUAGE pt-PT // Portuguese in Portugal
//#define MY_LANGUAGE ru-RU // Russian in Russia //#define MY_LANGUAGE ru-RU // Russian in Russia
//#define MY_LANGUAGE uk-UK // Ukrainian in Ukrain
//#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China //#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China
//#define MY_LANGUAGE zh-TW // Chinese (Traditional) in Taiwan //#define MY_LANGUAGE zh-TW // Chinese (Traditional) in Taiwan

View File

@ -1,5 +1,5 @@
/* /*
xdrv_00_mqtt.ino - mqtt support for Sonoff-Tasmota xdrv_01_mqtt.ino - mqtt support for Sonoff-Tasmota
Copyright (C) 2018 Theo Arends Copyright (C) 2018 Theo Arends
@ -745,9 +745,9 @@ bool MqttCommand()
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
#define XDRV_00 #define XDRV_01
boolean Xdrv00(byte function) boolean Xdrv01(byte function)
{ {
boolean result = false; boolean result = false;

View File

@ -1,5 +1,5 @@
/* /*
webserver.ino - webserver for Sonoff-Tasmota xdrv_02_webserver.ino - webserver for Sonoff-Tasmota
Copyright (C) 2018 Theo Arends Copyright (C) 2018 Theo Arends
@ -337,6 +337,21 @@ static void WebGetArg(const char* arg, char* out, size_t max)
out[max-1] = '\0'; // Ensure terminating NUL out[max-1] = '\0'; // Ensure terminating NUL
} }
void ShowWebSource(int source)
{
if ((source > 0) && (source < SRC_MAX)) {
char stemp1[20];
snprintf_P(log_data, sizeof(log_data), PSTR("SRC: %s from %s"), GetTextIndexed(stemp1, sizeof(stemp1), source, kCommandSource), WebServer->client().remoteIP().toString().c_str());
AddLog(LOG_LEVEL_DEBUG);
}
}
void ExecuteWebCommand(char* svalue, int source)
{
ShowWebSource(source);
ExecuteCommand(svalue, SRC_IGNORE);
}
void StartWebserver(int type, IPAddress ipweb) void StartWebserver(int type, IPAddress ipweb)
{ {
if (!webserver_state) { if (!webserver_state) {
@ -567,22 +582,23 @@ void HandleAjaxStatusRefresh()
WebGetArg("o", tmp, sizeof(tmp)); WebGetArg("o", tmp, sizeof(tmp));
if (strlen(tmp)) { if (strlen(tmp)) {
ExecuteCommandPower(atoi(tmp), POWER_TOGGLE); ShowWebSource(SRC_WEBGUI);
ExecuteCommandPower(atoi(tmp), POWER_TOGGLE, SRC_IGNORE);
} }
WebGetArg("d", tmp, sizeof(tmp)); WebGetArg("d", tmp, sizeof(tmp));
if (strlen(tmp)) { if (strlen(tmp)) {
snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_DIMMER " %s"), tmp); snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_DIMMER " %s"), tmp);
ExecuteCommand(svalue); ExecuteWebCommand(svalue, SRC_WEBGUI);
} }
WebGetArg("t", tmp, sizeof(tmp)); WebGetArg("t", tmp, sizeof(tmp));
if (strlen(tmp)) { if (strlen(tmp)) {
snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_COLORTEMPERATURE " %s"), tmp); snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_COLORTEMPERATURE " %s"), tmp);
ExecuteCommand(svalue); ExecuteWebCommand(svalue, SRC_WEBGUI);
} }
WebGetArg("k", tmp, sizeof(tmp)); WebGetArg("k", tmp, sizeof(tmp));
if (strlen(tmp)) { if (strlen(tmp)) {
snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_RFKEY "%s"), tmp); snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_RFKEY "%s"), tmp);
ExecuteCommand(svalue); ExecuteWebCommand(svalue, SRC_WEBGUI);
} }
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{t}")); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{t}"));
@ -1106,6 +1122,7 @@ void HandleSaveSettings()
} }
ShowPage(page); ShowPage(page);
ShowWebSource(SRC_WEBGUI);
restart_flag = 2; restart_flag = 2;
} else { } else {
HandleConfiguration(); HandleConfiguration();
@ -1129,7 +1146,7 @@ void HandleResetConfiguration()
ShowPage(page); ShowPage(page);
snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_RESET " 1")); snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_RESET " 1"));
ExecuteCommand(svalue); ExecuteWebCommand(svalue, SRC_WEBGUI);
} }
void HandleRestoreConfiguration() void HandleRestoreConfiguration()
@ -1181,7 +1198,7 @@ void HandleUpgradeFirmwareStart()
WebGetArg("o", tmp, sizeof(tmp)); WebGetArg("o", tmp, sizeof(tmp));
if (strlen(tmp)) { if (strlen(tmp)) {
snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_OTAURL " %s"), tmp); snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_OTAURL " %s"), tmp);
ExecuteCommand(svalue); ExecuteWebCommand(svalue, SRC_WEBGUI);
} }
String page = FPSTR(HTTP_HEAD); String page = FPSTR(HTTP_HEAD);
@ -1193,7 +1210,7 @@ void HandleUpgradeFirmwareStart()
ShowPage(page); ShowPage(page);
snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_UPGRADE " 1")); snprintf_P(svalue, sizeof(svalue), PSTR(D_CMND_UPGRADE " 1"));
ExecuteCommand(svalue); ExecuteWebCommand(svalue, SRC_WEBGUI);
} }
void HandleUploadDone() void HandleUploadDone()
@ -1233,6 +1250,8 @@ void HandleUploadDone()
} else { } else {
page += F("green'>" D_SUCCESSFUL "</font></b><br/>"); page += F("green'>" D_SUCCESSFUL "</font></b><br/>");
page += FPSTR(HTTP_MSG_RSTRT); page += FPSTR(HTTP_MSG_RSTRT);
ShowWebSource(SRC_WEBGUI);
restart_flag = 2; restart_flag = 2;
} }
SettingsBufferFree(); SettingsBufferFree();
@ -1381,16 +1400,16 @@ void HandleHttpCommand()
WebGetArg("user", tmp1, sizeof(tmp1)); WebGetArg("user", tmp1, sizeof(tmp1));
char tmp2[100]; char tmp2[100];
WebGetArg("password", tmp2, sizeof(tmp2)); WebGetArg("password", tmp2, sizeof(tmp2));
if (!(!strcmp(tmp1, WEB_USERNAME) && !strcmp(tmp2, Settings.web_password))) { if (!(!strcmp(tmp1, WEB_USERNAME) && !strcmp(tmp2, Settings.web_password))) { valid = 0; }
valid = 0;
}
} }
String message = F("{\"" D_RSLT_WARNING "\":\""); String message = F("{\"" D_RSLT_WARNING "\":\"");
if (valid) { if (valid) {
byte curridx = web_log_index; byte curridx = web_log_index;
WebGetArg("cmnd", svalue, sizeof(svalue)); WebGetArg("cmnd", svalue, sizeof(svalue));
if (strlen(svalue)) { ExecuteCommand(svalue); } if (strlen(svalue)) {
ExecuteWebCommand(svalue, SRC_WEBCOMMAND);
}
if (web_log_index != curridx) { if (web_log_index != curridx) {
byte counter = curridx; byte counter = curridx;
@ -1449,7 +1468,7 @@ void HandleAjaxConsoleRefresh()
if (strlen(svalue)) { if (strlen(svalue)) {
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_COMMAND "%s"), svalue); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_COMMAND "%s"), svalue);
AddLog(LOG_LEVEL_INFO); AddLog(LOG_LEVEL_INFO);
ExecuteCommand(svalue); ExecuteWebCommand(svalue, SRC_WEBCONSOLE);
} }
WebGetArg("c2", svalue, sizeof(svalue)); WebGetArg("c2", svalue, sizeof(svalue));
@ -1624,6 +1643,7 @@ void HandleRestart()
} }
ShowPage(page); ShowPage(page);
ShowWebSource(SRC_WEBGUI);
restart_flag = 2; restart_flag = 2;
} }
@ -1676,4 +1696,202 @@ boolean ValidIpAddress(String str)
} }
return true; return true;
} }
/*********************************************************************************************/
String UrlEncode(const String& text)
{
const char hex[] = "0123456789ABCDEF";
String encoded = "";
int len = text.length();
int i = 0;
while (i < len) {
char decodedChar = text.charAt(i++);
/*
if (('a' <= decodedChar && decodedChar <= 'z') ||
('A' <= decodedChar && decodedChar <= 'Z') ||
('0' <= decodedChar && decodedChar <= '9') ||
('=' == decodedChar)) {
encoded += decodedChar;
} else {
encoded += '%';
encoded += hex[decodedChar >> 4];
encoded += hex[decodedChar & 0xF];
}
*/
if (' ' == decodedChar) {
encoded += '%';
encoded += hex[decodedChar >> 4];
encoded += hex[decodedChar & 0xF];
} else {
encoded += decodedChar;
}
}
return encoded;
}
int WebSend(char *buffer)
{
// http://192.168.178.86:80/cm?user=admin&password=joker&cmnd=POWER1 ON
// http://192.168.178.86:80/cm?cmnd=POWER1 ON
// [192.168.178.86:80,admin:joker] POWER1 ON
char *host;
char *port;
char *user;
char *password;
char *command;
uint16_t nport = 80;
int status = 1; // Wrong parameters
host = strtok_r(buffer, "]", &command); // buffer = [192.168.178.86:80,admin:joker] POWER1 ON
if (host && command) {
host = LTrim(host);
host++; // Skip [
host = strtok_r(host, ",", &user); // host = 192.168.178.86:80,admin:joker > 192.168.178.86:80
host = strtok_r(host, ":", &port); // host = 192.168.178.86:80 > 192.168.178.86
if (user) {
user = strtok_r(user, ":", &password); // user = admin:joker > admin
}
//snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Buffer |%X|, Host |%X|, Port |%X|, User |%X|, Password |%X|, Command |%X|"), buffer, host, port, user, password, command);
//AddLog(LOG_LEVEL_DEBUG);
if (port) { nport = atoi(port); }
String nuri = "";
if (user && password) {
nuri += F("user=");
nuri += user;
nuri += F("&password=");
nuri += password;
nuri += F("&");
}
nuri += F("cmnd=");
nuri += LTrim(command);
String uri = UrlEncode(nuri);
IPAddress host_ip;
if (WiFi.hostByName(host, host_ip)) {
WiFiClient client;
bool connected = false;
byte retry = 2;
while ((retry > 0) && !connected) {
--retry;
connected = client.connect(host_ip, nport);
if (connected) break;
}
if (connected) {
String url = F("GET /cm?");
url += uri;
url += F(" HTTP/1.1\r\n Host: ");
url += IPAddress(host_ip).toString();
if (port) {
url += F(" \r\n Port: ");
url += port;
}
url += F(" \r\n Connection: close\r\n\r\n");
//snprintf_P(log_data, sizeof(log_data), PSTR("DBG: Url |%s|"), url.c_str());
//AddLog(LOG_LEVEL_DEBUG);
client.print(url.c_str());
client.flush();
client.stop();
status = 0; // No error - Done
} else {
status = 2; // Connection failed
}
} else {
status = 3; // Host not found
}
}
return status;
}
/*********************************************************************************************/
enum WebCommands { CMND_WEBSERVER, CMND_WEBPASSWORD, CMND_WEBLOG, CMND_WEBSEND, CMND_EMULATION };
const char kWebCommands[] PROGMEM = D_CMND_WEBSERVER "|" D_CMND_WEBPASSWORD "|" D_CMND_WEBLOG "|" D_CMND_WEBSEND "|" D_CMND_EMULATION ;
const char kWebSendStatus[] PROGMEM = D_JSON_DONE "|" D_JSON_WRONG_PARAMETERS "|" D_JSON_CONNECT_FAILED "|" D_JSON_HOST_NOT_FOUND ;
bool WebCommand()
{
char command[CMDSZ];
bool serviced = true;
int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic, kWebCommands);
if (-1 == command_code) {
serviced = false; // Unknown command
}
if (CMND_WEBSERVER == command_code) {
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 2)) { Settings.webserver = XdrvMailbox.payload; }
if (Settings.webserver) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WEBSERVER "\":\"" D_JSON_ACTIVE_FOR " %s " D_JSON_ON_DEVICE " %s " D_JSON_WITH_IP_ADDRESS " %s\"}"),
(2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str());
} else {
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(0));
}
}
else if (CMND_WEBPASSWORD == command_code) {
if ((XdrvMailbox.data_len > 0) && (XdrvMailbox.data_len < sizeof(Settings.web_password))) {
strlcpy(Settings.web_password, (!strcmp(XdrvMailbox.data,"0")) ? "" : (1 == XdrvMailbox.payload) ? WEB_PASSWORD : XdrvMailbox.data, sizeof(Settings.web_password));
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.web_password);
} else {
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_ASTERIX, command);
}
}
else if (CMND_WEBLOG == command_code) {
if ((XdrvMailbox.payload >= LOG_LEVEL_NONE) && (XdrvMailbox.payload <= LOG_LEVEL_ALL)) { Settings.weblog_level = XdrvMailbox.payload; }
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.weblog_level);
}
else if (CMND_WEBSEND == command_code) {
if (XdrvMailbox.data_len > 0) {
uint8_t result = WebSend(XdrvMailbox.data);
char stemp1[20];
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetTextIndexed(stemp1, sizeof(stemp1), result, kWebSendStatus));
}
}
#ifdef USE_EMULATION
else if (CMND_EMULATION == command_code) {
if ((XdrvMailbox.payload >= EMUL_NONE) && (XdrvMailbox.payload < EMUL_MAX)) {
Settings.flag2.emulation = XdrvMailbox.payload;
restart_flag = 2;
}
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.emulation);
}
#endif // USE_EMULATION
else serviced = false; // Unknown command
return serviced;
}
/*********************************************************************************************\
* Interface
\*********************************************************************************************/
#define XDRV_02
boolean Xdrv02(byte function)
{
boolean result = false;
switch (function) {
case FUNC_LOOP:
PollDnsWebserver();
#ifdef USE_EMULATION
if (Settings.flag2.emulation) PollUdp();
#endif // USE_EMULATION
break;
case FUNC_COMMAND:
result = WebCommand();
break;
}
return result;
}
#endif // USE_WEBSERVER #endif // USE_WEBSERVER

View File

@ -371,7 +371,12 @@ bool CseSerialInput()
return 1; return 1;
} }
} else { } else {
if (0x5A == serial_in_byte) { // 0x5A - Packet header 2 if ((0x5A == serial_in_byte) && (serial_in_byte_counter)) { // 0x5A - Packet header 2
if (serial_in_byte_counter > 1) { // Sync buffer with data (issue #1907)
serial_in_buffer[0] = serial_in_buffer[--serial_in_byte_counter];
serial_in_byte_counter = 1;
AddLog_P(LOG_LEVEL_DEBUG, PSTR("CSE: Fixed out-of-sync"));
}
cse_receive_flag = 1; cse_receive_flag = 1;
} else { } else {
serial_in_byte_counter = 0; serial_in_byte_counter = 0;
@ -721,7 +726,7 @@ void EnergyMarginCheck()
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : ""); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : "");
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING); MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
EnergyMqttShow(); EnergyMqttShow();
ExecuteCommandPower(1, POWER_OFF); ExecuteCommandPower(1, POWER_OFF, SRC_MAXPOWER);
if (!energy_mplr_counter) { if (!energy_mplr_counter) {
energy_mplr_counter = Settings.param[P_MAX_POWER_RETRY] +1; energy_mplr_counter = Settings.param[P_MAX_POWER_RETRY] +1;
} }
@ -743,7 +748,7 @@ void EnergyMarginCheck()
if (energy_mplr_counter) { if (energy_mplr_counter) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1)); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR)); MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
ExecuteCommandPower(1, POWER_ON); ExecuteCommandPower(1, POWER_ON, SRC_MAXPOWER);
} else { } else {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0)); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING); MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
@ -761,7 +766,7 @@ void EnergyMarginCheck()
energy_max_energy_state = 1; energy_max_energy_state = 1;
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR)); MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
ExecuteCommandPower(1, POWER_ON); ExecuteCommandPower(1, POWER_ON, SRC_MAXENERGY);
} }
else if ((1 == energy_max_energy_state) && (energy_daily_u >= Settings.energy_max_energy)) { else if ((1 == energy_max_energy_state) && (energy_daily_u >= Settings.energy_max_energy)) {
energy_max_energy_state = 2; energy_max_energy_state = 2;
@ -769,7 +774,7 @@ void EnergyMarginCheck()
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : ""); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : "");
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING); MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
EnergyMqttShow(); EnergyMqttShow();
ExecuteCommandPower(1, POWER_OFF); ExecuteCommandPower(1, POWER_OFF, SRC_MAXENERGY);
} }
} }
#endif // FEATURE_POWER_LIMIT #endif // FEATURE_POWER_LIMIT

View File

@ -1,5 +1,5 @@
/* /*
xdrv_01_light.ino - PWM, WS2812 and sonoff led support for Sonoff-Tasmota xdrv_04_light.ino - PWM, WS2812 and sonoff led support for Sonoff-Tasmota
Copyright (C) 2018 Theo Arends Copyright (C) 2018 Theo Arends
@ -230,7 +230,7 @@ void AriluxRfHandler()
} }
} }
if (strlen(command)) { if (strlen(command)) {
ExecuteCommand(command); ExecuteCommand(command, SRC_LIGHT);
} }
} }
} }
@ -529,7 +529,7 @@ char* LightGetColor(uint8_t type, char* scolor)
void LightPowerOn() void LightPowerOn()
{ {
if (Settings.light_dimmer && !(light_power)) { if (Settings.light_dimmer && !(light_power)) {
ExecuteCommandPower(light_device, POWER_ON); ExecuteCommandPower(light_device, POWER_ON, SRC_LIGHT);
} }
} }
@ -585,11 +585,11 @@ void LightPreparePower()
{ {
if (Settings.light_dimmer && !(light_power)) { if (Settings.light_dimmer && !(light_power)) {
if (!Settings.flag.not_power_linked) { if (!Settings.flag.not_power_linked) {
ExecuteCommandPower(light_device, POWER_ON_NO_STATE); ExecuteCommandPower(light_device, POWER_ON_NO_STATE, SRC_LIGHT);
} }
} }
else if (!Settings.light_dimmer && light_power) { else if (!Settings.light_dimmer && light_power) {
ExecuteCommandPower(light_device, POWER_OFF_NO_STATE); ExecuteCommandPower(light_device, POWER_OFF_NO_STATE, SRC_LIGHT);
} }
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzUpdatePowerState(light_device); DomoticzUpdatePowerState(light_device);
@ -1287,9 +1287,9 @@ boolean LightCommand()
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
#define XDRV_01 #define XDRV_04
boolean Xdrv01(byte function) boolean Xdrv04(byte function)
{ {
boolean result = false; boolean result = false;

View File

@ -1,5 +1,5 @@
/* /*
xdrv_02_irremote.ino - infra red support for Sonoff-Tasmota xdrv_05_irremote.ino - infra red support for Sonoff-Tasmota
Copyright (C) 2018 Heiko Krupp, Lazar Obradovic and Theo Arends Copyright (C) 2018 Heiko Krupp, Lazar Obradovic and Theo Arends
@ -393,9 +393,9 @@ boolean IrSendCommand()
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
#define XDRV_02 #define XDRV_05
boolean Xdrv02(byte function) boolean Xdrv05(byte function)
{ {
boolean result = false; boolean result = false;

View File

@ -1,5 +1,5 @@
/* /*
xdrv_04_snfbridge.ino - sonoff RF bridge 433 support for Sonoff-Tasmota xdrv_06_snfbridge.ino - sonoff RF bridge 433 support for Sonoff-Tasmota
Copyright (C) 2018 Theo Arends Copyright (C) 2018 Theo Arends
@ -303,9 +303,9 @@ boolean SonoffBridgeCommand()
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
#define XDRV_04 #define XDRV_06
boolean Xdrv04(byte function) boolean Xdrv06(byte function)
{ {
boolean result = false; boolean result = false;

View File

@ -1,5 +1,5 @@
/* /*
xdrv_05_domoticz.ino - domoticz support for Sonoff-Tasmota xdrv_07_domoticz.ino - domoticz support for Sonoff-Tasmota
Copyright (C) 2018 Theo Arends Copyright (C) 2018 Theo Arends
@ -437,9 +437,9 @@ void DomoticzSaveSettings()
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
#define XDRV_05 #define XDRV_07
boolean Xdrv05(byte function) boolean Xdrv07(byte function)
{ {
boolean result = false; boolean result = false;

View File

@ -290,7 +290,7 @@ void TimerEverySecond()
XdrvRulesProcess(); XdrvRulesProcess();
} else } else
#endif // USE_RULES #endif // USE_RULES
if (devices_present) { ExecuteCommandPower(xtimer.device +1, xtimer.power); } if (devices_present) { ExecuteCommandPower(xtimer.device +1, xtimer.power, SRC_TIMER); }
} }
} }
} }

View File

@ -90,6 +90,7 @@ uint32_t rules_triggers[MAX_RULE_SETS] = { 0 };
uint8_t rules_trigger_count[MAX_RULE_SETS] = { 0 }; uint8_t rules_trigger_count[MAX_RULE_SETS] = { 0 };
uint8_t rules_teleperiod = 0; uint8_t rules_teleperiod = 0;
char event_data[100];
char vars[RULES_MAX_VARS][10] = { 0 }; char vars[RULES_MAX_VARS][10] = { 0 };
/*******************************************************************************************/ /*******************************************************************************************/
@ -324,7 +325,7 @@ bool RuleSetProcess(byte rule_set, String &event_saved)
// snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, D_CMND_RULE, D_JSON_INITIATED); // snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, D_CMND_RULE, D_JSON_INITIATED);
// MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RULE)); // MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RULE));
ExecuteCommand(command); ExecuteCommand(command, SRC_RULE);
serviced = true; serviced = true;
} }
rules_trigger_count[rule_set]++; rules_trigger_count[rule_set]++;
@ -374,7 +375,26 @@ void RulesEvery50ms()
} }
} }
rules_old_power = rules_new_power; rules_old_power = rules_new_power;
}
else if(event_data[0]) {
char *event;
char *parameter;
event = strtok_r(event_data, "=", &parameter); // event_data = fanspeed=10
if (event) {
event = Trim(event);
if (parameter) {
parameter = Trim(parameter);
} else { } else {
parameter = event + strlen(event); // '\0'
}
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"Event\":{\"%s\":\"%s\"}}"), event, parameter);
event_data[0] ='\0';
RulesProcess();
} else {
event_data[0] ='\0';
}
}
else {
rules_quota++; rules_quota++;
if (rules_quota &1) { // Every 100 ms if (rules_quota &1) { // Every 100 ms
mqtt_data[0] = '\0'; mqtt_data[0] = '\0';
@ -464,17 +484,7 @@ boolean RulesCommand()
} }
else if (CMND_EVENT == command_code) { else if (CMND_EVENT == command_code) {
if (XdrvMailbox.data_len > 0) { if (XdrvMailbox.data_len > 0) {
String event = XdrvMailbox.data; strlcpy(event_data, XdrvMailbox.data, sizeof(event_data));
String parameter = "";
int pos = event.indexOf('=');
if (pos > 0) {
parameter = event.substring(pos +1);
parameter.trim();
event = event.substring(0, pos);
}
event.trim();
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"Event\":{\"%s\":\"%s\"}}"), event.c_str(), parameter.c_str());
RulesProcess();
} }
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE); snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
} }

View File

@ -115,6 +115,11 @@ device_parameters_t device_param[] = {
{ KNX_ENERGY_DAILY , false, false, KNX_Empty }, { KNX_ENERGY_DAILY , false, false, KNX_Empty },
{ KNX_ENERGY_START , false, false, KNX_Empty }, { KNX_ENERGY_START , false, false, KNX_Empty },
{ KNX_ENERGY_TOTAL , false, false, KNX_Empty }, { KNX_ENERGY_TOTAL , false, false, KNX_Empty },
{ KNX_SLOT1 , false, false, KNX_Empty },
{ KNX_SLOT2 , false, false, KNX_Empty },
{ KNX_SLOT3 , false, false, KNX_Empty },
{ KNX_SLOT4 , false, false, KNX_Empty },
{ KNX_SLOT5 , false, false, KNX_Empty },
{ KNX_Empty, false, false, KNX_Empty} { KNX_Empty, false, false, KNX_Empty}
}; };
@ -145,6 +150,11 @@ const char * device_param_ga[] = {
D_ENERGY_TODAY , D_ENERGY_TODAY ,
D_ENERGY_YESTERDAY , D_ENERGY_YESTERDAY ,
D_ENERGY_TOTAL , D_ENERGY_TOTAL ,
D_KNX_TX_SLOT " 1",
D_KNX_TX_SLOT " 2",
D_KNX_TX_SLOT " 3",
D_KNX_TX_SLOT " 4",
D_KNX_TX_SLOT " 5",
nullptr nullptr
}; };
@ -175,9 +185,20 @@ const char *device_param_cb[] = {
D_REPLY " " D_ENERGY_TODAY , D_REPLY " " D_ENERGY_TODAY ,
D_REPLY " " D_ENERGY_YESTERDAY , D_REPLY " " D_ENERGY_YESTERDAY ,
D_REPLY " " D_ENERGY_TOTAL , D_REPLY " " D_ENERGY_TOTAL ,
D_KNX_RX_SLOT " 1",
D_KNX_RX_SLOT " 2",
D_KNX_RX_SLOT " 3",
D_KNX_RX_SLOT " 4",
D_KNX_RX_SLOT " 5",
nullptr nullptr
}; };
// Commands
#define D_CMND_KNXTXCMND "KnxTx_Cmnd"
#define D_CMND_KNXTXVAL "KnxTx_Val"
enum KnxCommands { CMND_KNXTXCMND, CMND_KNXTXVAL };
const char kKnxCommands[] PROGMEM = D_CMND_KNXTXCMND "|" D_CMND_KNXTXVAL ;
byte KNX_GA_Search( byte param, byte start = 0 ) byte KNX_GA_Search( byte param, byte start = 0 )
{ {
@ -377,12 +398,20 @@ bool KNX_CONFIG_NOT_MATCH()
{ {
if ( !device_param[i].show ) { // device has this parameter ? if ( !device_param[i].show ) { // device has this parameter ?
// if not, search for all registered group address to this parameter for deletion // if not, search for all registered group address to this parameter for deletion
// Checks all GA
if ( KNX_GA_Search(i+1) != KNX_Empty ) { return true; } if ( KNX_GA_Search(i+1) != KNX_Empty ) { return true; }
if ( (i < 8) || (i > 15) ) // check relays and sensors (i from 8 to 16 are toggle relays parameters)
// Check all CB
if ( i < 8 ) // check relays (i from 8 to 15 are toggle relays parameters)
{ {
if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; } if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; }
if ( KNX_CB_Search(i+9) != KNX_Empty ) { return true; } if ( KNX_CB_Search(i+9) != KNX_Empty ) { return true; }
} }
if ( i > 15 ) // check sensors and others
{
if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; }
}
} }
} }
return false; return false;
@ -448,6 +477,14 @@ void KNX_INIT()
device_param[KNX_ENERGY_POWERFACTOR-1].show = true; device_param[KNX_ENERGY_POWERFACTOR-1].show = true;
} }
#ifdef USE_RULES
device_param[KNX_SLOT1-1].show = true;
device_param[KNX_SLOT2-1].show = true;
device_param[KNX_SLOT3-1].show = true;
device_param[KNX_SLOT4-1].show = true;
device_param[KNX_SLOT5-1].show = true;
#endif
// Delete from KNX settings all configuration is not anymore related to this device // Delete from KNX settings all configuration is not anymore related to this device
if (KNX_CONFIG_NOT_MATCH()) { if (KNX_CONFIG_NOT_MATCH()) {
Settings.knx_GA_registered = 0; Settings.knx_GA_registered = 0;
@ -494,18 +531,32 @@ void KNX_CB_Action(message_t const &msg, void *arg)
case KNX_CT_WRITE: case KNX_CT_WRITE:
if (chan->type < 9) // Set Relays if (chan->type < 9) // Set Relays
{ {
ExecuteCommandPower(chan->type, msg.data[0]); ExecuteCommandPower(chan->type, msg.data[0], SRC_KNX);
} }
else if (chan->type < 17) // Toggle Relays else if (chan->type < 17) // Toggle Relays
{ {
if (!toggle_inhibit) { if (!toggle_inhibit) {
ExecuteCommandPower((chan->type) -8, 2); ExecuteCommandPower((chan->type) -8, 2, SRC_KNX);
if (Settings.flag.knx_enable_enhancement) { if (Settings.flag.knx_enable_enhancement) {
toggle_inhibit = TOGGLE_INHIBIT_TIME; toggle_inhibit = TOGGLE_INHIBIT_TIME;
} }
} }
} }
#ifdef USE_RULES
else if ((chan->type >= KNX_SLOT1) && (chan->type <= KNX_SLOT5)) // KNX RX SLOTs (write command)
{
if (!toggle_inhibit) {
char command[25];
snprintf_P(command, sizeof(command), PSTR("event KNXRX_VAL%d=%d"), ((chan->type) - KNX_SLOT1 + 1 ), msg.data[0]);
ExecuteCommand(command, SRC_KNX);
if (Settings.flag.knx_enable_enhancement) {
toggle_inhibit = TOGGLE_INHIBIT_TIME;
}
}
}
#endif
break; break;
case KNX_CT_READ: case KNX_CT_READ:
if (chan->type < 9) // reply Relays status if (chan->type < 9) // reply Relays status
{ {
@ -531,6 +582,19 @@ void KNX_CB_Action(message_t const &msg, void *arg)
knx.answer_2byte_float(msg.received_on, last_hum); knx.answer_2byte_float(msg.received_on, last_hum);
} }
} }
#ifdef USE_RULES
else if ((chan->type >= KNX_SLOT1) && (chan->type <= KNX_SLOT5)) // KNX RX SLOTs (read command)
{
if (!toggle_inhibit) {
char command[25];
snprintf_P(command, sizeof(command), PSTR("event KNXRX_REQ%d"), ((chan->type) - KNX_SLOT1 + 1 ) );
ExecuteCommand(command, SRC_KNX);
if (Settings.flag.knx_enable_enhancement) {
toggle_inhibit = TOGGLE_INHIBIT_TIME;
}
}
}
#endif
break; break;
} }
} }
@ -939,6 +1003,71 @@ void KNX_Save_Settings()
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
boolean KnxCommand()
{
char command[CMDSZ];
uint8_t index = XdrvMailbox.index;
int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic, kKnxCommands);
if (!(Settings.flag.knx_enabled)) { return false; }
if (-1 == command_code) { return false; } // Unknown command
else if ((CMND_KNXTXCMND == command_code) && (index > 0) && (index <= MAX_KNXTX_CMNDS) && (XdrvMailbox.data_len > 0)) {
// index <- KNX SLOT to use
// XdrvMailbox.payload <- data to send
// Search all the registered GA that has that output (variable: KNX SLOTx) as parameter
byte i = KNX_GA_Search(index + KNX_SLOT1 -1);
while ( i != KNX_Empty ) {
KNX_addr.value = Settings.knx_GA_addr[i];
knx.write_1bit(KNX_addr, !(XdrvMailbox.payload == 0));
if (Settings.flag.knx_enable_enhancement) {
knx.write_1bit(KNX_addr, !(XdrvMailbox.payload == 0));
knx.write_1bit(KNX_addr, !(XdrvMailbox.payload == 0));
}
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"),
device_param_ga[index + KNX_SLOT1 -2], !(XdrvMailbox.payload == 0),
KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member);
AddLog(LOG_LEVEL_INFO);
i = KNX_GA_Search(index + KNX_SLOT1 -1, i + 1);
}
}
else if ((CMND_KNXTXVAL == command_code) && (index > 0) && (index <= MAX_KNXTX_CMNDS) && (XdrvMailbox.data_len > 0)) {
// index <- KNX SLOT to use
// XdrvMailbox.payload <- data to send
// Search all the registered GA that has that output (variable: KNX SLOTx) as parameter
byte i = KNX_GA_Search(index + KNX_SLOT1 -1);
while ( i != KNX_Empty ) {
KNX_addr.value = Settings.knx_GA_addr[i];
knx.write_2byte_float(KNX_addr, XdrvMailbox.payload);
if (Settings.flag.knx_enable_enhancement) {
knx.write_2byte_float(KNX_addr, XdrvMailbox.payload);
knx.write_2byte_float(KNX_addr, XdrvMailbox.payload);
}
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"),
device_param_ga[index + KNX_SLOT1 -2], XdrvMailbox.payload,
KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member);
AddLog(LOG_LEVEL_INFO);
i = KNX_GA_Search(index + KNX_SLOT1 -1, i + 1);
}
}
else { return false; } // Incomplete command
snprintf_P (mqtt_data, sizeof(mqtt_data), PSTR("{\"%s%d\":\"%d\"}"),
command, index, XdrvMailbox.payload );
return true;
}
/*********************************************************************************************\ /*********************************************************************************************\
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
@ -960,9 +1089,9 @@ boolean Xdrv11(byte function)
toggle_inhibit--; toggle_inhibit--;
} }
break; break;
// case FUNC_COMMAND: case FUNC_COMMAND:
// result = KNXCommand(); result = KnxCommand();
// break; break;
// case FUNC_SET_POWER: // case FUNC_SET_POWER:
// break; // break;
} }

View File

@ -1,5 +1,5 @@
/* /*
xdrv_07_home_assistant.ino - home assistant support for Sonoff-Tasmota xdrv_12_home_assistant.ino - home assistant support for Sonoff-Tasmota
Copyright (C) 2018 Theo Arends Copyright (C) 2018 Theo Arends
@ -208,9 +208,9 @@ void HAssDiscovery(uint8_t mode)
* Interface * Interface
\*********************************************************************************************/ \*********************************************************************************************/
#define XDRV_07 #define XDRV_12
boolean Xdrv07(byte function) boolean Xdrv12(byte function)
{ {
boolean result = false; boolean result = false;

View File

@ -18,10 +18,6 @@
*/ */
boolean (* const xdrv_func_ptr[])(byte) PROGMEM = { // Driver Function Pointers boolean (* const xdrv_func_ptr[])(byte) PROGMEM = { // Driver Function Pointers
#ifdef XDRV_00
&Xdrv00,
#endif
#ifdef XDRV_01 #ifdef XDRV_01
&Xdrv01, &Xdrv01,
#endif #endif

View File

@ -387,10 +387,10 @@ void HandleUpnpEvent()
//differentiate get and set state //differentiate get and set state
if (request.indexOf(F("SetBinaryState")) > 0) { if (request.indexOf(F("SetBinaryState")) > 0) {
if (request.indexOf(F("State>1</Binary")) > 0) { if (request.indexOf(F("State>1</Binary")) > 0) {
ExecuteCommandPower(devices_present, POWER_ON); ExecuteCommandPower(devices_present, POWER_ON, SRC_WEMO);
} }
else if (request.indexOf(F("State>0</Binary")) > 0) { else if (request.indexOf(F("State>0</Binary")) > 0) {
ExecuteCommandPower(devices_present, POWER_OFF); ExecuteCommandPower(devices_present, POWER_OFF, SRC_WEMO);
} }
} }
else if(request.indexOf(F("GetBinaryState")) > 0){ else if(request.indexOf(F("GetBinaryState")) > 0){
@ -660,10 +660,10 @@ void HueLights(String *path)
on = hue_json["on"]; on = hue_json["on"];
switch(on) switch(on)
{ {
case false : ExecuteCommandPower(device, POWER_OFF); case false : ExecuteCommandPower(device, POWER_OFF, SRC_HUE);
response.replace("{re", "false"); response.replace("{re", "false");
break; break;
case true : ExecuteCommandPower(device, POWER_ON); case true : ExecuteCommandPower(device, POWER_ON, SRC_HUE);
response.replace("{re", "true"); response.replace("{re", "true");
break; break;
default : response.replace("{re", (power & (1 << (device-1))) ? "true" : "false"); default : response.replace("{re", (power & (1 << (device-1))) ? "true" : "false");

View File

@ -76,8 +76,8 @@ void Sgp30Show(boolean json)
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (0 == tele_period) DomoticzSensor(DZ_AIRQUALITY, sgp.eCO2); if (0 == tele_period) DomoticzSensor(DZ_AIRQUALITY, sgp.eCO2);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
} else {
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else {
snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SGP30, mqtt_data, sgp.eCO2, sgp.TVOC); snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SGP30, mqtt_data, sgp.eCO2, sgp.TVOC);
#endif #endif
} }

View File

@ -262,9 +262,9 @@ void SDM120Show(boolean json)
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {
snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SDM120_DATA, mqtt_data, voltage, current, active_power, apparent_power, reactive_power, power_factor, frequency, energy_total); snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SDM120_DATA, mqtt_data, voltage, current, active_power, apparent_power, reactive_power, power_factor, frequency, energy_total);
}
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
} }
}
/*********************************************************************************************\ /*********************************************************************************************\
* Interface * Interface

View File

@ -335,8 +335,8 @@ void Si1145Show(boolean json)
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, visible); if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, visible);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
} else {
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else {
snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SI1145, mqtt_data, visible, infrared, uvindex /100, uvindex %100); snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_SI1145, mqtt_data, visible, infrared, uvindex /100, uvindex %100);
#endif #endif
} }

View File

@ -317,9 +317,9 @@ void SDM630Show(boolean json)
active_power_l1, active_power_l2, active_power_l3, active_power_l1, active_power_l2, active_power_l3,
reactive_power_l1, reactive_power_l2, reactive_power_l3, reactive_power_l1, reactive_power_l2, reactive_power_l3,
power_factor_l1, power_factor_l2, power_factor_l3, energy_total); power_factor_l1, power_factor_l2, power_factor_l3, energy_total);
}
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
} }
}
/*********************************************************************************************\ /*********************************************************************************************\
* Interface * Interface