Merge branch 'arendst/development' into development

This commit is contained in:
reloxx13 2018-04-11 18:42:03 +02:00
commit 9abf79b193
33 changed files with 184 additions and 159 deletions

View File

@ -1,7 +1,7 @@
## Sonoff-Tasmota ## Sonoff-Tasmota
Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE.
Current version is **5.12.0j** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. Current version is **5.12.0k** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information.
### Quick install ### Quick install

View File

@ -1,4 +1,9 @@
/* 5.12.0j /* 5.12.0k
* Prepare for simple rules by enlarging Settings area to now 2048 bytes
* Fix freeing more code space when emulation is disabled (#1592)
* Fix compile error when not defined USE_TIMERS (#2400)
*
* 5.12.0j
* Add optional Sunrise and Sunset timers with commands Latitide and Longitude to be enabled with define USE_SUNRISE in user_config.h (#2317) * Add optional Sunrise and Sunset timers with commands Latitide and Longitude to be enabled with define USE_SUNRISE in user_config.h (#2317)
* *
* 5.12.0i * 5.12.0i

View File

@ -42,8 +42,8 @@
#define D_HOUR_MINUTE_SEPARATOR ":" #define D_HOUR_MINUTE_SEPARATOR ":"
#define D_MINUTE_SECOND_SEPARATOR ":" #define D_MINUTE_SECOND_SEPARATOR ":"
#define D_DAY3LIST "PonÚteStřČtvPátSobNed" #define D_DAY3LIST "Po Út St Čt Pá So Ne "
#define D_MONTH3LIST "LedÚnoBřeDubKvěČerČevSrpZářŘíjLisPro" #define D_MONTH3LIST "LedÚnoBřeDubKvěČvnČvcSrpZářŘíjLisPro"
// Non JSON decimal separator // Non JSON decimal separator
#define D_DECIMAL_SEPARATOR "," #define D_DECIMAL_SEPARATOR ","
@ -56,19 +56,19 @@
#define D_AUTO "AUTO" #define D_AUTO "AUTO"
#define D_BLINK "Blikání" #define D_BLINK "Blikání"
#define D_BLINKOFF "BlikáníVyp" #define D_BLINKOFF "BlikáníVyp"
#define D_BOOT_COUNT "Počítadlo spuštění" #define D_BOOT_COUNT "Počitadlo spuštění"
#define D_BRIGHTLIGHT "Světlý" #define D_BRIGHTLIGHT "Světlý"
#define D_BUTTON "Tlačítko" #define D_BUTTON "Tlačítko"
#define D_BY "by" // Written by me #define D_BY "by" // Written by me
#define D_BYTES "Bytu" #define D_BYTES "Bytů"
#define D_CELSIUS "Celsia" #define D_CELSIUS "°C"
#define D_CO2 "Kysličníku uhličitého" #define D_CO2 "CO2"
#define D_CODE "kód" // Button code #define D_CODE "kód" // Button code
#define D_COLDLIGHT "Studený" #define D_COLDLIGHT "Studené světlo"
#define D_COMMAND "Příkaz" #define D_COMMAND "Příkaz"
#define D_CONNECTED "...připojeno" #define D_CONNECTED "...připojeno"
#define D_COUNT "Počítej" #define D_COUNT "Počítej"
#define D_COUNTER "Počítadlo" #define D_COUNTER "Počitadlo"
#define D_CURRENT "Proud" // As in Voltage and Current #define D_CURRENT "Proud" // As in Voltage and Current
#define D_DATA "Data" #define D_DATA "Data"
#define D_DARKLIGHT "Tmavý" #define D_DARKLIGHT "Tmavý"
@ -89,14 +89,14 @@
#define D_FALSE "Nepravda" #define D_FALSE "Nepravda"
#define D_FILE "Soubor" #define D_FILE "Soubor"
#define D_FREE_MEMORY "Volná paměť" #define D_FREE_MEMORY "Volná paměť"
#define D_GAS "Gas" #define D_GAS "Plyn"
#define D_GATEWAY "Výchozí brána" #define D_GATEWAY "Výchozí brána"
#define D_GROUP "Skupina" #define D_GROUP "Skupina"
#define D_HOST "Server" #define D_HOST "Server"
#define D_HOSTNAME "Název serveru" #define D_HOSTNAME "Název serveru"
#define D_HUMIDITY "Vlhkost" #define D_HUMIDITY "Vlhkost"
#define D_ILLUMINANCE "Osvětlení" #define D_ILLUMINANCE "Osvětlení"
#define D_IMMEDIATE "Mžikové" // Button immediate #define D_IMMEDIATE "Okamžité" // Button immediate
#define D_INDEX "Index" #define D_INDEX "Index"
#define D_INFO "Informace" #define D_INFO "Informace"
#define D_INITIALIZED "Inicializovaný" #define D_INITIALIZED "Inicializovaný"
@ -107,11 +107,11 @@
#define D_MQTT "MQTT" #define D_MQTT "MQTT"
#define D_MULTI_PRESS "několikeré-stisknutí" #define D_MULTI_PRESS "několikeré-stisknutí"
#define D_NOISE "Hluk" #define D_NOISE "Hluk"
#define D_NONE "Není" #define D_NONE "Žádný"
#define D_OFF "Vypnutý" #define D_OFF "Vyp."
#define D_OFFLINE "Neaktivní" #define D_OFFLINE "Neaktivní"
#define D_OK "OK" #define D_OK "OK"
#define D_ON "Sepnutý" #define D_ON "Zap."
#define D_ONLINE "Aktivní" #define D_ONLINE "Aktivní"
#define D_PASSWORD "Heslo" #define D_PASSWORD "Heslo"
#define D_PORT "Port" #define D_PORT "Port"
@ -119,15 +119,15 @@
#define D_POWERUSAGE "Příkon" #define D_POWERUSAGE "Příkon"
#define D_PRESSURE "Tlak" #define D_PRESSURE "Tlak"
#define D_PRESSUREATSEALEVEL "Tlak na úrovni hladiny moře" #define D_PRESSUREATSEALEVEL "Tlak na úrovni hladiny moře"
#define D_PROGRAM_FLASH_SIZE "Velikost flash programu" #define D_PROGRAM_FLASH_SIZE "Velikost paměti flash"
#define D_PROGRAM_SIZE "Velikost programu" #define D_PROGRAM_SIZE "Velikost programu"
#define D_PROJECT "Projekt" #define D_PROJECT "Projekt"
#define D_RECEIVED "Obdržený" #define D_RECEIVED "Přijatý"
#define D_RESTART "Restart" #define D_RESTART "Restart"
#define D_RESTARTING "Restartování" #define D_RESTARTING "Restartování"
#define D_RESTART_REASON "Příčina restartu" #define D_RESTART_REASON "Příčina restartu"
#define D_RESTORE "Načtený" #define D_RESTORE "Obnovit"
#define D_RETAINED "Uloženo" #define D_RETAINED "Zachováno"
#define D_SAVE "Ulož" #define D_SAVE "Ulož"
#define D_SENSOR "Sensor" #define D_SENSOR "Sensor"
#define D_SSID "SSID" #define D_SSID "SSID"
@ -137,8 +137,8 @@
#define D_SUBNET_MASK "Maska podsítě" #define D_SUBNET_MASK "Maska podsítě"
#define D_SUBSCRIBE_TO "Přihlaš se do" #define D_SUBSCRIBE_TO "Přihlaš se do"
#define D_SUCCESSFUL "úspěšné." #define D_SUCCESSFUL "úspěšné."
#define D_SUNRISE "Sunrise" #define D_SUNRISE "Svítání"
#define D_SUNSET "Sunset" #define D_SUNSET "Soumrak"
#define D_TEMPERATURE "Teplota" #define D_TEMPERATURE "Teplota"
#define D_TO "do" #define D_TO "do"
#define D_TOGGLE "Přepni" #define D_TOGGLE "Přepni"
@ -154,18 +154,18 @@
#define D_UV_LEVEL "úroveň UV" #define D_UV_LEVEL "úroveň UV"
#define D_VERSION "Verze" #define D_VERSION "Verze"
#define D_VOLTAGE "Napětí" #define D_VOLTAGE "Napětí"
#define D_WARMLIGHT "Ohřev" #define D_WARMLIGHT "Teplé světlo"
#define D_WEB_SERVER "Web Server" #define D_WEB_SERVER "Web Server"
// sonoff.ino // sonoff.ino
#define D_WARNING_MINIMAL_VERSION "WARNING Tato verze nepodporuje trvalé nastavení" #define D_WARNING_MINIMAL_VERSION "UPOZORNĚNÍ Tato verze nepodporuje trvalé nastavení"
#define D_LEVEL_10 "úroveň 1-0" #define D_LEVEL_10 "úroveň 1-0"
#define D_LEVEL_01 "úroveň 0-1" #define D_LEVEL_01 "úroveň 0-1"
#define D_SERIAL_LOGGING_DISABLED "Logování na sériovém portu ukončeno" #define D_SERIAL_LOGGING_DISABLED "Logování na sériovém portu ukončeno"
#define D_SYSLOG_LOGGING_REENABLED "Obnoven zápis do Syslog" #define D_SYSLOG_LOGGING_REENABLED "Obnoven zápis do Syslog"
#define D_SET_BAUDRATE_TO "Nastavení rychlosti přenosu na" #define D_SET_BAUDRATE_TO "Nastavení rychlosti přenosu na"
#define D_RECEIVED_TOPIC "Obdržený topic" #define D_RECEIVED_TOPIC "Přijatý topic"
#define D_DATA_SIZE "Velikost dat" #define D_DATA_SIZE "Velikost dat"
#define D_ANALOG_INPUT "Analogový vstup" #define D_ANALOG_INPUT "Analogový vstup"
@ -228,13 +228,13 @@
#define D_RESTORE_CONFIGURATION "Obnovení nastavení" #define D_RESTORE_CONFIGURATION "Obnovení nastavení"
#define D_MAIN_MENU "Hlavní menu" #define D_MAIN_MENU "Hlavní menu"
#define D_MODULE_PARAMETERS "Parametry modulu" #define D_MODULE_PARAMETERS "Nastavení modulu"
#define D_MODULE_TYPE "Typ modulu" #define D_MODULE_TYPE "Typ modulu"
#define D_GPIO "GPIO" #define D_GPIO "GPIO"
#define D_SERIAL_IN "Serial In" #define D_SERIAL_IN "Serial In"
#define D_SERIAL_OUT "Serial Out" #define D_SERIAL_OUT "Serial Out"
#define D_WIFI_PARAMETERS "Parametry WiFi" #define D_WIFI_PARAMETERS "Nastavení WiFi"
#define D_SCAN_FOR_WIFI_NETWORKS "Scan sítí WiFi" #define D_SCAN_FOR_WIFI_NETWORKS "Scan sítí WiFi"
#define D_SCAN_DONE "Scan dokončen" #define D_SCAN_DONE "Scan dokončen"
#define D_NO_NETWORKS_FOUND "Síť nebyla nalezena" #define D_NO_NETWORKS_FOUND "Síť nebyla nalezena"
@ -250,11 +250,11 @@
#define D_AP2_SSID "AP2 SSID" #define D_AP2_SSID "AP2 SSID"
#define D_AP2_PASSWORD "Heslo AP2" #define D_AP2_PASSWORD "Heslo AP2"
#define D_MQTT_PARAMETERS "Parametry MQTT" #define D_MQTT_PARAMETERS "Nastavení MQTT"
#define D_CLIENT "Klient" #define D_CLIENT "Klient"
#define D_FULL_TOPIC "Celý topic" #define D_FULL_TOPIC "Celý topic"
#define D_LOGGING_PARAMETERS "Volby logování" #define D_LOGGING_PARAMETERS "Volba logování"
#define D_SERIAL_LOG_LEVEL "Seriová úroveň logu" #define D_SERIAL_LOG_LEVEL "Seriová úroveň logu"
#define D_WEB_LOG_LEVEL "Webová úroveň logu" #define D_WEB_LOG_LEVEL "Webová úroveň logu"
#define D_SYS_LOG_LEVEL "Systemová úroveň logu" #define D_SYS_LOG_LEVEL "Systemová úroveň logu"
@ -263,7 +263,7 @@
#define D_SYSLOG_PORT "Syslog port" #define D_SYSLOG_PORT "Syslog port"
#define D_TELEMETRY_PERIOD "Interval telemetrie" #define D_TELEMETRY_PERIOD "Interval telemetrie"
#define D_OTHER_PARAMETERS "Jiné parametry" #define D_OTHER_PARAMETERS "Další nastavení"
#define D_WEB_ADMIN_PASSWORD "Heslo Web administrátora" #define D_WEB_ADMIN_PASSWORD "Heslo Web administrátora"
#define D_MQTT_ENABLE "MQTT aktivní" #define D_MQTT_ENABLE "MQTT aktivní"
#define D_FRIENDLY_NAME "Friendly Name" #define D_FRIENDLY_NAME "Friendly Name"
@ -346,7 +346,7 @@
#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_05_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Parametry 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"
#define D_DOMOTICZ_SWITCH_IDX "Spinac idx" #define D_DOMOTICZ_SWITCH_IDX "Spinac idx"
@ -363,19 +363,19 @@
#define D_DOMOTICZ_UPDATE_TIMER "Aktualizace stopek" #define D_DOMOTICZ_UPDATE_TIMER "Aktualizace stopek"
// xdrv_09_timers.ino // xdrv_09_timers.ino
#define D_CONFIGURE_TIMER "Configure Timer" #define D_CONFIGURE_TIMER "Nastavení Časovače"
#define D_TIMER_PARAMETERS "Timer parameters" #define D_TIMER_PARAMETERS "Časovač"
#define D_TIMER_ARM "Arm" #define D_TIMER_ARM "Zajistit"
#define D_TIMER_TIME "Time" #define D_TIMER_TIME "Čas"
#define D_TIMER_DAYS "Days" #define D_TIMER_DAYS "Dny"
#define D_TIMER_REPEAT "Repeat" #define D_TIMER_REPEAT "Opakovat"
#define D_TIMER_OUTPUT "Output" #define D_TIMER_OUTPUT "Výstup"
#define D_TIMER_POWER "Power" #define D_TIMER_POWER "Napájení"
// xdrv_03_energy.ino // xdrv_03_energy.ino
#define D_ENERGY_TODAY "Energie Dnes" #define D_ENERGY_TODAY "Spotřeba Dnes"
#define D_ENERGY_YESTERDAY "Energie Včera" #define D_ENERGY_YESTERDAY "Spotřeba Včera"
#define D_ENERGY_TOTAL "Energie Součet" #define D_ENERGY_TOTAL "Celková spotřeba"
// xsns_05_ds18b20.ino // xsns_05_ds18b20.ino
#define D_SENSOR_BUSY "Sensor DS18x20 obsazen" #define D_SENSOR_BUSY "Sensor DS18x20 obsazen"
@ -384,19 +384,19 @@
// xsns_06_dht.ino // xsns_06_dht.ino
#define D_TIMEOUT_WAITING_FOR "Čekání na" #define D_TIMEOUT_WAITING_FOR "Čekání na"
#define D_START_SIGNAL_LOW "signál, startovní nízký" #define D_START_SIGNAL_LOW "nízký startovní signál"
#define D_START_SIGNAL_HIGH "signál, startovní vysoký" #define D_START_SIGNAL_HIGH "vysoký startovní signál"
#define D_PULSE "puls" #define D_PULSE "impuls"
#define D_CHECKSUM_FAILURE "Chybný kontrolní součet" #define D_CHECKSUM_FAILURE "Chybný kontrolní součet"
// xsns_07_sht1x.ino // xsns_07_sht1x.ino
#define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor neobdržel pžíkaz ACK" #define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor neobdržel příkaz ACK"
#define D_SHT1X_FOUND "SHT1X nalezen" #define D_SHT1X_FOUND "SHT1X nalezen"
// xsns_18_pms5003.ino // xsns_18_pms5003.ino
#define D_STANDARD_CONCENTRATION "CF-1 PM" // Standard Particle CF-1 Particle Matter #define D_STANDARD_CONCENTRATION "CF-1 PM" // Standard Particle CF-1 Particle Matter
#define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter #define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter
#define D_PARTICALS_BEYOND "Particals" #define D_PARTICALS_BEYOND "částic"
// sonoff_template.h // sonoff_template.h
#define D_SENSOR_NONE "Není" #define D_SENSOR_NONE "Není"
@ -409,11 +409,11 @@
#define D_SENSOR_WS2812 "WS2812" #define D_SENSOR_WS2812 "WS2812"
#define D_SENSOR_IRSEND "IRsend" #define D_SENSOR_IRSEND "IRsend"
#define D_SENSOR_SWITCH "Spínač" // Suffix "1" #define D_SENSOR_SWITCH "Spínač" // Suffix "1"
#define D_SENSOR_BUTTON "Tlačít" // Suffix "1" #define D_SENSOR_BUTTON "Tlačítko" // Suffix "1"
#define D_SENSOR_RELAY "Relé" // Suffix "1i" #define D_SENSOR_RELAY "Relé" // Suffix "1i"
#define D_SENSOR_LED "Led" // Suffix "1i" #define D_SENSOR_LED "Led" // Suffix "1i"
#define D_SENSOR_PWM "PWM" // Suffix "1", #define D_SENSOR_PWM "PWM" // Suffix "1",
#define D_SENSOR_COUNTER "Počíta" // Suffix "1" #define D_SENSOR_COUNTER "Počitadlo" // 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"
@ -431,7 +431,7 @@
// Units // Units
#define D_UNIT_AMPERE "A" #define D_UNIT_AMPERE "A"
#define D_UNIT_HOUR "Hod" #define D_UNIT_HOUR "hod"
#define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOOHM "kOhm"
#define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_KILOWATTHOUR "kWh"
#define D_UNIT_LUX "lx" #define D_UNIT_LUX "lx"
@ -440,7 +440,7 @@
#define D_UNIT_MICROSECOND "us" #define D_UNIT_MICROSECOND "us"
#define D_UNIT_MILLIAMPERE "mA" #define D_UNIT_MILLIAMPERE "mA"
#define D_UNIT_MILLISECOND "ms" #define D_UNIT_MILLISECOND "ms"
#define D_UNIT_MINUTE "Min" #define D_UNIT_MINUTE "min"
#define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_BILLION "ppb"
#define D_UNIT_PARTS_PER_DECILITER "ppd" #define D_UNIT_PARTS_PER_DECILITER "ppd"
#define D_UNIT_PARTS_PER_MILLION "ppm" #define D_UNIT_PARTS_PER_MILLION "ppm"

View File

@ -42,8 +42,8 @@
#define D_HOUR_MINUTE_SEPARATOR ":" #define D_HOUR_MINUTE_SEPARATOR ":"
#define D_MINUTE_SECOND_SEPARATOR ":" #define D_MINUTE_SECOND_SEPARATOR ":"
#define D_DAY3LIST "SonMonDieMitDonFriSam" #define D_DAY3LIST "So Mo Di Mi Do Fr Sa "
#define D_MONTH3LIST "JanFebMaeAprMaiJunJulAugSepOktNovDez" #define D_MONTH3LIST "JanFebMärAprMaiJunJulAugSepOktNovDez"
// Non JSON decimal separator // Non JSON decimal separator
#define D_DECIMAL_SEPARATOR "." #define D_DECIMAL_SEPARATOR "."
@ -74,7 +74,7 @@
#define D_DARKLIGHT "dunkel" #define D_DARKLIGHT "dunkel"
#define D_DEBUG "debug" #define D_DEBUG "debug"
#define D_DISABLED "deaktiviert" #define D_DISABLED "deaktiviert"
#define D_DNS_SERVER "DNS Server" #define D_DNS_SERVER "DNS-Server"
#define D_DONE "erledigt" #define D_DONE "erledigt"
#define D_DST_TIME "DST" #define D_DST_TIME "DST"
#define D_ECO2 "eCO2" #define D_ECO2 "eCO2"
@ -85,7 +85,7 @@
#define D_FAHRENHEIT "Fahrenheit" #define D_FAHRENHEIT "Fahrenheit"
#define D_FAILED "fehlgeschlagen" #define D_FAILED "fehlgeschlagen"
#define D_FALLBACK "Fallback" #define D_FALLBACK "Fallback"
#define D_FALLBACK_TOPIC "Fallback topic" #define D_FALLBACK_TOPIC "Fallback-Topic"
#define D_FALSE "falsch" #define D_FALSE "falsch"
#define D_FILE "Datei" #define D_FILE "Datei"
#define D_FREE_MEMORY "Freier Arbeitsspeicher" #define D_FREE_MEMORY "Freier Arbeitsspeicher"
@ -100,7 +100,7 @@
#define D_INDEX "Index" #define D_INDEX "Index"
#define D_INFO "Info" #define D_INFO "Info"
#define D_INITIALIZED "initialisiert" #define D_INITIALIZED "initialisiert"
#define D_IP_ADDRESS "IP-Addresse" #define D_IP_ADDRESS "IP-Adresse"
#define D_LIGHT "Licht" #define D_LIGHT "Licht"
#define D_LWT "LWT" #define D_LWT "LWT"
#define D_MODULE "Modul" #define D_MODULE "Modul"
@ -117,8 +117,8 @@
#define D_PORT "Port" #define D_PORT "Port"
#define D_POWER_FACTOR "Leistungsfaktor" #define D_POWER_FACTOR "Leistungsfaktor"
#define D_POWERUSAGE "Leistung" #define D_POWERUSAGE "Leistung"
#define D_PRESSURE "Druck" #define D_PRESSURE "Luftdruck"
#define D_PRESSUREATSEALEVEL "MeeresDruck" #define D_PRESSUREATSEALEVEL "Luftdruck auf Meereshöhe"
#define D_PROGRAM_FLASH_SIZE "Ges. Flash Speicher" #define D_PROGRAM_FLASH_SIZE "Ges. Flash Speicher"
#define D_PROGRAM_SIZE "Ben. Flash Speicher" #define D_PROGRAM_SIZE "Ben. Flash Speicher"
#define D_PROJECT "Projekt" #define D_PROJECT "Projekt"
@ -135,10 +135,10 @@
#define D_STD_TIME "STD" #define D_STD_TIME "STD"
#define D_STOP "Stop" #define D_STOP "Stop"
#define D_SUBNET_MASK "Subnetzmaske" #define D_SUBNET_MASK "Subnetzmaske"
#define D_SUBSCRIBE_TO "subscribe to" #define D_SUBSCRIBE_TO "abonniere"
#define D_SUCCESSFUL "erfolgreich" #define D_SUCCESSFUL "erfolgreich"
#define D_SUNRISE "Sunrise" #define D_SUNRISE "Sonnenaufgang"
#define D_SUNSET "Sunset" #define D_SUNSET "Sonnenuntergang"
#define D_TEMPERATURE "Temperatur" #define D_TEMPERATURE "Temperatur"
#define D_TO "zu" #define D_TO "zu"
#define D_TOGGLE "An/Aus" #define D_TOGGLE "An/Aus"
@ -151,43 +151,43 @@
#define D_UPTIME "Laufzeit" #define D_UPTIME "Laufzeit"
#define D_USER "Benutzer" #define D_USER "Benutzer"
#define D_UTC_TIME "UTC" #define D_UTC_TIME "UTC"
#define D_UV_LEVEL "UV Level" #define D_UV_LEVEL "UV-Level"
#define D_VERSION "Version" #define D_VERSION "Version"
#define D_VOLTAGE "Spannung" #define D_VOLTAGE "Spannung"
#define D_WARMLIGHT "warm" #define D_WARMLIGHT "warm"
#define D_WEB_SERVER "Web-Server" #define D_WEB_SERVER "Web-Server"
// sonoff.ino // sonoff.ino
#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings" #define D_WARNING_MINIMAL_VERSION "ACHTUNG: Diese Version unterstützt keine persistenten Einstellungen"
#define D_LEVEL_10 "level 1-0" #define D_LEVEL_10 "level 1-0"
#define D_LEVEL_01 "level 0-1" #define D_LEVEL_01 "level 0-1"
#define D_SERIAL_LOGGING_DISABLED "Serielles logging deaktiviert" #define D_SERIAL_LOGGING_DISABLED "Serielles Logging deaktiviert"
#define D_SYSLOG_LOGGING_REENABLED "Syslog logging reaktiviert" #define D_SYSLOG_LOGGING_REENABLED "Syslog-Logging aktiviert"
#define D_SET_BAUDRATE_TO "Baudrate eingestellt auf" #define D_SET_BAUDRATE_TO "Setze Baudrate auf"
#define D_RECEIVED_TOPIC "empfangenes topic" #define D_RECEIVED_TOPIC "empfangenes topic"
#define D_DATA_SIZE "Datengröße" #define D_DATA_SIZE "Datengröße"
#define D_ANALOG_INPUT "Analog" #define D_ANALOG_INPUT "Analog"
// support.ino // support.ino
#define D_OSWATCH "osWatch" #define D_OSWATCH "osWatch"
#define D_BLOCKED_LOOP "Blocked Loop" #define D_BLOCKED_LOOP "Schleife blockiert."
#define D_WPS_FAILED_WITH_STATUS "WPS fehlgeschlagen mit Status" #define D_WPS_FAILED_WITH_STATUS "WPS fehlgeschlagen mit Status"
#define D_ACTIVE_FOR_3_MINUTES "aktiv für 3 Minuten" #define D_ACTIVE_FOR_3_MINUTES "aktiv für 3 Minuten"
#define D_FAILED_TO_START "Starten fehlgeschlagen" #define D_FAILED_TO_START "Starten fehlgeschlagen"
#define D_PATCH_ISSUE_2186 "Patch-Problem 2186" #define D_PATCH_ISSUE_2186 "Repariere Problem #2186"
#define D_CONNECTING_TO_AP "verbinden mit AP" #define D_CONNECTING_TO_AP "verbinden mit AP"
#define D_IN_MODE "in Modus" #define D_IN_MODE "in Modus"
#define D_CONNECT_FAILED_NO_IP_ADDRESS "Verbindung fehlgeschlagen da keine IP-Adresse zugeteilt wurde" #define D_CONNECT_FAILED_NO_IP_ADDRESS "Verbindung fehlgeschlagen, da keine IP-Adresse zugeteilt wurde"
#define D_CONNECT_FAILED_AP_NOT_REACHED "Verbindung fehlgeschlagen da AP nicht erreicht werden konnte" #define D_CONNECT_FAILED_AP_NOT_REACHED "Verbindung fehlgeschlagen, da AP nicht erreicht werden konnte"
#define D_CONNECT_FAILED_WRONG_PASSWORD "Verbindung fehlgeschlagen mit AP weil das Passwort falsch ist" #define D_CONNECT_FAILED_WRONG_PASSWORD "Verbindung fehlgeschlagen, da das Passwort falsch ist"
#define D_CONNECT_FAILED_AP_TIMEOUT "Verbindung fehlgeschlagen da der AP nicht antwortet (timeout)" #define D_CONNECT_FAILED_AP_TIMEOUT "Verbindung fehlgeschlagen, da der AP nicht antwortet (timeout)"
#define D_ATTEMPTING_CONNECTION "Verbindungsversuch..." #define D_ATTEMPTING_CONNECTION "Verbindungsversuch..."
#define D_CHECKING_CONNECTION "Prüfe Verbindung..." #define D_CHECKING_CONNECTION "Prüfe Verbindung..."
#define D_QUERY_DONE "Suchanfrage abgeschlossen. MQTT-Services gefunden" #define D_QUERY_DONE "Suchanfrage abgeschlossen. MQTT-Services gefunden"
#define D_MQTT_SERVICE_FOUND "MQTT-Service gefunden bei" #define D_MQTT_SERVICE_FOUND "MQTT-Service gefunden bei"
#define D_FOUND_AT "gefunden bei" #define D_FOUND_AT "gefunden bei"
#define D_SYSLOG_HOST_NOT_FOUND "Syslog Host nicht gefunden" #define D_SYSLOG_HOST_NOT_FOUND "Syslog-Host nicht gefunden"
// settings.ino // settings.ino
#define D_SAVED_TO_FLASH_AT "in Flash gespeichert am" #define D_SAVED_TO_FLASH_AT "in Flash gespeichert am"
@ -228,40 +228,40 @@
#define D_RESTORE_CONFIGURATION "Konfiguration wiederherstellen" #define D_RESTORE_CONFIGURATION "Konfiguration wiederherstellen"
#define D_MAIN_MENU "Hauptmenü" #define D_MAIN_MENU "Hauptmenü"
#define D_MODULE_PARAMETERS "Geräte Einstellungen" #define D_MODULE_PARAMETERS "Geräte-Einstellungen"
#define D_MODULE_TYPE "Geräte Typ" #define D_MODULE_TYPE "Gerätetyp"
#define D_GPIO "GPIO" #define D_GPIO "GPIO"
#define D_SERIAL_IN "serieller Eingang [serial in]" #define D_SERIAL_IN "serieller Eingang [serial in]"
#define D_SERIAL_OUT "serieller Ausgang [serial out]" #define D_SERIAL_OUT "serieller Ausgang [serial out]"
#define D_WIFI_PARAMETERS "WLAN Einstellungen" #define D_WIFI_PARAMETERS "WLAN-Einstellungen"
#define D_SCAN_FOR_WIFI_NETWORKS "WLAN-Netzwerk suchen und auswählen" #define D_SCAN_FOR_WIFI_NETWORKS "WLAN-Netzwerk suchen und auswählen"
#define D_SCAN_DONE "Suche abgeschlossen" #define D_SCAN_DONE "Suche abgeschlossen"
#define D_NO_NETWORKS_FOUND "Keine Netzwerke gefunden" #define D_NO_NETWORKS_FOUND "Keine Netzwerke gefunden"
#define D_REFRESH_TO_SCAN_AGAIN "Aktualisieren um erneut zu suchen" #define D_REFRESH_TO_SCAN_AGAIN "Aktualisieren, um erneut zu suchen"
#define D_DUPLICATE_ACCESSPOINT "AccessPoint duplizieren" #define D_DUPLICATE_ACCESSPOINT "AccessPoint duplizieren"
#define D_SKIPPING_LOW_QUALITY "überspringe wegen niedriger Qualität" #define D_SKIPPING_LOW_QUALITY "überspringe wegen niedriger Qualität"
#define D_RSSI "RSSI" #define D_RSSI "RSSI"
#define D_WEP "WEP" #define D_WEP "WEP"
#define D_WPA_PSK "WPA PSK" #define D_WPA_PSK "WPA-PSK"
#define D_WPA2_PSK "WPA2 PSK" #define D_WPA2_PSK "WPA2-PSK"
#define D_AP1_SSID "WLAN 1 - SSID" #define D_AP1_SSID "WLAN 1 - SSID"
#define D_AP1_PASSWORD "WLAN 1 - Passwort" #define D_AP1_PASSWORD "WLAN 1 - Passwort"
#define D_AP2_SSID "WLAN 2 - SSID" #define D_AP2_SSID "WLAN 2 - SSID"
#define D_AP2_PASSWORD "WLAN 2 - Passwort" #define D_AP2_PASSWORD "WLAN 2 - Passwort"
#define D_MQTT_PARAMETERS "MQTT Einstellungen" #define D_MQTT_PARAMETERS "MQTT-Einstellungen"
#define D_CLIENT "client" #define D_CLIENT "client"
#define D_FULL_TOPIC "full topic" #define D_FULL_TOPIC "full topic"
#define D_LOGGING_PARAMETERS "Logging Einstellungen" #define D_LOGGING_PARAMETERS "Logging-Einstellungen"
#define D_SERIAL_LOG_LEVEL "Seriell Log level" #define D_SERIAL_LOG_LEVEL "Seriell-Log Level"
#define D_WEB_LOG_LEVEL "Web Log level" #define D_WEB_LOG_LEVEL "Web-Log Level"
#define D_SYS_LOG_LEVEL "Sys Log level" #define D_SYS_LOG_LEVEL "Sys-Log Level"
#define D_MORE_DEBUG "More debug" #define D_MORE_DEBUG "More debug"
#define D_SYSLOG_HOST "Sys Log Host" #define D_SYSLOG_HOST "Sys-Log Host"
#define D_SYSLOG_PORT "Sys Log Port" #define D_SYSLOG_PORT "Sys-Log Port"
#define D_TELEMETRY_PERIOD "Telemetry period" #define D_TELEMETRY_PERIOD "Telemetrieperiode"
#define D_OTHER_PARAMETERS "Sonstige Einstellungen" #define D_OTHER_PARAMETERS "Sonstige Einstellungen"
#define D_WEB_ADMIN_PASSWORD "Passwort für Web Oberfläche" #define D_WEB_ADMIN_PASSWORD "Passwort für Web Oberfläche"
@ -298,7 +298,7 @@
#define D_UPGRADE_BY_WEBSERVER "Update über Web-Server" #define D_UPGRADE_BY_WEBSERVER "Update über Web-Server"
#define D_OTA_URL "OTA-URL" #define D_OTA_URL "OTA-URL"
#define D_START_UPGRADE "Update starten" #define D_START_UPGRADE "Update starten"
#define D_UPGRADE_BY_FILE_UPLOAD "Update Datei hochladen" #define D_UPGRADE_BY_FILE_UPLOAD "Update-Datei hochladen"
#define D_UPLOAD_STARTED "Upload gestartet" #define D_UPLOAD_STARTED "Upload gestartet"
#define D_UPGRADE_STARTED "Update gestartet" #define D_UPGRADE_STARTED "Update gestartet"
#define D_UPLOAD_DONE "Upload abgeschlossen" #define D_UPLOAD_DONE "Upload abgeschlossen"
@ -315,7 +315,7 @@
#define D_ENTER_COMMAND "Befehl eingeben" #define D_ENTER_COMMAND "Befehl eingeben"
#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 "Benutzer benötigt=<Benutzername>&password=<Passwort>" #define D_NEED_USER_AND_PASSWORD "Benötige user=<Benutzername>&password=<Passwort>"
// xdrv_00_mqtt.ino // xdrv_00_mqtt.ino
#define D_FINGERPRINT "TLS-Fingerabdruck wird verifiziert..." #define D_FINGERPRINT "TLS-Fingerabdruck wird verifiziert..."
@ -340,13 +340,13 @@
#define D_HUE "Hue" #define D_HUE "Hue"
#define D_HUE_BRIDGE_SETUP "Hue-Setup" #define D_HUE_BRIDGE_SETUP "Hue-Setup"
#define D_HUE_API_NOT_IMPLEMENTED "Hue API nicht implementiert" #define D_HUE_API_NOT_IMPLEMENTED "Hue-API nicht implementiert"
#define D_HUE_API "Hue API" #define D_HUE_API "Hue-API"
#define D_HUE_POST_ARGS "Hue POST args" #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_05_domoticz.ino
#define D_DOMOTICZ_PARAMETERS "Domoticz parameters" #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"
#define D_DOMOTICZ_SWITCH_IDX "Switch idx" #define D_DOMOTICZ_SWITCH_IDX "Switch idx"
@ -364,7 +364,7 @@
// xdrv_09_timers.ino // xdrv_09_timers.ino
#define D_CONFIGURE_TIMER "Zeitplan konfigurieren" #define D_CONFIGURE_TIMER "Zeitplan konfigurieren"
#define D_TIMER_PARAMETERS "Zeitplan Einstellungen" #define D_TIMER_PARAMETERS "Zeitplan-Einstellungen"
#define D_TIMER_ARM "Aktiv" #define D_TIMER_ARM "Aktiv"
#define D_TIMER_TIME "Uhrzeit" #define D_TIMER_TIME "Uhrzeit"
#define D_TIMER_DAYS "Wochentage" #define D_TIMER_DAYS "Wochentage"
@ -383,7 +383,7 @@
#define D_SENSORS_FOUND "Sensor gefunden" #define D_SENSORS_FOUND "Sensor gefunden"
// xsns_06_dht.ino // xsns_06_dht.ino
#define D_TIMEOUT_WAITING_FOR "Timeout wartet auf" #define D_TIMEOUT_WAITING_FOR "Timeout während Warten auf"
#define D_START_SIGNAL_LOW "Startausschlag niedrig" #define D_START_SIGNAL_LOW "Startausschlag niedrig"
#define D_START_SIGNAL_HIGH "Startausschlag hoch" #define D_START_SIGNAL_HIGH "Startausschlag hoch"
#define D_PULSE "pulse" #define D_PULSE "pulse"

View File

@ -137,8 +137,8 @@
#define D_SUBNET_MASK "Máscara Subred" #define D_SUBNET_MASK "Máscara Subred"
#define D_SUBSCRIBE_TO "Suscribir a" #define D_SUBSCRIBE_TO "Suscribir a"
#define D_SUCCESSFUL "Exitosa" #define D_SUCCESSFUL "Exitosa"
#define D_SUNRISE "Sunrise" #define D_SUNRISE "Salida del Sol"
#define D_SUNSET "Sunset" #define D_SUNSET "Puesta del Sol"
#define D_TEMPERATURE "Temperatura" #define D_TEMPERATURE "Temperatura"
#define D_TO "a" #define D_TO "a"
#define D_TOGGLE "Conmutar" #define D_TOGGLE "Conmutar"

View File

@ -48,7 +48,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
uint32_t not_power_linked : 1; // bit 20 (v5.11.1f) uint32_t not_power_linked : 1; // bit 20 (v5.11.1f)
uint32_t no_power_on_check : 1; // bit 21 (v5.11.1i) uint32_t no_power_on_check : 1; // bit 21 (v5.11.1i)
uint32_t mqtt_serial : 1; // bit 22 (v5.12.0f) uint32_t mqtt_serial : 1; // bit 22 (v5.12.0f)
uint32_t spare23 : 1; uint32_t rules_enabled : 1; // bit 23 (v5.12.0j)
uint32_t spare24 : 1; uint32_t spare24 : 1;
uint32_t spare25 : 1; uint32_t spare25 : 1;
uint32_t spare26 : 1; uint32_t spare26 : 1;
@ -255,7 +255,12 @@ struct SYSCFG {
Timer timer[MAX_TIMERS]; // 670 Timer timer[MAX_TIMERS]; // 670
int latitude; // 6B0 int latitude; // 6B0
int longitude; // 6B4 int longitude; // 6B4
// 6B8 - FFF free locations
byte free_6b8[72]; // 6B8
char rules[MAX_RULE_SIZE]; // 700
// 800 - FFF free locations
} Settings; } Settings;
struct RTCMEM { struct RTCMEM {

View File

@ -927,6 +927,10 @@ void SettingsDelta()
Settings.latitude = (int)((double)LATITUDE * 1000000); Settings.latitude = (int)((double)LATITUDE * 1000000);
Settings.longitude = (int)((double)LONGITUDE * 1000000); Settings.longitude = (int)((double)LONGITUDE * 1000000);
} }
if (Settings.version < 0x050C000B) {
memset(&Settings.free_6b8, 0x00, sizeof(Settings.free_6b8));
memset(&Settings.rules, 0x00, sizeof(Settings.rules));
}
Settings.version = VERSION; Settings.version = VERSION;
SettingsSave(1); SettingsSave(1);

View File

@ -48,6 +48,7 @@ typedef unsigned long power_t; // Power (Relay) type
#define MAX_FRIENDLYNAMES 4 // Max number of Friendly names #define MAX_FRIENDLYNAMES 4 // Max number of Friendly names
#define MAX_DOMOTICZ_IDX 4 // Max number of Domoticz device, key and switch indices #define MAX_DOMOTICZ_IDX 4 // Max number of Domoticz device, key and switch indices
#define MAX_DOMOTICZ_SNS_IDX 12 // Max number of Domoticz sensors indices #define MAX_DOMOTICZ_SNS_IDX 12 // Max number of Domoticz sensors indices
#define MAX_RULE_SIZE 256 // Max number of characters in rules
#define MODULE SONOFF_BASIC // [Module] Select default model #define MODULE SONOFF_BASIC // [Module] Select default model
@ -163,7 +164,9 @@ enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_R
enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX};
enum XsnsFunctions {FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, enum XsnsFunctions {FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART,
FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR}; FUNC_COMMAND, FUNC_NTP_INIT, FUNC_NTP_SET,
FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_MQTT_DISCONNECTED, FUNC_MQTT_CONNECTED,
FUNC_SET_POWER, FUNC_SHOW_SENSOR};
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 };

View File

@ -25,7 +25,7 @@
- Select IDE Tools - Flash Size: "1M (no SPIFFS)" - Select IDE Tools - Flash Size: "1M (no SPIFFS)"
====================================================*/ ====================================================*/
#define VERSION 0x050C000A // 5.12.0j #define VERSION 0x050C000B // 5.12.0k
// Location specific includes // Location specific includes
#include <core_version.h> // Arduino_Esp8266 version information (ARDUINO_ESP8266_RELEASE and ARDUINO_ESP8266_RELEASE_2_3_0) #include <core_version.h> // Arduino_Esp8266 version information (ARDUINO_ESP8266_RELEASE and ARDUINO_ESP8266_RELEASE_2_3_0)
@ -588,6 +588,8 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
case 19: // hass_discovery case 19: // hass_discovery
case 20: // not_power_linked case 20: // not_power_linked
case 21: // no_power_on_check case 21: // no_power_on_check
// case 22: // mqtt_serial - use commands SerialSend and SerialLog
// case 23: // rules_enabled - use command Rule
bitWrite(Settings.flag.data, index, payload); bitWrite(Settings.flag.data, index, payload);
} }
if (12 == index) { // stop_flash_rotate if (12 == index) { // stop_flash_rotate
@ -1257,7 +1259,7 @@ void PublishStatus(uint8_t payload)
if (!energy_flg && (9 == payload)) payload = 99; if (!energy_flg && (9 == payload)) payload = 99;
if ((0 == payload) || (99 == payload)) { if ((0 == payload) || (99 == payload)) {
uint8_t maxfn = (devices_present > MAX_FRIENDLYNAMES) ? MAX_FRIENDLYNAMES : devices_present; uint8_t maxfn = (devices_present > MAX_FRIENDLYNAMES) ? MAX_FRIENDLYNAMES : (!devices_present) ? 1 : devices_present;
stemp[0] = '\0'; stemp[0] = '\0';
for (byte i = 0; i < maxfn; i++) { for (byte i = 0; i < maxfn; i++) {
snprintf_P(stemp, sizeof(stemp), PSTR("%s%s\"%s\"" ), stemp, (i > 0 ? "," : ""), Settings.friendlyname[i]); snprintf_P(stemp, sizeof(stemp), PSTR("%s%s\"%s\"" ), stemp, (i > 0 ? "," : ""), Settings.friendlyname[i]);
@ -1305,13 +1307,13 @@ void PublishStatus(uint8_t payload)
} }
if ((0 == payload) || (7 == payload)) { if ((0 == payload) || (7 == payload)) {
#ifdef USE_SUNRISE #if defined(USE_TIMERS) && defined(USE_SUNRISE)
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d,\"" D_JSON_SUNRISE "\":\"%s\",\"" D_JSON_SUNSET "\":\"%s\"}}"), snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d,\"" D_JSON_SUNRISE "\":\"%s\",\"" D_JSON_SUNSET "\":\"%s\"}}"),
GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), Settings.timezone, GetSun(0).c_str(), GetSun(1).c_str()); GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), Settings.timezone, GetSun(0).c_str(), GetSun(1).c_str());
#else #else
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d}}"), snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d}}"),
GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), Settings.timezone); GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), Settings.timezone);
#endif // USE_SUNRISE #endif // USE_TIMERS and USE_SUNRISE
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "7")); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "7"));
} }
@ -2423,11 +2425,10 @@ void loop()
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
PollDnsWebserver(); PollDnsWebserver();
#endif // USE_WEBSERVER
#ifdef USE_EMULATION #ifdef USE_EMULATION
if (Settings.flag2.emulation) PollUdp(); if (Settings.flag2.emulation) PollUdp();
#endif // USE_EMULATION #endif // USE_EMULATION
#endif // USE_WEBSERVER
if (millis() >= state_loop_timer) StateLoop(); if (millis() >= state_loop_timer) StateLoop();

