From b3e5e35cea6d6e05e8ddd1a14d569d983f44cf98 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 11 Dec 2018 18:00:12 +0100 Subject: [PATCH] Add more support * Add support for decoding Theo V2 sensors as documented on https://sidweb.nl using 434MHz RF sensor receiver * Add support for decoding Alecto V2 sensors like ACH2010, WS3000 and DKW2012 using 868MHz RF sensor receiver * Add support for Manzoku Power Strip (#4590) --- sonoff/_changelog.ino | 4 ++- sonoff/language/bg-BG.h | 2 ++ sonoff/language/cs-CZ.h | 2 ++ sonoff/language/de-DE.h | 2 ++ sonoff/language/el-GR.h | 2 ++ sonoff/language/en-GB.h | 2 ++ sonoff/language/es-AR.h | 2 ++ sonoff/language/fr-FR.h | 2 ++ sonoff/language/he-HE.h | 2 ++ sonoff/language/hu-HU.h | 2 ++ sonoff/language/it-IT.h | 2 ++ sonoff/language/nl-NL.h | 2 ++ sonoff/language/pl-PL.h | 2 ++ sonoff/language/pt-BR.h | 2 ++ sonoff/language/pt-PT.h | 2 ++ sonoff/language/ru-RU.h | 2 ++ sonoff/language/sv-SE.h | 2 ++ sonoff/language/tr-TR.h | 2 ++ sonoff/language/uk-UK.h | 2 ++ sonoff/language/zh-CN.h | 2 ++ sonoff/language/zh-TW.h | 2 ++ sonoff/my_user_config.h | 6 ++-- sonoff/sonoff_template.h | 6 ++-- sonoff/xsns_37_rfsensor.ino | 71 +++++++++++++++++++++++++++---------- 24 files changed, 103 insertions(+), 24 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 4ca0e0dd798b..0f601ec0bc1b 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,6 +1,8 @@ /* 6.3.0.17 20181211 - * Add support for TheoV2 sensors as documented on https://sidweb.nl + * Add support for decoding Theo V2 sensors as documented on https://sidweb.nl using 434MHz RF sensor receiver + * Add support for decoding Alecto V2 sensors like ACH2010, WS3000 and DKW2012 using 868MHz RF sensor receiver * Add support for SDM220 (#3610) + * Add support for Manzoku Power Strip (#4590) * Enhance support for MPU6050 using DMP (#4581) * * 6.3.0.16 20181201 diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 9ed4734a865e..621a0fdb7c4e 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Размер на флаш паметта за програми" #define D_PROGRAM_SIZE "Размер на програмата" #define D_PROJECT "Проект" +#define D_RAIN "Rain" #define D_RECEIVED "Получено" #define D_RESTART "Рестарт" #define D_RESTARTING "Рестартиране" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 8bcde604b1f5..461de3a4d781 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Velikost paměti flash" #define D_PROGRAM_SIZE "Velikost programu" #define D_PROJECT "Projekt" +#define D_RAIN "Rain" #define D_RECEIVED "Přijatý" #define D_RESTART "Restart" #define D_RESTARTING "Restartování" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 21f7e5dd8326..16c3f886f081 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Ges. Flash Speicher" #define D_PROGRAM_SIZE "Ben. Flash Speicher" #define D_PROJECT "Projekt" +#define D_RAIN "Regen" #define D_RECEIVED "erhalten" #define D_RESTART "Neustart" #define D_RESTARTING "starte neu" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index e59855a24a48..2148baf42591 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Μέγεθος προγράμματος στη Flash" #define D_PROGRAM_SIZE "Μέγεθος προγράμματος" #define D_PROJECT "Έργο" +#define D_RAIN "Rain" #define D_RECEIVED "Ελήφθη" #define D_RESTART "Επανεκκίνηση" #define D_RESTARTING "Επανεκκινεί" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index a38664d2f4bb..70825c5e36bb 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Program Flash Size" #define D_PROGRAM_SIZE "Program Size" #define D_PROJECT "Project" +#define D_RAIN "Rain" #define D_RECEIVED "Received" #define D_RESTART "Restart" #define D_RESTARTING "Restarting" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 7039d66a66da..2ad9551e7167 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Tamaño de Flash de Programa" #define D_PROGRAM_SIZE "Tamaño Programa" #define D_PROJECT "Proyecto" +#define D_RAIN "Rain" #define D_RECEIVED "Recibido" #define D_RESTART "Reiniciar" #define D_RESTARTING "Reiniciando" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index a038153c9de3..312c5d015319 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Taille Flash Programme" #define D_PROGRAM_SIZE "Taille programme" #define D_PROJECT "Projet" +#define D_RAIN "Plui" #define D_RECEIVED "Reçu" #define D_RESTART "Redémarrage" #define D_RESTARTING "Redémarre" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "µm" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index 6f3612fb7c01..7dc8585db999 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "גודל תוכנית פלאש" #define D_PROGRAM_SIZE "גודל תוכנית" #define D_PROJECT "פרויקט" +#define D_RAIN "Rain" #define D_RECEIVED "התקבל" #define D_RESTART "איתחול" #define D_RESTARTING "הפעלה מחדש" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 82c911fb1770..707bb24ec5e9 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Program Flash Méret" #define D_PROGRAM_SIZE "Program Méret" #define D_PROJECT "Projekt" +#define D_RAIN "Rain" #define D_RECEIVED "Érkezett" #define D_RESTART "Újraindítás" #define D_RESTARTING "Újraindítás" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "p" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index b971d1c024a9..4e1481cecb8c 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Dimensione Flash Programma" #define D_PROGRAM_SIZE "Dimensione Programma" #define D_PROJECT "Progetto" +#define D_RAIN "Rain" #define D_RECEIVED "Ricevuto" #define D_RESTART "Riavvio" #define D_RESTARTING "Riavviando" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 73a2014482d4..3383228ed44e 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Programma Flash Grootte" #define D_PROGRAM_SIZE "Programma Grootte" #define D_PROJECT "Project" +#define D_RAIN "Regen" #define D_RECEIVED "Ontvangen" #define D_RESTART "Herstart" #define D_RESTARTING "Herstarten" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index e4728bda825d..0019c8d531c6 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Wielkość programu flash" #define D_PROGRAM_SIZE "Wielkość programu" #define D_PROJECT "Projekt" +#define D_RAIN "Rain" #define D_RECEIVED "Otrzymany" #define D_RESTART "Restart" #define D_RESTARTING "Restartowanie" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 487f4793d19f..e8e536606e3f 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Tamanho do programa na memória" #define D_PROGRAM_SIZE "Tamanho do programa" #define D_PROJECT "Projeto" +#define D_RAIN "Rain" #define D_RECEIVED "Recebido" #define D_RESTART "Reiniciar" #define D_RESTARTING "Reiniciando" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "M" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 4b2366758023..58a39fff0f0b 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Tamanho do Programa na Flash" #define D_PROGRAM_SIZE "Tamanho do Programa" #define D_PROJECT "Projeto" +#define D_RAIN "Rain" #define D_RECEIVED "Recebido" #define D_RESTART "Reiniciar" #define D_RESTARTING "A reiniciar" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index e2e6079cddaf..85813373a3b1 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Размер Flash для программ" #define D_PROGRAM_SIZE "Размер программы " #define D_PROJECT "Проект" +#define D_RAIN "Rain" #define D_RECEIVED "Получено" #define D_RESTART "Перезапуск" #define D_RESTARTING "Перезапуск" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "мкм" #define D_UNIT_MICROSECOND "мкс" #define D_UNIT_MILLIAMPERE "мА" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "мм рт.ст." #define D_UNIT_MILLISECOND "мс" #define D_UNIT_MINUTE "мин" diff --git a/sonoff/language/sv-SE.h b/sonoff/language/sv-SE.h index 9ec54c62be55..4ae68e78cb6f 100644 --- a/sonoff/language/sv-SE.h +++ b/sonoff/language/sv-SE.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Program-flashstorlek" #define D_PROGRAM_SIZE "Programstorlek" #define D_PROJECT "Projekt" +#define D_RAIN "Rain" #define D_RECEIVED "Mottagen" #define D_RESTART "Omstart" #define D_RESTARTING "Startar om" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 4425431ee22a..43acbaa776a0 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Yazılım Flash Boyutu" #define D_PROGRAM_SIZE "Yazılım Boyutu" #define D_PROJECT "Proje" +#define D_RAIN "Rain" #define D_RECEIVED "Alınan" #define D_RESTART "Yeniden Başlat" #define D_RESTARTING "Yeniden Başlatılıyor" @@ -552,6 +553,7 @@ #define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 82449858ea08..a924a6cf4eaa 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "Розмір Flash для програм" #define D_PROGRAM_SIZE "Розмір програм " #define D_PROJECT "Проект" +#define D_RAIN "Rain" #define D_RECEIVED "Отримано" #define D_RESTART "Перезавантаження" #define D_RESTARTING "Перезавантаження" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "мкм" #define D_UNIT_MICROSECOND "мкс" #define D_UNIT_MILLIAMPERE "мА" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "мс" #define D_UNIT_MINUTE "хв" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index f1ba0c93d88e..dfd5662e0482 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "固件 Flash 大小" #define D_PROGRAM_SIZE "固件大小" #define D_PROJECT "项目:" +#define D_RAIN "Rain" #define D_RECEIVED "已接收" #define D_RESTART "重启" #define D_RESTARTING "正在重启" @@ -552,6 +553,7 @@ #define D_UNIT_MICROMETER "微米" #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MILLIAMPERE "毫安" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "毫秒" #define D_UNIT_MINUTE "分" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 3a9d12336193..abc3df93d760 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -132,6 +132,7 @@ #define D_PROGRAM_FLASH_SIZE "韌體 Flash 大小" #define D_PROGRAM_SIZE "韌體大小" #define D_PROJECT "項目:" +#define D_RAIN "Rain" #define D_RECEIVED "已接收" #define D_RESTART "重啟" #define D_RESTARTING "正在重啟" @@ -553,6 +554,7 @@ #define D_UNIT_MICROMETER "微米" #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MILLIAMPERE "毫安" +#define D_UNIT_MILLIMETER "mm" #define D_UNIT_MILLIMETER_MERCURY "mmHg" #define D_UNIT_MILLISECOND "毫秒" #define D_UNIT_MINUTE "分" diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 3a35b7d3384f..32821365fd6f 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -399,9 +399,9 @@ #define USE_RC_SWITCH // Add support for RF transceiver using library RcSwitch (+2k7 code, 460 iram) -//#define USE_RF_SENSOR // Add support for RF (434MHz or 868MHz) receiver (+2k code) -// #define USE_THEO_V2 // Add support for 434MHz Theo V2 sensors as documented on https://sidweb.nl -// #define USE_ALECTO_V2 // Add support for 868MHz Alecto V2 sensors like ACH2010, WS3000 and DKW2012 +//#define USE_RF_SENSOR // Add support for RF sensor receiver (434MHz or 868MHz) (+0k8 code) +// #define USE_THEO_V2 // Add support for decoding Theo V2 sensors as documented on https://sidweb.nl using 434MHz RF sensor receiver (+1k4 code) +// #define USE_ALECTO_V2 // Add support for decoding Alecto V2 sensors like ACH2010, WS3000 and DKW2012 using 868MHz RF sensor receiver (+1k7 code) /*********************************************************************************************\ * Debug features are only supported in development branch diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 1177d0f3d554..91eec21c7c37 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -1327,14 +1327,16 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage 0, 0, 0 }, - { "Manzoku strip", // "MANZOKU" labeled power strip, EU version + { "Manzoku strip", // "MANZOKU" labeled power strip, EU version + // https://www.amazon.de/Steckdosenleiste-AOFO-Mehrfachsteckdose-Überspannungsschutz-Sprachsteuerung/dp/B07GBSD11P/ + // https://www.amazon.de/Steckdosenleiste-Geekbes-USB-Anschluss-Kompatibel-gesteuert/dp/B078W23BW9/ 0, // GPIO00 0, // GPIO01 Serial RXD 0, GPIO_KEY1, // GPIO03 Serial TXD + Button GPIO_REL2, // GPIO04 Relay 2 GPIO_REL1, // GPIO05 Relay 1 - 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, // Flash connection GPIO_REL3, // GPIO12 Relay 3 GPIO_REL4, // GPIO13 Relay 4 GPIO_USER, // GPIO14 diff --git a/sonoff/xsns_37_rfsensor.ino b/sonoff/xsns_37_rfsensor.ino index 63c567839c43..4829a71b1730 100644 --- a/sonoff/xsns_37_rfsensor.ino +++ b/sonoff/xsns_37_rfsensor.ino @@ -312,7 +312,7 @@ void RfSnsTheoV2Show(boolean json) mqtt_data, sensor, temperature, humidity, voltage); if ((0 == tele_period) && !sensor_once) { #ifdef USE_DOMOTICZ - DomoticzTempHumSensor(temperature, humidity); + DomoticzTempHumSensor(temperature, humidity); // #endif // USE_DOMOTICZ #ifdef USE_KNX KnxSensor(KNX_TEMPERATURE, temp); @@ -384,6 +384,25 @@ void RfSnsTheoV2Show(boolean json) #define RFSNS_ACH2010_MIN_PULSECOUNT 160 // reduce this value (144?) in case of bad reception #define RFSNS_ACH2010_MAX_PULSECOUNT 160 +#define D_ALECTOV2 "AlectoV2" + +const char kAlectoV2Directions[] PROGMEM = D_TX20_NORTH "|" + D_TX20_NORTH D_TX20_NORTH D_TX20_EAST "|" + D_TX20_NORTH D_TX20_EAST "|" + D_TX20_EAST D_TX20_NORTH D_TX20_EAST "|" + D_TX20_EAST "|" + D_TX20_EAST D_TX20_SOUTH D_TX20_EAST "|" + D_TX20_SOUTH D_TX20_EAST "|" + D_TX20_SOUTH D_TX20_SOUTH D_TX20_EAST "|" + D_TX20_SOUTH "|" + D_TX20_SOUTH D_TX20_SOUTH D_TX20_WEST "|" + D_TX20_SOUTH D_TX20_WEST "|" + D_TX20_WEST D_TX20_SOUTH D_TX20_WEST "|" + D_TX20_WEST "|" + D_TX20_WEST D_TX20_NORTH D_TX20_WEST "|" + D_TX20_NORTH D_TX20_WEST "|" + D_TX20_NORTH D_TX20_NORTH D_TX20_WEST; + typedef struct { uint32_t time; float temp; @@ -407,7 +426,7 @@ boolean RfSnsAnalyzeAlectov2() byte c = 0; byte rfbit; - byte data[9]; + byte data[9] = { 0 }; byte msgtype = 0; byte rc = 0; int temp; @@ -447,6 +466,10 @@ boolean RfSnsAnalyzeAlectov2() rfsns_raw_signal.Repeats = 1; // het is een herhalend signaal. Bij ontvangst herhalingen onderdukken +// Test set +// rfsns_raw_signal.Number = RFSNS_DKW2012_PULSECOUNT; // DKW2012 +// data[8] = 11; // WSW + factor = 1.22; // (1.08) // atime = rfsns_raw_signal.Time - rfsns_alecto_time; // if ((atime > 10000) && (atime < 60000)) factor = (float)60000 / atime; @@ -454,7 +477,7 @@ boolean RfSnsAnalyzeAlectov2() // Serial.printf("atime %d, rfsns_alecto_time %d\n", atime, rfsns_alecto_time); rfsns_alecto_v2.time = LocalTime(); - rfsns_alecto_v2.type = (rfsns_raw_signal.Number == RFSNS_DKW2012_PULSECOUNT); + rfsns_alecto_v2.type = (RFSNS_DKW2012_PULSECOUNT == rfsns_raw_signal.Number); rfsns_alecto_v2.temp = (float)(((data[1] & 0x3) * 256 + data[2]) - 400) / 10; rfsns_alecto_v2.humi = data[3]; uint16_t rain = (data[6] * 256) + data[7]; @@ -470,7 +493,7 @@ boolean RfSnsAnalyzeAlectov2() rfsns_alecto_v2.wdir = data[8] & 0xf; } - snprintf_P(log_data, sizeof(log_data), PSTR("RFS: AlectoV2, ChkCalc %d, Chksum %d, rc %d, Temp %d, Hum %d, Rain %d, Wind %d, Gust %d, Dir %d, Factor %s"), + snprintf_P(log_data, sizeof(log_data), PSTR("RFS: " D_ALECTOV2 ", ChkCalc %d, Chksum %d, rc %d, Temp %d, Hum %d, Rain %d, Wind %d, Gust %d, Dir %d, Factor %s"), checksumcalc, checksum, rc, ((data[1] & 0x3) * 256 + data[2]) - 400, data[3], (data[6] * 256) + data[7], data[4], data[5], data[8] & 0xf, dtostrfd(factor, 3, buf1)); AddLog(LOG_LEVEL_DEBUG); @@ -505,16 +528,22 @@ uint8_t RfSnsAlectoCRC8(uint8_t *addr, uint8_t len) return crc; } +#ifdef USE_WEBSERVER +const char HTTP_SNS_ALECTOV2[] PROGMEM = "%s" + "{s}" D_ALECTOV2 " " D_RAIN "{m}%s " D_UNIT_MILLIMETER "{e}" + "{s}" D_ALECTOV2 " " D_TX20_WIND_SPEED "{m}%s " D_UNIT_KILOMETER_PER_HOUR "{e}" + "{s}" D_ALECTOV2 " " D_TX20_WIND_SPEED_MAX "{m}%s " D_UNIT_KILOMETER_PER_HOUR "{e}"; +const char HTTP_SNS_ALECTOV2_WDIR[] PROGMEM = "%s" + "{s}" D_ALECTOV2 " " D_TX20_WIND_DIRECTION "{m}%s{e}"; +#endif + void RfSnsAlectoV2Show(boolean json) { if (rfsns_alecto_v2.time) { - char sensor[10]; - snprintf_P(sensor, sizeof(sensor), PSTR("AlectoV2")); - if (rfsns_alecto_v2.time < LocalTime() - RFSNS_VALID_WINDOW) { if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_RFRECEIVED "\":\"%s\"}"), - mqtt_data, sensor, GetDT(rfsns_alecto_v2.time).c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_ALECTOV2 "\":{\"" D_JSON_RFRECEIVED "\":\"%s\"}"), + mqtt_data, GetDT(rfsns_alecto_v2.time).c_str()); } } else { float temp = ConvertTemp(rfsns_alecto_v2.temp); @@ -529,23 +558,29 @@ void RfSnsAlectoV2Show(boolean json) dtostrfd(rfsns_alecto_v2.wind, 2, wind); char gust[10]; dtostrfd(rfsns_alecto_v2.gust, 2, gust); + char wdir[4]; + char direction[20]; + if (rfsns_alecto_v2.type) { + GetTextIndexed(wdir, sizeof(wdir), rfsns_alecto_v2.wdir, kAlectoV2Directions); + snprintf_P(direction, sizeof(direction), PSTR(",\"Direction\":\"%s\""), wdir); + } if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_HUMIDITY "\":%s, \"Rain\":%s,\"Wind\":%s,\"Gust\":%s}"), - mqtt_data, sensor, temperature, humidity, rain, wind, gust); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_ALECTOV2 "\":{\"" D_JSON_TEMPERATURE "\":%s,\"" D_JSON_HUMIDITY "\":%s,\"Rain\":%s,\"Wind\":%s,\"Gust\":%s%s}"), + mqtt_data, temperature, humidity, rain, wind, gust, (rfsns_alecto_v2.type) ? direction : ""); if (0 == tele_period) { #ifdef USE_DOMOTICZ - DomoticzTempHumSensor(temperature, humidity); + // Use a rule #endif // USE_DOMOTICZ -#ifdef USE_KNX -// KnxSensor(KNX_TEMPERATURE, temp); -// KnxSensor(KNX_HUMIDITY, humi); -#endif // USE_KNX } #ifdef USE_WEBSERVER } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, sensor, temperature, TempUnit()); - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_HUM, mqtt_data, sensor, humidity); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, D_ALECTOV2, temperature, TempUnit()); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_HUM, mqtt_data, D_ALECTOV2, humidity); + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ALECTOV2, mqtt_data, rain, wind, gust); + if (rfsns_alecto_v2.type) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_ALECTOV2_WDIR, mqtt_data, wdir); + } #endif // USE_WEBSERVER } }