View File

@ -617,7 +617,7 @@ void WifiConfig(uint8_t type)
if (type >= WIFI_RETRY) { // WIFI_RETRY and WIFI_WAIT if (type >= WIFI_RETRY) { // WIFI_RETRY and WIFI_WAIT
return; return;
} }
#ifdef USE_EMULATION #if defined(USE_WEBSERVER) && defined(USE_EMULATION)
UdpDisconnect(); UdpDisconnect();
#endif // USE_EMULATION #endif // USE_EMULATION
WiFi.disconnect(); // Solve possible Wifi hangs WiFi.disconnect(); // Solve possible Wifi hangs
@ -653,7 +653,7 @@ void WifiBegin(uint8_t flag)
{ {
const char kWifiPhyMode[] = " BGN"; const char kWifiPhyMode[] = " BGN";
#ifdef USE_EMULATION #if defined(USE_WEBSERVER) && defined(USE_EMULATION)
UdpDisconnect(); UdpDisconnect();
#endif // USE_EMULATION #endif // USE_EMULATION
@ -840,7 +840,7 @@ void WifiCheck(uint8_t param)
#endif // USE_EMULATION #endif // USE_EMULATION
#endif // USE_WEBSERVER #endif // USE_WEBSERVER
} else { } else {
#ifdef USE_EMULATION #if defined(USE_WEBSERVER) && defined(USE_EMULATION)
UdpDisconnect(); UdpDisconnect();
#endif // USE_EMULATION #endif // USE_EMULATION
mdns_begun = false; mdns_begun = false;
@ -1376,6 +1376,12 @@ void RtcSecond()
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "(" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "(" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"),
GetTime(0).c_str(), GetTime(2).c_str(), GetTime(3).c_str()); GetTime(0).c_str(), GetTime(2).c_str(), GetTime(3).c_str());
AddLog(LOG_LEVEL_DEBUG); AddLog(LOG_LEVEL_DEBUG);
if (local_time < 1451602800) {
XdrvCall(FUNC_NTP_SET);
} else {
XdrvCall(FUNC_NTP_SET);
}
} else { } else {
ntp_sync_minute++; // Try again in next minute ntp_sync_minute++; // Try again in next minute
} }

View File

@ -68,9 +68,9 @@
// -- Syslog -------------------------------------- // -- Syslog --------------------------------------
#define SYS_LOG_HOST "" // [LogHost] (Linux) syslog host #define SYS_LOG_HOST "" // [LogHost] (Linux) syslog host
#define SYS_LOG_PORT 514 // [LogPort] default syslog UDP port #define SYS_LOG_PORT 514 // [LogPort] default syslog UDP port
#define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] #define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE
#define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] #define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE
#define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] #define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE
// -- Ota ----------------------------------------- // -- Ota -----------------------------------------
#define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.ino.bin" // [OtaUrl] #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.ino.bin" // [OtaUrl]

View File

@ -183,12 +183,10 @@ const char HTTP_BTN_RSTRT[] PROGMEM =
"<br/><form action='rb' method='get' onsubmit='return confirm(\"" D_CONFIRM_RESTART "\");'><button>" D_RESTART "</button></form>"; "<br/><form action='rb' method='get' onsubmit='return confirm(\"" D_CONFIRM_RESTART "\");'><button>" D_RESTART "</button></form>";
const char HTTP_BTN_MENU_MODULE[] PROGMEM = const char HTTP_BTN_MENU_MODULE[] PROGMEM =
"<br/><form action='md' method='get'><button>" D_CONFIGURE_MODULE "</button></form>"; "<br/><form action='md' method='get'><button>" D_CONFIGURE_MODULE "</button></form>";
#ifdef USE_TIMERS #if defined(USE_TIMERS) && defined(USE_TIMERS_WEB)
#ifdef USE_TIMERS_WEB
const char HTTP_BTN_MENU_TIMER[] PROGMEM = const char HTTP_BTN_MENU_TIMER[] PROGMEM =
"<br/><form action='tm' method='get'><button>" D_CONFIGURE_TIMER "</button></form>"; "<br/><form action='tm' method='get'><button>" D_CONFIGURE_TIMER "</button></form>";
#endif // USE_TIMERS_WEB #endif // USE_TIMERS and USE_TIMERS_WEB
#endif // USE_TIMERS
const char HTTP_BTN_MENU_WIFI[] PROGMEM = const char HTTP_BTN_MENU_WIFI[] PROGMEM =
"<br/><form action='w0' method='get'><button>" D_CONFIGURE_WIFI "</button></form>"; "<br/><form action='w0' method='get'><button>" D_CONFIGURE_WIFI "</button></form>";
const char HTTP_BTN_MENU_MQTT[] PROGMEM = const char HTTP_BTN_MENU_MQTT[] PROGMEM =
@ -340,11 +338,9 @@ void StartWebserver(int type, IPAddress ipweb)
WebServer->on("/", HandleRoot); WebServer->on("/", HandleRoot);
WebServer->on("/cn", HandleConfiguration); WebServer->on("/cn", HandleConfiguration);
WebServer->on("/md", HandleModuleConfiguration); WebServer->on("/md", HandleModuleConfiguration);
#ifdef USE_TIMERS #if defined(USE_TIMERS) && defined(USE_TIMERS_WEB)
#ifdef USE_TIMERS_WEB
WebServer->on("/tm", HandleTimerConfiguration); WebServer->on("/tm", HandleTimerConfiguration);
#endif // USE_TIMERS_WEB #endif // USE_TIMERS and USE_TIMERS_WEB
#endif // USE_TIMERS
WebServer->on("/w1", HandleWifiConfigurationWithScan); WebServer->on("/w1", HandleWifiConfigurationWithScan);
WebServer->on("/w0", HandleWifiConfiguration); WebServer->on("/w0", HandleWifiConfiguration);
if (Settings.flag.mqtt_enabled) { if (Settings.flag.mqtt_enabled) {
@ -632,11 +628,9 @@ void HandleConfiguration()
page.replace(F("{v}"), FPSTR(S_CONFIGURATION)); page.replace(F("{v}"), FPSTR(S_CONFIGURATION));
page += FPSTR(HTTP_HEAD_STYLE); page += FPSTR(HTTP_HEAD_STYLE);
page += FPSTR(HTTP_BTN_MENU_MODULE); page += FPSTR(HTTP_BTN_MENU_MODULE);
#ifdef USE_TIMERS #if defined(USE_TIMERS) && defined(USE_TIMERS_WEB)
#ifdef USE_TIMERS_WEB
if (devices_present) page += FPSTR(HTTP_BTN_MENU_TIMER); if (devices_present) page += FPSTR(HTTP_BTN_MENU_TIMER);
#endif // USE_TIMERS_WEB #endif // USE_TIMERS and USE_TIMERS_WEB
#endif // USE_TIMERS
page += FPSTR(HTTP_BTN_MENU_WIFI); page += FPSTR(HTTP_BTN_MENU_WIFI);
if (Settings.flag.mqtt_enabled) page += FPSTR(HTTP_BTN_MENU_MQTT); if (Settings.flag.mqtt_enabled) page += FPSTR(HTTP_BTN_MENU_MQTT);
page += FPSTR(HTTP_BTN_MENU4); page += FPSTR(HTTP_BTN_MENU4);
@ -1103,13 +1097,11 @@ void HandleSaveSettings()
Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.tele_period); Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.tele_period);
AddLog(LOG_LEVEL_INFO); AddLog(LOG_LEVEL_INFO);
break; break;
#ifdef USE_TIMERS #if defined(USE_TIMERS) && defined(USE_TIMERS_WEB)
#ifdef USE_TIMERS_WEB
case 7: case 7:
TimerSaveSettings(); TimerSaveSettings();
break; break;
#endif // USE_TIMERS_WEB #endif // USE_TIMERS and USE_TIMERS_WEB
#endif // USE_TIMERS
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
case 4: case 4:
DomoticzSaveSettings(); DomoticzSaveSettings();

View File

@ -316,6 +316,8 @@ void MqttDisconnected(int state)
snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CONNECT_FAILED_TO " %s:%d, rc %d. " D_RETRY_IN " %d " D_UNIT_SECOND), snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CONNECT_FAILED_TO " %s:%d, rc %d. " D_RETRY_IN " %d " D_UNIT_SECOND),
Settings.mqtt_host, Settings.mqtt_port, state, mqtt_retry_counter); Settings.mqtt_host, Settings.mqtt_port, state, mqtt_retry_counter);
AddLog(LOG_LEVEL_INFO); AddLog(LOG_LEVEL_INFO);
XdrvCall(FUNC_MQTT_DISCONNECTED);
} }
void MqttConnected() void MqttConnected()
@ -371,6 +373,8 @@ void MqttConnected()
XdrvCall(FUNC_MQTT_INIT); XdrvCall(FUNC_MQTT_INIT);
} }
mqtt_initial_connection_state = 0; mqtt_initial_connection_state = 0;
XdrvCall(FUNC_MQTT_CONNECTED);
} }
#ifdef USE_MQTT_TLS #ifdef USE_MQTT_TLS
@ -418,7 +422,7 @@ void MqttReconnect()
return; return;
} }
#ifdef USE_EMULATION #if defined(USE_WEBSERVER) && defined(USE_EMULATION)
UdpDisconnect(); UdpDisconnect();
#endif // USE_EMULATION #endif // USE_EMULATION

View File

@ -17,7 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifdef USE_EMULATION #if defined(USE_WEBSERVER) && defined(USE_EMULATION)
/*********************************************************************************************\ /*********************************************************************************************\
* Belkin WeMo and Philips Hue bridge emulation * Belkin WeMo and Philips Hue bridge emulation
\*********************************************************************************************/ \*********************************************************************************************/
@ -266,7 +266,6 @@ void PollUdp()
} }
} }
#ifdef USE_WEBSERVER
/*********************************************************************************************\ /*********************************************************************************************\
* Wemo web server additions * Wemo web server additions
\*********************************************************************************************/ \*********************************************************************************************/
@ -814,6 +813,4 @@ void HandleHueApi(String *path)
else if (path->endsWith("/rules")) HueNotImplemented(path); else if (path->endsWith("/rules")) HueNotImplemented(path);
else HueGlobalConfig(path); else HueGlobalConfig(path);
} }
#endif // USE_WEBSERVER #endif // USE_WEBSERVER && USE_EMULATION
#endif // USE_EMULATION

View File

@ -105,7 +105,7 @@ void CounterShow(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_COUNTER "%d\":%s"), mqtt_data, i +1, counter); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_COUNTER "%d\":%s"), mqtt_data, i +1, counter);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (1 == dsxflg) { if ((0 == tele_period) && (1 == dsxflg)) {
DomoticzSensor(DZ_COUNT, RtcSettings.pulse_counter[i]); DomoticzSensor(DZ_COUNT, RtcSettings.pulse_counter[i]);
dsxflg++; dsxflg++;
} }

View File

@ -123,10 +123,12 @@ void SonoffScShow(boolean json)
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SonoffSC\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_HUMIDITY "\":%s,\"" D_JSON_LIGHT "\":%d,\"" D_JSON_NOISE "\":%d,\"" D_JSON_AIRQUALITY "\":%d}"), snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SonoffSC\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_HUMIDITY "\":%s,\"" D_JSON_LIGHT "\":%d,\"" D_JSON_NOISE "\":%d,\"" D_JSON_AIRQUALITY "\":%d}"),
mqtt_data, temperature, humidity, sc_value[2], sc_value[3], sc_value[4]); mqtt_data, temperature, humidity, sc_value[2], sc_value[3], sc_value[4]);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzTempHumSensor(temperature, humidity); if (0 == tele_period) {
DomoticzSensor(DZ_ILLUMINANCE, sc_value[2]); DomoticzTempHumSensor(temperature, humidity);
DomoticzSensor(DZ_COUNT, sc_value[3]); DomoticzSensor(DZ_ILLUMINANCE, sc_value[2]);
DomoticzSensor(DZ_AIRQUALITY, 500 + ((100 - sc_value[4]) * 20)); DomoticzSensor(DZ_COUNT, sc_value[3]);
DomoticzSensor(DZ_AIRQUALITY, 500 + ((100 - sc_value[4]) * 20));
}
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -197,7 +197,7 @@ void Ds18b20Show(boolean json)
if(json) { if(json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"DS18B20\":{\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, temperature); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"DS18B20\":{\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, temperature);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_TEMP, temperature); if (0 == tele_period) DomoticzSensor(DZ_TEMP, temperature);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -380,7 +380,7 @@ void Ds18x20Show(boolean json)
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_ID "\":\"%s\",\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, stemp, address, temperature); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_ID "\":\"%s\",\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, stemp, address, temperature);
} }
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (domoticz_flag) { if ((0 == tele_period) && domoticz_flag) {
DomoticzSensor(DZ_TEMP, temperature); DomoticzSensor(DZ_TEMP, temperature);
domoticz_flag = false; domoticz_flag = false;
} }

View File

@ -188,7 +188,7 @@ void Ds18x20Show(boolean json)
mqtt_data, stemp, i +1, ds18x20_types, Ds18x20Addresses(i).c_str(), temperature); mqtt_data, stemp, i +1, ds18x20_types, Ds18x20Addresses(i).c_str(), temperature);
strcpy(stemp, ","); strcpy(stemp, ",");
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (1 == dsxflg) { if ((0 == tele_period) && (1 == dsxflg)) {
DomoticzSensor(DZ_TEMP, temperature); DomoticzSensor(DZ_TEMP, temperature);
} }
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ

View File

@ -226,7 +226,7 @@ void DhtShow(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, Dht[i].stype, temperature, humidity); snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, Dht[i].stype, temperature, humidity);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (!dsxflg) { if ((0 == tele_period) && !dsxflg) {
DomoticzTempHumSensor(temperature, humidity); DomoticzTempHumSensor(temperature, humidity);
dsxflg++; dsxflg++;
} }

View File

@ -199,7 +199,7 @@ void ShtShow(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, "SHT1X", temperature, humidity); snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, "SHT1X", temperature, humidity);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzTempHumSensor(temperature, humidity); if (0 == tele_period) DomoticzTempHumSensor(temperature, humidity);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -262,7 +262,7 @@ void HtuShow(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, htu_types, temperature, humidity); snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, htu_types, temperature, humidity);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzTempHumSensor(temperature, humidity); if (0 == tele_period) DomoticzTempHumSensor(temperature, humidity);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -465,7 +465,7 @@ void BmpShow(boolean json)
mqtt_data, bmp_name, temperature, (bmp_model >= 2) ? json_humidity : "", pressure, (Settings.altitude != 0) ? json_sealevel : ""); mqtt_data, bmp_name, temperature, (bmp_model >= 2) ? json_humidity : "", pressure, (Settings.altitude != 0) ? json_sealevel : "");
#endif // USE_BME680 #endif // USE_BME680
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzTempHumPressureSensor(temperature, humidity, pressure); if (0 == tele_period) DomoticzTempHumPressureSensor(temperature, humidity, pressure);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -77,7 +77,7 @@ void Bh1750Show(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"BH1750\":{\"" D_JSON_ILLUMINANCE "\":%d}"), mqtt_data, illuminance); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"BH1750\":{\"" D_JSON_ILLUMINANCE "\":%d}"), mqtt_data, illuminance);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_ILLUMINANCE, illuminance); if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, illuminance);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -82,7 +82,7 @@ void Veml6070Show(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_LEVEL "\":%d}"), mqtt_data, uvlevel); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"VEML6070\":{\"" D_JSON_UV_LEVEL "\":%d}"), mqtt_data, uvlevel);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_ILLUMINANCE, uvlevel); if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, uvlevel);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -216,8 +216,10 @@ void Ina219Show(boolean json)
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"INA219\":{\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s,\"" D_JSON_POWERUSAGE "\":%s}"), snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"INA219\":{\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s,\"" D_JSON_POWERUSAGE "\":%s}"),
mqtt_data, voltage, current, power); mqtt_data, voltage, current, power);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_VOLTAGE, voltage); if (0 == tele_period) {
DomoticzSensor(DZ_CURRENT, current); DomoticzSensor(DZ_VOLTAGE, voltage);
DomoticzSensor(DZ_CURRENT, current);
}
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -107,7 +107,7 @@ void Sht3xShow(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, types, temperature, humidity); snprintf_P(mqtt_data, sizeof(mqtt_data), JSON_SNS_TEMPHUM, mqtt_data, types, temperature, humidity);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
if (0 == i) { // We want the same first sensor to report to Domoticz in case a read is missed if ((0 == tele_period) && (0 == i)) { // We want the same first sensor to report to Domoticz in case a read is missed
DomoticzTempHumSensor(temperature, humidity); DomoticzTempHumSensor(temperature, humidity);
} }
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ

View File

@ -265,7 +265,7 @@ void MhzShow(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_CO2 "\":%d,\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, mhz_types, mhz_last_ppm, temperature); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_CO2 "\":%d,\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, mhz_types, mhz_last_ppm, temperature);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_AIRQUALITY, mhz_last_ppm); if (0 == tele_period) DomoticzSensor(DZ_AIRQUALITY, mhz_last_ppm);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -71,7 +71,7 @@ void Tsl2561Show(boolean json)
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"TSL2561\":{\"" D_JSON_ILLUMINANCE "\":%u.%03u}"), snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"TSL2561\":{\"" D_JSON_ILLUMINANCE "\":%u.%03u}"),
mqtt_data, milliLux/1000, milliLux%1000); mqtt_data, milliLux/1000, milliLux%1000);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_ILLUMINANCE, (milliLux+500)/1000); if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, (milliLux+500)/1000);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -213,7 +213,7 @@ void SenseairShow(boolean json)
} }
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_AIRQUALITY, senseair_co2); if (0 == tele_period) DomoticzSensor(DZ_AIRQUALITY, senseair_co2);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -131,9 +131,11 @@ void PmsShow(boolean json)
pms_data.pm10_env, pms_data.pm25_env, pms_data.pm100_env, pms_data.pm10_env, pms_data.pm25_env, pms_data.pm100_env,
pms_data.particles_03um, pms_data.particles_05um, pms_data.particles_10um, pms_data.particles_25um, pms_data.particles_50um, pms_data.particles_100um); pms_data.particles_03um, pms_data.particles_05um, pms_data.particles_10um, pms_data.particles_25um, pms_data.particles_50um, pms_data.particles_100um);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_COUNT, pms_data.pm10_env); // PM1 if (0 == tele_period) {
DomoticzSensor(DZ_VOLTAGE, pms_data.pm25_env); // PM2.5 DomoticzSensor(DZ_COUNT, pms_data.pm10_env); // PM1
DomoticzSensor(DZ_CURRENT, pms_data.pm100_env); // PM10 DomoticzSensor(DZ_VOLTAGE, pms_data.pm25_env); // PM2.5
DomoticzSensor(DZ_CURRENT, pms_data.pm100_env); // PM10
}
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -108,8 +108,10 @@ void NovaSdsShow(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SDS0X1\":{\"PM2.5\":%s,\"PM10\":%s}"), mqtt_data, pm2_5, pm10); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SDS0X1\":{\"PM2.5\":%s,\"PM10\":%s}"), mqtt_data, pm2_5, pm10);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_VOLTAGE, pm2_5); // PM2.5 if (0 == tele_period) {
DomoticzSensor(DZ_CURRENT, pm10); // PM10 DomoticzSensor(DZ_VOLTAGE, pm2_5); // PM2.5
DomoticzSensor(DZ_CURRENT, pm10); // PM10
}
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER
} else { } else {

View File

@ -74,7 +74,7 @@ void Sgp30Show(boolean json)
if (json) { if (json) {
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SGP30\":{\"" D_JSON_ECO2 "\":%d,\"" D_JSON_TVOC "\":%d}"), mqtt_data, sgp.eCO2, sgp.TVOC); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SGP30\":{\"" D_JSON_ECO2 "\":%d,\"" D_JSON_TVOC "\":%d}"), mqtt_data, sgp.eCO2, sgp.TVOC);
#ifdef USE_DOMOTICZ #ifdef USE_DOMOTICZ
DomoticzSensor(DZ_AIRQUALITY, sgp.eCO2); if (0 == tele_period) DomoticzSensor(DZ_AIRQUALITY, sgp.eCO2);
#endif // USE_DOMOTICZ #endif // USE_DOMOTICZ
} else { } else {
#ifdef USE_WEBSERVER #ifdef USE_WEBSERVER