diff --git a/code/espurna/config/arduino.h b/code/espurna/config/arduino.h index 186060d9..e7a1b021 100644 --- a/code/espurna/config/arduino.h +++ b/code/espurna/config/arduino.h @@ -61,7 +61,6 @@ //#define ARILUX_AL_LC01 //#define ARILUX_AL_LC11 //#define ARILUX_AL_LC02 -//#define WEMOS_D1_TARPUNA_SHIELD //#define GIZWITS_WITTY_CLOUD //#define EUROMATE_WIFI_STECKER_SCHUKO //#define TONBUX_POWERSTRIP02 diff --git a/code/espurna/config/hardware.h b/code/espurna/config/hardware.h index e4d96ab6..6d04594c 100644 --- a/code/espurna/config/hardware.h +++ b/code/espurna/config/hardware.h @@ -70,12 +70,6 @@ #define LED1_PIN 2 #define LED1_PIN_INVERSE 1 -#elif defined(NODEMCU_BASIC) - // Info - // Generic NodeMCU Board without any buttons or relays connected. - #define MANUFACTURER "NODEMCU" - #define DEVICE "BASIC" - #elif defined(WEMOS_D1_MINI_RELAYSHIELD) // Info @@ -102,12 +96,6 @@ #define I2C_SDA_PIN 12 // D6 #define I2C_SCL_PIN 14 // D5 -#elif defined(WEMOS_D1_TARPUNA_SHIELD) - - // Info - #define MANUFACTURER "WEMOS" - #define DEVICE "D1_TARPUNA_SHIELD" - // ----------------------------------------------------------------------------- // ESPurna // ----------------------------------------------------------------------------- @@ -130,7 +118,7 @@ #define RELAY1_TYPE RELAY_TYPE_INVERSE // LEDs - #define LED1_PIN 2 + #define LED1_PIN 5 #define LED1_PIN_INVERSE 1 // HLW8012 @@ -2359,6 +2347,23 @@ #define HLW8012_POWER_RATIO 3414290 #define HLW8012_INTERRUPT_ON FALLING +// ----------------------------------------------------------------------------- +// Generic board with Geiger Counter +// ----------------------------------------------------------------------------- + +#elif defined(GENERIC_GEIGER_COUNTER) + + // Info + #define MANUFACTURER "GENERIC" + #define DEVICE "GEIGER_COUNTER" + + // Enable Geiger Counter + #define GEIGER_SUPPORT 1 + + // Disable uneeded modules + #define ALEXA_SUPPORT 0 + #define SCHEDULER_SUPPORT 0 + // ----------------------------------------------------------------------------- // TEST boards (do not use!!) // ----------------------------------------------------------------------------- diff --git a/code/espurna/config/types.h b/code/espurna/config/types.h index b6e11d51..7d69eb25 100644 --- a/code/espurna/config/types.h +++ b/code/espurna/config/types.h @@ -300,3 +300,12 @@ #define MAGNITUDE_GEIGER_SIEVERT 24 #define MAGNITUDE_MAX 25 + +//-------------------------------------------------------------------------------- +// GPIO +//-------------------------------------------------------------------------------- + +#define GPIO_INVALID 0xFF + +#define GPIO_LOGIC_DIRECT 0 +#define GPIO_LOGIC_INVERSE 1 diff --git a/code/espurna/config/version.h b/code/espurna/config/version.h index 41b3daf3..10ddce73 100644 --- a/code/espurna/config/version.h +++ b/code/espurna/config/version.h @@ -3,4 +3,4 @@ #define APP_REVISION "d543fee" #define APP_AUTHOR "xose.perez@gmail.com" #define APP_WEBSITE "http://tinkerman.cat" -#define CFG_VERSION 3 +#define CFG_VERSION 4 diff --git a/code/espurna/debug.ino b/code/espurna/debug.ino index d6d5b888..df40b408 100644 --- a/code/espurna/debug.ino +++ b/code/espurna/debug.ino @@ -157,6 +157,10 @@ void debugWebSetup() { #endif // DEBUG_WEB_SUPPORT +bool _debugKeyCheck(const char * key) { + return (strncmp(key, "dbg", 3) == 0); +} + void debugSetup() { #if DEBUG_SERIAL_SUPPORT @@ -166,6 +170,8 @@ void debugSetup() { #endif #endif + settingsRegisterKeyCheck(_debugKeyCheck); + } // ----------------------------------------------------------------------------- diff --git a/code/espurna/ir.ino b/code/espurna/ir.ino index 148eeb9c..c32cae8c 100644 --- a/code/espurna/ir.ino +++ b/code/espurna/ir.ino @@ -99,6 +99,9 @@ void _irProcessCode(unsigned long code) { } +bool _irKeyCheck(const char * key) { + return (strncmp(key, "ir", 2) == 0); +} // ----------------------------------------------------------------------------- // PUBLIC API @@ -109,6 +112,9 @@ void irSetup() { _ir_recv = new IRrecv(IR_PIN); _ir_recv->enableIRIn(); + // Key Check + settingsRegisterKeyCheck(_irKeyCheck); + // Register loop espurnaRegisterLoop(irLoop); diff --git a/code/espurna/migrate.ino b/code/espurna/migrate.ino index 32cba7ca..2bb705b2 100644 --- a/code/espurna/migrate.ino +++ b/code/espurna/migrate.ino @@ -27,11 +27,12 @@ void _migrateBackwards() { moveSetting("relayProvider", "rlyProvider"); moveSetting("lightProvider", "litProvider"); moveSetting("relays", "rlyCount"); - moveSettings("chGPIO", "litCHGPIO"); - moveSettings("chLogic", "litCHLogic"); + moveSettings("chGPIO", "litChGPIO"); + moveSettings("chLogic", "litChLogic"); moveSetting("enGPIO", "litEnableGPIO"); moveSetting("hlwSelC", "hlwCurLevel"); moveSetting("hlwIntM", "hlwInt"); + delSetting("ledWifi"); } // Configuration versions @@ -39,6 +40,7 @@ void _migrateBackwards() { // 1: based on Embedis, no board definitions // 2: based on Embedis, with board definitions 1-based // 3: based on Embedis, with board definitions 0-based +// 4: based on Embedis, added sensors and force resetting void migrate() { @@ -61,1010 +63,1450 @@ void migrate() { _migrateMoveIndexDown("rlyType"); } - if (config_version == 1) { - - #if defined(NODEMCU_LOLIN) - - setSetting("board", 2); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(WEMOS_D1_MINI_RELAYSHIELD) - - setSetting("board", 3); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_BASIC) - - setSetting("board", 4); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_TH) - - setSetting("board", 5); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_SV) - - setSetting("board", 6); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_TOUCH) - - setSetting("board", 7); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_POW) - - setSetting("board", 8); - setSetting("ledGPIO", 0, 15); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("hlwSELGPIO", 5); - setSetting("hlwCF1GPIO", 13); - setSetting("hlwCFGPIO", 14); - - #elif defined(ITEAD_SONOFF_DUAL) - - setSetting("board", 9); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnRelay", 0, 0xFF); - setSetting("btnRelay", 1, 0xFF); - setSetting("btnRelay", 2, 0); - setSetting("rlyProvider", RELAY_PROVIDER_DUAL); - setSetting("rlyCount", 2); - - #elif defined(ITEAD_1CH_INCHING) - - setSetting("board", 10); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_4CH) - - setSetting("board", 11); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnGPIO", 1, 9); - setSetting("btnGPIO", 2, 10); - setSetting("btnGPIO", 3, 14); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("btnRelay", 2, 2); - setSetting("btnRelay", 3, 3); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyGPIO", 2, 4); - setSetting("rlyGPIO", 3, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - setSetting("rlyType", 2, RELAY_TYPE_NORMAL); - setSetting("rlyType", 3, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SLAMPHER) - - setSetting("board", 12); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_S20) - - setSetting("board", 13); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ELECTRODRAGON_WIFI_IOT) - - setSetting("board", 14); - setSetting("ledGPIO", 0, 16); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 0); - setSetting("btnGPIO", 1, 2); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 13); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(WORKCHOICE_ECOPLUG) - - setSetting("board", 15); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(JANGOE_WIFI_RELAY_NC) - - setSetting("board", 16); - setSetting("btnGPIO", 0, 12); - setSetting("btnGPIO", 1, 13); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("rlyGPIO", 0, 2); - setSetting("rlyGPIO", 1, 14); - setSetting("rlyType", 0, RELAY_TYPE_INVERSE); - setSetting("rlyType", 1, RELAY_TYPE_INVERSE); - - #elif defined(JANGOE_WIFI_RELAY_NO) - - setSetting("board", 17); - setSetting("btnGPIO", 0, 12); - setSetting("btnGPIO", 1, 13); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("rlyGPIO", 0, 2); - setSetting("rlyGPIO", 1, 14); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(OPENENERGYMONITOR_MQTT_RELAY) - - setSetting("board", 18); - setSetting("ledGPIO", 0, 16); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(JORGEGARCIA_WIFI_RELAYS) - - setSetting("board", 19); - setSetting("rlyGPIO", 0, 0); - setSetting("rlyGPIO", 1, 2); - setSetting("rlyType", 0, RELAY_TYPE_INVERSE); - setSetting("rlyType", 1, RELAY_TYPE_INVERSE); - - #elif defined(AITHINKER_AI_LIGHT) - - setSetting("board", 20); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_MY92XX); - setSetting("myModel", MY92XX_MODEL_MY9291); - setSetting("myChips", 1); - setSetting("myDIGPIO", 13); - setSetting("myDCKIGPIO", 15); - setSetting("rlyCount", 1); - - #elif defined(MAGICHOME_LED_CONTROLLER) - - setSetting("board", 21); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("litCHGPIO", 0, 14); - setSetting("litCHGPIO", 1, 5); - setSetting("litCHGPIO", 2, 12); - setSetting("litCHGPIO", 3, 13); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("rlyCount", 1); - - #elif defined(MAGICHOME_LED_CONTROLLER_IR) - - setSetting("board", 21); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("litCHGPIO", 0, 5); - setSetting("litCHGPIO", 1, 12); - setSetting("litCHGPIO", 2, 13); - setSetting("litCHGPIO", 3, 14); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("rlyCount", 1); - - #elif defined(ITEAD_MOTOR) - - setSetting("board", 22); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(TINKERMAN_ESPURNA_H06) - - setSetting("board", 23); - setSetting("ledGPIO", 0, 5); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 4); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_INVERSE); - setSetting("hlwSELGPIO", 2); - setSetting("hlwCF1GPIO", 13); - setSetting("hlwCFGPIO", 14); - - #elif defined(HUACANXING_H801) - - setSetting("board", 24); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("ledGPIO", 0, 5); - setSetting("ledLogic", 0, 1); - setSetting("litCHGPIO", 0, 15); - setSetting("litCHGPIO", 1, 13); - setSetting("litCHGPIO", 2, 12); - setSetting("litCHGPIO", 3, 14); - setSetting("litCHGPIO", 4, 4); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("litCHLogic", 4, 0); - setSetting("rlyCount", 1); - - #elif defined(ITEAD_BNSZ01) - - setSetting("board", 25); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("litCHGPIO", 0, 12); - setSetting("litCHLogic", 0, 0); - setSetting("rlyCount", 1); - - #elif defined(ITEAD_SONOFF_RFBRIDGE) - - setSetting("board", 26); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("rlyProvider", RELAY_PROVIDER_RFBRIDGE); - setSetting("rlyCount", 6); - - #elif defined(ITEAD_SONOFF_4CH_PRO) - - setSetting("board", 27); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnGPIO", 1, 9); - setSetting("btnGPIO", 2, 10); - setSetting("btnGPIO", 3, 14); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("btnRelay", 2, 2); - setSetting("btnRelay", 3, 3); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyGPIO", 2, 4); - setSetting("rlyGPIO", 3, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - setSetting("rlyType", 2, RELAY_TYPE_NORMAL); - setSetting("rlyType", 3, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_B1) - - setSetting("board", 28); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_MY92XX); - setSetting("myModel", MY92XX_MODEL_MY9231); - setSetting("myChips", 2); - setSetting("myDIGPIO", 12); - setSetting("myDCKIGPIO", 14); - setSetting("rlyCount", 1); - - #elif defined(ITEAD_SONOFF_LED) - - setSetting("board", 29); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("litCHGPIO", 0, 12); - setSetting("litCHLogic", 0, 0); - setSetting("litCHGPIO", 1, 14); - setSetting("litCHLogic", 1, 0); - setSetting("rlyCount", 1); - - #elif defined(ITEAD_SONOFF_T1_1CH) - - setSetting("board", 30); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 9); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_T1_2CH) - - setSetting("board", 31); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnGPIO", 1, 10); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 4); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_T1_3CH) - - setSetting("board", 32); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnGPIO", 1, 9); - setSetting("btnGPIO", 2, 10); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("btnRelay", 2, 2); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyGPIO", 2, 4); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - setSetting("rlyType", 2, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_RF) - - setSetting("board", 33); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(WION_50055) - - setSetting("board", 34); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(EXS_WIFI_RELAY_V31) - - setSetting("board", 35); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 13); - setSetting("rlyResetGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(HUACANXING_H802) - - setSetting("board", 36); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 12); - setSetting("litCHGPIO", 1, 14); - setSetting("litCHGPIO", 2, 13); - setSetting("litCHGPIO", 3, 15); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("rlyCount", 1); - - #elif defined(GENERIC_V9261F) - - setSetting("board", 37); - - #elif defined(GENERIC_ECH1560) - - setSetting("board", 38); - - #elif defined(TINKERMAN_ESPURNA_H08) - - setSetting("board", 39); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 4); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("hlwSELGPIO", 5); - setSetting("hlwCF1GPIO", 13); - setSetting("hlwCFGPIO", 14); - - #elif defined(MANCAVEMADE_ESPLIVE) - - setSetting("board", 40); - setSetting("btnGPIO", 0, 4); - setSetting("btnGPIO", 1, 5); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 13); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(INTERMITTECH_QUINLED) - - setSetting("board", 41); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("ledGPIO", 0, 1); - setSetting("ledLogic", 0, 1); - setSetting("litCHGPIO", 0, 0); - setSetting("litCHGPIO", 1, 2); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("rlyCount", 1); - - #elif defined(MAGICHOME_LED_CONTROLLER_20) - - setSetting("board", 42); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 5); - setSetting("litCHGPIO", 1, 12); - setSetting("litCHGPIO", 2, 13); - setSetting("litCHGPIO", 3, 15); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("rlyCount", 1); - - #elif defined(ARILUX_AL_LC06) - - setSetting("board", 43); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 12); - setSetting("litCHGPIO", 1, 14); - setSetting("litCHGPIO", 2, 13); - setSetting("litCHGPIO", 3, 15); - setSetting("litCHGPIO", 4, 5); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("litCHLogic", 4, 0); - setSetting("rlyCount", 1); - - #elif defined(XENON_SM_PW702U) - - setSetting("board", 44); - setSetting("ledGPIO", 0, 4); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(AUTHOMETION_LYT8266) - - setSetting("board", 45); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 13); - setSetting("litCHGPIO", 1, 12); - setSetting("litCHGPIO", 2, 14); - setSetting("litCHGPIO", 3, 2); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("rlyCount", 1); - setSetting("litEnableGPIO", 15); - - #elif defined(ARILUX_E27) - - setSetting("board", 46); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_MY92XX); - setSetting("myModel", MY92XX_MODEL_MY9291); - setSetting("myChips", 1); - setSetting("myDIGPIO", 13); - setSetting("myDCKIGPIO", 15); - setSetting("rlyCount", 1); - - #elif defined(YJZK_SWITCH_2CH) - - setSetting("board", 47); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 0); - setSetting("ledWifi", 0); - setSetting("btnGPIO", 0, 0); - setSetting("btnGPIO", 1, 9); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_DUAL_R2) - - setSetting("board", 48); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnGPIO", 1, 9); - setSetting("btnGPIO", 2, 10); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 1, 1); - setSetting("btnRelay", 2, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(GENERIC_8CH) - - setSetting("board", 49); - setSetting("rlyGPIO", 0, 0); - setSetting("rlyGPIO", 1, 2); - setSetting("rlyGPIO", 2, 4); - setSetting("rlyGPIO", 3, 5); - setSetting("rlyGPIO", 4, 12); - setSetting("rlyGPIO", 5, 13); - setSetting("rlyGPIO", 6, 14); - setSetting("rlyGPIO", 7, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - setSetting("rlyType", 2, RELAY_TYPE_NORMAL); - setSetting("rlyType", 3, RELAY_TYPE_NORMAL); - setSetting("rlyType", 4, RELAY_TYPE_NORMAL); - setSetting("rlyType", 5, RELAY_TYPE_NORMAL); - setSetting("rlyType", 6, RELAY_TYPE_NORMAL); - setSetting("rlyType", 7, RELAY_TYPE_NORMAL); - - #elif defined(ARILUX_AL_LC01) - - setSetting("board", 50); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 5); - setSetting("litCHGPIO", 1, 12); - setSetting("litCHGPIO", 2, 13); - setSetting("litCHGPIO", 3, 14); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("rlyCount", 1); - - #elif defined(ARILUX_AL_LC11) - - setSetting("board", 51); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 5); - setSetting("litCHGPIO", 1, 4); - setSetting("litCHGPIO", 2, 14); - setSetting("litCHGPIO", 3, 13); - setSetting("litCHGPIO", 4, 12); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("litCHLogic", 4, 0); - setSetting("rlyCount", 1); - - #elif defined(ARILUX_AL_LC02) - - setSetting("board", 52); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 12); - setSetting("litCHGPIO", 1, 5); - setSetting("litCHGPIO", 2, 13); - setSetting("litCHGPIO", 3, 15); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("litCHLogic", 3, 0); - setSetting("rlyCount", 1); - - #elif defined(KMC_70011) - - setSetting("board", 53); - setSetting("ledGPIO", 0, 13); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 14); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("hlwSELGPIO", 12); - setSetting("hlwCF1GPIO", 5); - setSetting("hlwCFGPIO", 4); - - #elif defined(GIZWITS_WITTY_CLOUD) - - setSetting("board", 54); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 4); - setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); - setSetting("litProvider", LIGHT_PROVIDER_DIMMER); - setSetting("litCHGPIO", 0, 15); - setSetting("litCHGPIO", 1, 12); - setSetting("litCHGPIO", 2, 13); - setSetting("litCHLogic", 0, 0); - setSetting("litCHLogic", 1, 0); - setSetting("litCHLogic", 2, 0); - setSetting("rlyCount", 1); - - #elif defined(EUROMATE_WIFI_STECKER_SCHUKO) - - setSetting("board", 55); - setSetting("ledGPIO", 0, 4); - setSetting("ledLogic", 0, 0); - setSetting("ledGPIO", 1, 12); - setSetting("ledLogic", 1, 0); - setSetting("btnGPIO", 0, 14); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(TONBUX_POWERSTRIP02) - - setSetting("board", 56); - setSetting("rlyGPIO", 0, 4); - setSetting("rlyGPIO", 1, 13); - setSetting("rlyGPIO", 2, 12); - setSetting("rlyGPIO", 3, 14); - setSetting("rlyGPIO", 4, 16); - setSetting("rlyType", 0, RELAY_TYPE_INVERSE); - setSetting("rlyType", 1, RELAY_TYPE_INVERSE); - setSetting("rlyType", 2, RELAY_TYPE_INVERSE); - setSetting("rlyType", 3, RELAY_TYPE_INVERSE); - setSetting("rlyType", 4, RELAY_TYPE_NORMAL); // Not a relay. USB ports on/off - setSetting("ledGPIO", 0, 0); // 1 blue led - setSetting("ledLogic", 0, 1); - setSetting("ledGPIO", 1, 3); // 3 red leds - setSetting("ledLogic", 1, 1); - setSetting("btnGPIO", 0, 5); - setSetting("btnRelay", 0, 1); - - #elif defined(LINGAN_SWA1) - - setSetting("board", 57); - setSetting("ledGPIO", 0, 4); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(HEYGO_HY02) - - setSetting("board", 58); - setSetting("ledGPIO", 0, 0); - setSetting("ledLogic", 0, 1); - setSetting("ledGPIO", 1, 15); - setSetting("ledLogic", 1, 0); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("hlwSELGPIO", 3); - setSetting("hlwCF1GPIO", 14); - setSetting("hlwCFGPIO", 5); - - #elif defined(MAXCIO_WUS002S) - - setSetting("board", 59); - setSetting("ledGPIO", 0, 3); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 2); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 13); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("hlwSELGPIO", 12); - setSetting("hlwCF1GPIO", 5); - setSetting("hlwCFGPIO", 4); - - #elif defined(YIDIAN_XSSSA05) - - setSetting("board", 60); - setSetting("ledGPIO", 0, 0); - setSetting("ledLogic", 0, 0); - setSetting("ledGPIO", 1, 5); - setSetting("ledLogic", 1, 0); - setSetting("ledGPIO", 2, 2); - setSetting("ledLogic", 2, 0); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(TONBUX_XSSSA06) - - setSetting("board", 61); - setSetting("ledGPIO", 0, 4); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(GREEN_ESP8266RELAY) - - setSetting("board", 62); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 5); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 4); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(IKE_ESPIKE) - - setSetting("board", 63); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("btnGPIO", 1, 12); - setSetting("btnRelay", 1, 1); - setSetting("btnGPIO", 2, 13); - setSetting("btnRelay", 2, 2); - setSetting("rlyGPIO", 0, 4); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - setSetting("rlyGPIO", 2, 16); - setSetting("rlyType", 2, RELAY_TYPE_NORMAL); - - #elif defined(ARNIEX_SWIFITCH) - - setSetting("board", 64); - setSetting("ledGPIO", 0, 12); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 4); - setSetting("btnRelay", 0, 1); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyType", 0, RELAY_TYPE_INVERSE); - - #elif defined(GENERIC_ESP01S_RELAY_V40) - - setSetting("board", 65); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 0); - setSetting("rlyGPIO", 0, 0); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(GENERIC_ESP01S_RGBLED_V10) - - setSetting("board", 66); - setSetting("ledGPIO", 0, 2); - - #elif defined(HELTEC_TOUCHRELAY) - - setSetting("board", 67); - setSetting("btnGPIO", 0, 14); - setSetting("btnRelay", 0, 1); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(GENERIC_ESP01S_DHT11_V10) - - setSetting("board", 68); - - #elif defined(GENERIC_ESP01S_DS18B20_V10) - - setSetting("board", 69); - - #elif defined(ZHILDE_EU44_W) - - setSetting("board", 70); - setSetting("btnGPIO", 0, 3); - setSetting("ledGPIO", 0, 1); - setSetting("ledLogic", 0, 1); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyGPIO", 1, 4); - setSetting("rlyGPIO", 2, 12); - setSetting("rlyGPIO", 3, 13); - setSetting("rlyGPIO", 4, 14); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - setSetting("rlyType", 2, RELAY_TYPE_NORMAL); - setSetting("rlyType", 3, RELAY_TYPE_NORMAL); - setSetting("rlyType", 4, RELAY_TYPE_NORMAL); - - #elif defined(ITEAD_SONOFF_POW_R2) - - setSetting("board", 71); - setSetting("ledGPIO", 0, 15); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("hlwSELGPIO", 5); - setSetting("hlwCF1GPIO", 13); - setSetting("hlwCFGPIO", 14); - - #elif defined(LUANI_HVIO) - - setSetting("board", 72); - setSetting("ledGPIO", 0, 15); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 12); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 4); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(ALLNET_4DUINO_IOT_WLAN_RELAIS) - - setSetting("board", 73); - setSetting("rlyGPIO", 0, 14); - setSetting("rlyResetGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_LATCHED); - - #elif defined(TONBUX_MOSQUITO_KILLER) - - setSetting("board", 74); - setSetting("ledGPIO", 0, 15); - setSetting("ledLogic", 0, 1); - setSetting("ledGPIO", 1, 14); - setSetting("ledLogic", 1, 1); - setSetting("ledGPIO", 2, 12); - setSetting("ledLogic", 2, 0); - setSetting("ledGPIO", 3, 16); - setSetting("ledLogic", 3, 0); - setSetting("btnGPIO", 0, 2); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(NEO_COOLCAM_NAS_WR01W) - - setSetting("board", 75); - setSetting("ledGPIO", 0, 4); - setSetting("ledLogic", 0, 1); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 12); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - - #elif defined(PILOTAK_ESP_DIN_V1) - - setSetting("board", 76); - setSetting("ledGPIO", 0, 16); - setSetting("ledLogic", 0, 0); - setSetting("btnGPIO", 0, 0); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 4); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(ESTINK_WIFI_POWER_STRIP) - - setSetting("board", 77); - setSetting("btnGPIO", 0, 16); - setSetting("btnRelay", 0, 3); - setSetting("ledGPIO", 0, 0); - setSetting("ledGPIO", 1, 12); - setSetting("ledGPIO", 2, 3); - setSetting("ledGPIO", 3, 5); - setSetting("ledLogic", 0, 1); - setSetting("ledLogic", 1, 1); - setSetting("ledLogic", 2, 1); - setSetting("ledLogic", 3, 1); - setSetting("ledMode", 0, LED_MODE_FINDME); - setSetting("ledMode", 1, LED_MODE_FOLLOW); - setSetting("ledMode", 2, LED_MODE_FOLLOW); - setSetting("ledMode", 3, LED_MODE_FOLLOW); - setSetting("ledRelay", 1, 1); - setSetting("ledRelay", 2, 2); - setSetting("ledRelay", 3, 3); - setSetting("rlyGPIO", 0, 14); - setSetting("rlyGPIO", 1, 13); - setSetting("rlyGPIO", 2, 4); - setSetting("rlyGPIO", 3, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - setSetting("rlyType", 2, RELAY_TYPE_NORMAL); - setSetting("rlyType", 3, RELAY_TYPE_NORMAL); - - #elif defined(BH_ONOFRE) - - setSetting("board", 78); - setSetting("btnGPIO", 0, 12); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("btnRelay", 0, 1); - setSetting("rlyGPIO", 0, 4); - setSetting("rlyGPIO", 1, 5); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("rlyType", 1, RELAY_TYPE_NORMAL); - - #elif defined(BLITZWOLF_BWSHP2) - - setSetting("board", 79); - setSetting("ledGPIO", 0, 2); - setSetting("ledLogic", 0, 1); - setSetting("ledGPIO", 1, 0); - setSetting("ledLogic", 1, 1); - setSetting("ledMode", 1, LED_MODE_FINDME); - setSetting("ledRelay", 1, 0); - setSetting("btnGPIO", 0, 13); - setSetting("btnRelay", 0, 0); - setSetting("rlyGPIO", 0, 15); - setSetting("rlyType", 0, RELAY_TYPE_NORMAL); - setSetting("hlwSELGPIO", 12); - setSetting("hlwCF1GPIO", 14); - setSetting("hlwCFGPIO", 5); - setSetting("curRatio", 25740); - setSetting("volRatio", 313400); - setSetting("pwrRatio", 3414290); - setSetting("hlwCurLevel", LOW); - setSetting("hlwInt", FALLING); - - #else - - // Allow users to define new settings without migration config - //#error "UNSUPPORTED HARDWARE!" - - #endif + #if defined(NODEMCU_LOLIN) + + setSetting("board", 2); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(WEMOS_D1_MINI_RELAYSHIELD) + + setSetting("board", 3); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_BASIC) + + setSetting("board", 4); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_TH) + + setSetting("board", 5); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_SV) + + setSetting("board", 6); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_TOUCH) + + setSetting("board", 7); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnPress", 0, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 0, BUTTON_MODE_NONE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_RESET); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_POW) + + setSetting("board", 8); + setSetting("ledGPIO", 0, 15); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("hlwEnabled", 1); + setSetting("hlwSELGPIO", 5); + setSetting("hlwCF1GPIO", 13); + setSetting("hlwCFGPIO", 14); + + #elif defined(ITEAD_SONOFF_DUAL) + + setSetting("board", 9); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnRelay", 0, GPIO_INVALID); + setSetting("btnRelay", 1, GPIO_INVALID); + setSetting("btnRelay", 2, 0); + setSetting("rlyProvider", RELAY_PROVIDER_DUAL); + setSetting("rlyCount", 2); + setSetting("dbgSerial", 0); + setSetting("dbgBaudrate", 19230); + + #elif defined(ITEAD_1CH_INCHING) + + // The inching functionality is managed by a misterious IC in the board. + // You cannot control the inching button and functionality from the ESP8266 + // Besides, enabling the inching functionality using the hardware button + // will result in the relay switching on and off continuously. + // Fortunately the unkown IC keeps memory of the hardware inching status + // so you can just disable it and forget. The inching LED must be lit. + // You can still use the pulse options from the web interface + // without problem. + + setSetting("board", 10); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_4CH) + + setSetting("board", 11); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnGPIO", 1, 9); + setSetting("btnGPIO", 2, 10); + setSetting("btnGPIO", 3, 14); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 2, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 3, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("btnRelay", 2, 2); + setSetting("btnRelay", 3, 3); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyGPIO", 2, 4); + setSetting("rlyGPIO", 3, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + setSetting("rlyType", 2, RELAY_TYPE_NORMAL); + setSetting("rlyType", 3, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SLAMPHER) + + setSetting("board", 12); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_S20) + + setSetting("board", 13); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ELECTRODRAGON_WIFI_IOT) + + setSetting("board", 14); + setSetting("ledGPIO", 0, 16); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 0); + setSetting("btnGPIO", 1, 2); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 13); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + #elif defined(WORKCHOICE_ECOPLUG) + + setSetting("board", 15); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(JANGOE_WIFI_RELAY_NC) + + // Jan Goedeke Wifi Relay + // https://github.com/JanGoe/esp8266-wifi-relay + + setSetting("board", 16); + setSetting("btnGPIO", 0, 12); + setSetting("btnGPIO", 1, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("rlyGPIO", 0, 2); + setSetting("rlyGPIO", 1, 14); + setSetting("rlyType", 0, RELAY_TYPE_INVERSE); + setSetting("rlyType", 1, RELAY_TYPE_INVERSE); + + #elif defined(JANGOE_WIFI_RELAY_NO) + + setSetting("board", 17); + setSetting("btnGPIO", 0, 12); + setSetting("btnGPIO", 1, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("rlyGPIO", 0, 2); + setSetting("rlyGPIO", 1, 14); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + #elif defined(OPENENERGYMONITOR_MQTT_RELAY) + + setSetting("board", 18); + setSetting("ledGPIO", 0, 16); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(JORGEGARCIA_WIFI_RELAYS) + + // Jorge García Wifi+Relays Board Kit + // https://www.tindie.com/products/jorgegarciadev/wifi--relays-board-kit + // https://github.com/jorgegarciadev/wifikit + + setSetting("board", 19); + setSetting("rlyGPIO", 0, 0); + setSetting("rlyGPIO", 1, 2); + setSetting("rlyType", 0, RELAY_TYPE_INVERSE); + setSetting("rlyType", 1, RELAY_TYPE_INVERSE); + + #elif defined(AITHINKER_AI_LIGHT) + + setSetting("board", 20); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_MY92XX); + setSetting("myModel", MY92XX_MODEL_MY9291); // 4 channels per chip + setSetting("myChips", 1); + setSetting("myDIGPIO", 13); + setSetting("myDCKIGPIO", 15); + setSetting("myMapping", "0123"); + setSetting("rlyCount", 1); + + #elif defined(MAGICHOME_LED_CONTROLLER) + + setSetting("board", 21); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("litChGPIO", 0, 14); + setSetting("litChGPIO", 1, 5); + setSetting("litChGPIO", 2, 12); + setSetting("litChGPIO", 3, 13); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + setSetting("irEnabled", 1); + setSetting("irGPIO", 4); + setSetting("irSet", 1); + + #elif defined(ITEAD_MOTOR) + + setSetting("board", 22); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(TINKERMAN_ESPURNA_H06) + + setSetting("board", 23); + setSetting("ledGPIO", 0, 5); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 4); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_INVERSE); + + setSetting("hlwEnabled", 1); + setSetting("hlwSELGPIO", 2); + setSetting("hlwCF1GPIO", 13); + setSetting("hlwCFGPIO", 14); + + #elif defined(HUACANXING_H801) + + setSetting("board", 24); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("ledGPIO", 0, 5); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("litChGPIO", 0, 15); + setSetting("litChGPIO", 1, 13); + setSetting("litChGPIO", 2, 12); + setSetting("litChGPIO", 3, 14); + setSetting("litChGPIO", 4, 4); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 4, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + setSetting("dbgPort", 1); + setSetting("dbgRXEnabled", 1); + + #elif defined(ITEAD_BNSZ01) + + setSetting("board", 25); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("litChGPIO", 0, 12); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(ITEAD_SONOFF_RFBRIDGE) + + setSetting("board", 26); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("rlyProvider", RELAY_PROVIDER_RFBRIDGE); + setSetting("rlyCount", 8); + + setSetting("rfbDirect", 0); + setSetting("rfbRXGPIO", 4); + setSetting("rfbTXGPIO", 5); + + // When using un-modified harware, ESPurna communicates with the secondary + // MCU EFM8BB1 via UART at 19200 bps so we need to change the speed of + // the port and remove UART noise on serial line + setSetting("dbgSerial", 0); + setSetting("dbgBaudrate", 19200); + + #elif defined(ITEAD_SONOFF_4CH_PRO) + + setSetting("board", 27); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnGPIO", 1, 9); + setSetting("btnGPIO", 2, 10); + setSetting("btnGPIO", 3, 14); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 2, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 3, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("btnRelay", 2, 2); + setSetting("btnRelay", 3, 3); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyGPIO", 2, 4); + setSetting("rlyGPIO", 3, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + setSetting("rlyType", 2, RELAY_TYPE_NORMAL); + setSetting("rlyType", 3, RELAY_TYPE_NORMAL); + + // Sonoff 4CH Pro uses a secondary STM32 microcontroller to handle + // buttons and relays, but it also forwards button presses to the ESP8285. + // This allows ESPurna to handle button presses -almost- the same way + // as with other devices except: + // * Double click seems to break/disable the button on the STM32 side + // * With S6 switch to 1 (self-locking and inching modes) everything's OK + // * With S6 switch to 0 (interlock mode) if there is a relay ON + // and you click on another relay button, the STM32 sends a "press" + // event for the button of the first relay (to turn it OFF) but it + // does not send a "release" event. It's like it's holding the + // button down since you can see it is still LOW. + // Whatever reason the result is that it may actually perform a + // long click or long-long click. + // The configuration below make the button toggle the relay on press events + // and disables any possibly harmful combination with S6 set to 0. + // If you are sure you will only use S6 to 1 you can comment the + // btnLngClick(0) and btnLngLngClick(0) options below to recover the + // reset mode and factory reset functionalities, or link other actions like + // AP mode in the commented line below. + + setSetting("btnPress", 0, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 0, BUTTON_MODE_NONE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); // or BUTTON_MODE_AP + setSetting("btnLngLngClick", 0, BUTTON_MODE_NONE); // or BUTTON_MODE_FACTORY + + setSetting("btnPress", 1, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 1, BUTTON_MODE_NONE); + + setSetting("btnPress", 2, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 2, BUTTON_MODE_NONE); + + setSetting("btnPress", 3, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 3, BUTTON_MODE_NONE); + + #elif defined(ITEAD_SONOFF_B1) + + setSetting("board", 28); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_MY92XX); + setSetting("myModel", MY92XX_MODEL_MY9231); // 3 channels per chip + setSetting("myChips", 2); + setSetting("myDIGPIO", 12); + setSetting("myDCKIGPIO", 14); + setSetting("myMapping", "43501"); // TODO + setSetting("litChFactor", 4, 0.1); // White LEDs are way more bright in the B1 + setSetting("litChFactor", 5, 0.1); // White LEDs are way more bright in the B1 + setSetting("rlyCount", 1); + + #elif defined(ITEAD_SONOFF_LED) + + setSetting("board", 29); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("litChGPIO", 0, 12); // Cold white + setSetting("litChGPIO", 1, 14); // Warm white + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(ITEAD_SONOFF_T1_1CH) + + setSetting("board", 30); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("btnPress", 0, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 0, BUTTON_MODE_NONE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_RESET); + + #elif defined(ITEAD_SONOFF_T1_2CH) + + setSetting("board", 31); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnGPIO", 1, 9); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + setSetting("btnPress", 0, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 0, BUTTON_MODE_NONE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_RESET); + + setSetting("btnPress", 1, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 1, BUTTON_MODE_NONE); + setSetting("btnDblClick", 1, BUTTON_MODE_NONE); + setSetting("btnLngClick", 1, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 1, BUTTON_MODE_RESET); + + #elif defined(ITEAD_SONOFF_T1_3CH) + + setSetting("board", 32); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnGPIO", 1, 9); + setSetting("btnGPIO", 2, 10); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 2, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("btnRelay", 2, 2); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyGPIO", 2, 4); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + setSetting("rlyType", 2, RELAY_TYPE_NORMAL); + + setSetting("btnPress", 0, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 0, BUTTON_MODE_NONE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_RESET); + + setSetting("btnPress", 1, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 1, BUTTON_MODE_NONE); + setSetting("btnDblClick", 1, BUTTON_MODE_NONE); + setSetting("btnLngClick", 1, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 1, BUTTON_MODE_RESET); + + setSetting("btnPress", 2, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 2, BUTTON_MODE_NONE); + setSetting("btnDblClick", 2, BUTTON_MODE_NONE); + setSetting("btnLngClick", 2, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 2, BUTTON_MODE_RESET); + + #elif defined(ITEAD_SONOFF_RF) + + setSetting("board", 33); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(WION_50055) + + // WiOn 50055 Indoor Wi-Fi Wall Outlet & Tap + // https://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_id=114&ipn=icep&toolid=20004&campid=5338044841&mpre=http%3A%2F%2Fwww.ebay.com%2Fitm%2FWiOn-50050-Indoor-Wi-Fi-Outlet-Wireless-Switch-Programmable-Timer-%2F263112281551 + // https://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_id=114&ipn=icep&toolid=20004&campid=5338044841&mpre=http%3A%2F%2Fwww.ebay.com%2Fitm%2FWiOn-50055-Indoor-Wi-Fi-Wall-Tap-Monitor-Energy-Usage-Wireless-Smart-Switch-%2F263020837777 + // Does not support power monitoring yet + + setSetting("board", 34); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(EXS_WIFI_RELAY_V31) + + // EX-Store Wifi Relay v3.1 + // https://ex-store.de/ESP8266-WiFi-Relay-V31 + + setSetting("board", 35); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 13); + setSetting("rlyResetGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_LATCHED); + + #elif defined(HUACANXING_H802) + + setSetting("board", 36); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 12); + setSetting("litChGPIO", 1, 14); + setSetting("litChGPIO", 2, 13); + setSetting("litChGPIO", 3, 15); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + setSetting("dbgPort", 1); + setSetting("dbgRXEnabled", 1); + + #elif defined(GENERIC_V9261F) + + setSetting("board", 37); + + setSetting("v92Enabled", 1); + setSetting("v92GPIO", 2); + setSetting("v92Logic", GPIO_LOGIC_INVERSE); + + #elif defined(GENERIC_ECH1560) + + setSetting("board", 38); + + setSetting("echEnabled", 1); + setSetting("echCLKGPIO", 4); + setSetting("echMISOGPIO", 5); + setSetting("echLogic", GPIO_LOGIC_INVERSE); + + #elif defined(TINKERMAN_ESPURNA_H08) + + setSetting("board", 39); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 4); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("hlwEnabled", 1); + setSetting("hlwSELGPIO", 5); + setSetting("hlwCF1GPIO", 13); + setSetting("hlwCFGPIO", 14); + + #elif defined(MANCAVEMADE_ESPLIVE) + + // ESPLive + // https://github.com/ManCaveMade/ESP-Live + + setSetting("board", 40); + setSetting("btnGPIO", 0, 4); + setSetting("btnGPIO", 1, 5); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 13); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + setSetting("dsEnabled", 1); + setSetting("dsGPIO", 0, 2); + + #elif defined(INTERMITTECH_QUINLED) + + // QuinLED + // http://blog.quindorian.org/2017/02/esp8266-led-lighting-quinled-v2-6-pcb.html + + setSetting("board", 41); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("ledGPIO", 0, 5); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("litChGPIO", 0, 0); + setSetting("litChGPIO", 1, 2); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(MAGICHOME_LED_CONTROLLER_20) + + setSetting("board", 42); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 5); + setSetting("litChGPIO", 1, 12); + setSetting("litChGPIO", 2, 13); + setSetting("litChGPIO", 3, 15); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + setSetting("irEnabled", 1); + setSetting("irGPIO", 4); + setSetting("irSet", 1); + + #elif defined(ARILUX_AL_LC06) + + setSetting("board", 43); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 14); + setSetting("litChGPIO", 1, 12); + setSetting("litChGPIO", 2, 13); + setSetting("litChGPIO", 3, 15); + setSetting("litChGPIO", 4, 5); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 4, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(XENON_SM_PW702U) + + setSetting("board", 44); + setSetting("ledGPIO", 0, 4); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(AUTHOMETION_LYT8266) + + // AUTHOMETION LYT8266 + // https://authometion.com/shop/en/home/13-lyt8266.html + + setSetting("board", 45); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 13); + setSetting("litChGPIO", 1, 12); + setSetting("litChGPIO", 2, 14); + setSetting("litChGPIO", 3, 2); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + setSetting("litEnableGPIO", 15); + setSetting("litEnableLogic", GPIO_LOGIC_DIRECT); + + #elif defined(ARILUX_E27) + + setSetting("board", 46); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_MY92XX); + setSetting("myModel", MY92XX_MODEL_MY9291); // 4 channels per chip + setSetting("myChips", 1); + setSetting("myDIGPIO", 13); + setSetting("myDCKIGPIO", 15); + setSetting("myMapping", "0123"); + setSetting("rlyCount", 1); + + #elif defined(YJZK_SWITCH_2CH) + + setSetting("board", 47); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 0); + setSetting("btnGPIO", 1, 9); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_DUAL_R2) + + setSetting("board", 48); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnGPIO", 1, 9); + setSetting("btnGPIO", 2, 10); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH | BUTTON_SET_PULLUP); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH | BUTTON_SET_PULLUP); + setSetting("btnMode", 2, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("btnRelay", 2, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + #elif defined(GENERIC_8CH) + + setSetting("board", 49); + setSetting("rlyGPIO", 0, 0); + setSetting("rlyGPIO", 1, 2); + setSetting("rlyGPIO", 2, 4); + setSetting("rlyGPIO", 3, 5); + setSetting("rlyGPIO", 4, 12); + setSetting("rlyGPIO", 5, 13); + setSetting("rlyGPIO", 6, 14); + setSetting("rlyGPIO", 7, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + setSetting("rlyType", 2, RELAY_TYPE_NORMAL); + setSetting("rlyType", 3, RELAY_TYPE_NORMAL); + setSetting("rlyType", 4, RELAY_TYPE_NORMAL); + setSetting("rlyType", 5, RELAY_TYPE_NORMAL); + setSetting("rlyType", 6, RELAY_TYPE_NORMAL); + setSetting("rlyType", 7, RELAY_TYPE_NORMAL); + + #elif defined(ARILUX_AL_LC01) + + setSetting("board", 50); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 5); + setSetting("litChGPIO", 1, 12); + setSetting("litChGPIO", 2, 13); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(ARILUX_AL_LC11) + + setSetting("board", 51); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 5); + setSetting("litChGPIO", 1, 4); + setSetting("litChGPIO", 2, 14); + setSetting("litChGPIO", 3, 13); + setSetting("litChGPIO", 4, 12); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 4, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(ARILUX_AL_LC02) + + setSetting("board", 52); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 12); + setSetting("litChGPIO", 1, 5); + setSetting("litChGPIO", 2, 13); + setSetting("litChGPIO", 3, 15); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(KMC_70011) + + // KMC 70011 + // https://www.amazon.com/KMC-Monitoring-Required-Control-Compatible/dp/B07313TH7B + + setSetting("board", 53); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 14); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("hlwEnabled", 1); + setSetting("hlwSELGPIO", 12); + setSetting("hlwCF1GPIO", 5); + setSetting("hlwCFGPIO", 4); + setSetting("hlwVolResUp", 2000000); + + #elif defined(GIZWITS_WITTY_CLOUD) + + setSetting("board", 54); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 4); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnPress", 0, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 0, BUTTON_MODE_NONE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_RESET); + setSetting("rlyProvider", RELAY_PROVIDER_LIGHT); + setSetting("litProvider", LIGHT_PROVIDER_DIMMER); + setSetting("litChGPIO", 0, 15); + setSetting("litChGPIO", 1, 12); + setSetting("litChGPIO", 2, 13); + setSetting("litChLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 1, GPIO_LOGIC_DIRECT); + setSetting("litChLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("rlyCount", 1); + + #elif defined(EUROMATE_WIFI_STECKER_SCHUKO) + + // Euromate (?) Wifi Stecker Shuko + // https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko/p/2291706 + // Thanks to @Geitde + + setSetting("board", 55); + setSetting("ledGPIO", 0, 4); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 14); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH | BUTTON_SET_PULLUP); + setSetting("btnRelay", 0, 0); + + // The relay in the device is not a bistable (latched) relay. + // The device is reported to have a flip-flop circuit to drive the relay + // So @Geitde hack is still the only possible + // Hack: drive GPIO12 low and use GPIO5 as normal relay pin: + setSetting("rlyGPIO", 0, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("ledGPIO", 1, 12); + setSetting("ledLogic", 1, GPIO_LOGIC_DIRECT); + + #elif defined(TONBUX_POWERSTRIP02) + + setSetting("board", 56); + setSetting("rlyGPIO", 0, 4); + setSetting("rlyGPIO", 1, 13); + setSetting("rlyGPIO", 2, 12); + setSetting("rlyGPIO", 3, 14); + setSetting("rlyGPIO", 4, 16); // Not a relay. USB ports on/off + setSetting("rlyType", 0, RELAY_TYPE_INVERSE); + setSetting("rlyType", 1, RELAY_TYPE_INVERSE); + setSetting("rlyType", 2, RELAY_TYPE_INVERSE); + setSetting("rlyType", 3, RELAY_TYPE_INVERSE); + setSetting("rlyType", 4, RELAY_TYPE_NORMAL); // Not a relay. USB ports on/off + setSetting("ledGPIO", 0, 0); // 1 blue led + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("ledGPIO", 1, 3); // 3 red leds + setSetting("ledLogic", 1, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 5); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 1); + + #elif defined(LINGAN_SWA1) + + setSetting("board", 57); + setSetting("ledGPIO", 0, 4); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH | BUTTON_SET_PULLUP); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(HEYGO_HY02) + + setSetting("board", 58); + setSetting("ledGPIO", 0, 4); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(MAXCIO_WUS002S) + + setSetting("board", 59); + setSetting("ledGPIO", 0, 3); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 2); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 13); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("hlwEnabled", 1); + setSetting("hlwSELGPIO", 12); + setSetting("hlwCF1GPIO", 5); + setSetting("hlwCFGPIO", 4); + setSetting("hlwCurRes", 0.002); + setSetting("hlwVolResUp", 2000000); + + #elif defined(YIDIAN_XSSSA05) + + setSetting("board", 60); + setSetting("ledGPIO", 0, 4); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("ledGPIO", 2, 2); + setSetting("ledLogic", 2, 0); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("hlwEnabled", 1); + setSetting("hlwSELGPIO", 3); + setSetting("hlwCF1GPIO", 14); + setSetting("hlwCFGPIO", 5); + setSetting("hlwVolResUp", 2400000); + + #elif defined(TONBUX_XSSSA06) + + setSetting("board", 61); + setSetting("ledGPIO", 0, 0); // Red + setSetting("ledGPIO", 0, 5); // Green + setSetting("ledGPIO", 0, 2); // Blue + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(GREEN_ESP8266RELAY) + + // GREEN ESP8266 RELAY MODULE + // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180323113846&SearchText=Green+ESP8266 + + setSetting("board", 62); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 5); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 4); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(IKE_ESPIKE) + + // Henrique Gravina ESPIKE + // https://github.com/Henriquegravina/Espike + + setSetting("board", 63); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 13); + setSetting("btnGPIO", 1, 12); + setSetting("btnGPIO", 2, 14); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 2, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("btnRelay", 2, 2); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_NONE); + setSetting("rlyGPIO", 0, 4); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyGPIO", 2, 16); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + setSetting("rlyType", 2, RELAY_TYPE_NORMAL); + + #elif defined(ARNIEX_SWIFITCH) + + // SWIFITCH + // https://github.com/ArnieX/swifitch + + setSetting("board", 64); + setSetting("ledGPIO", 0, 12); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 4); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH | BUTTON_SET_PULLUP); + setSetting("btnRelay", 0, 1); + setSetting("btnPress", 0, BUTTON_MODE_NONE); + setSetting("btnClick", 0, BUTTON_MODE_TOGGLE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_NONE); + setSetting("rlyGPIO", 0, 5); + setSetting("rlyType", 0, RELAY_TYPE_INVERSE); + + #elif defined(GENERIC_ESP01S_RELAY_V40) + + // ESP-01S RELAY v4.0 + // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180404024035&SearchText=esp-01s+relay + + setSetting("board", 65); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("rlyGPIO", 0, 0); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(GENERIC_ESP01S_RGBLED_V10) + + // ESP-01S RGB LED v1.0 (some sold with ws2818) + // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180404023816&SearchText=esp-01s+led+controller + + setSetting("board", 66); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + + #elif defined(HELTEC_TOUCHRELAY) + + // Heltec Touch Relay + // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180408043114&SearchText=esp8266+touch+relay + + setSetting("board", 67); + setSetting("btnGPIO", 0, 14); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 1); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(GENERIC_ESP01S_DHT11_V10) + + // ESP-01S DHT11 v1.0 + // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180410105907&SearchText=esp-01s+dht11 + + setSetting("board", 68); + setSetting("dhtEnabled", 1); + setSetting("dhtGPIO", 0, 2); + setSetting("dhtType", 0, DHT_CHIP_DHT11); + + #elif defined(GENERIC_ESP01S_DS18B20_V10) + + // ESP-01S DS18B20 v1.0 + // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180410105933&SearchText=esp-01s+ds18b20 + + setSetting("board", 69); + setSetting("dsEnabled", 1); + setSetting("dsGPIO", 0, 2); + + #elif defined(ZHILDE_EU44_W) + + // Zhilde ZLD-EU44-W + // http://www.zhilde.com/product/60705150109-805652505/EU_WiFi_Surge_Protector_Extension_Socket_4_Outlets_works_with_Amazon_Echo_Smart_Power_Strip.html + + setSetting("board", 70); + + setSetting("btnGPIO", 0, 3); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + + setSetting("ledGPIO", 0, 1); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + + setSetting("rlyGPIO", 0, 5); + setSetting("rlyGPIO", 1, 4); + setSetting("rlyGPIO", 2, 12); + setSetting("rlyGPIO", 3, 13); + setSetting("rlyGPIO", 4, 14); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + setSetting("rlyType", 2, RELAY_TYPE_NORMAL); + setSetting("rlyType", 3, RELAY_TYPE_NORMAL); + setSetting("rlyType", 4, RELAY_TYPE_NORMAL); - } + // Based on the reporter, this product uses GPIO1 and 3 for the button + // and onboard LED, so hardware serial should be disabled... + setSetting("dbgSerial", 0); + + #elif defined(ITEAD_SONOFF_POW_R2) + + setSetting("board", 71); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("dbgSerial", 0); + + setSetting("cseEnabled", 1); + setSetting("cseGPIO", 1); + + #elif defined(LUANI_HVIO) + + // Luani HVIO + // https://luani.de/projekte/esp8266-hvio/ + // https://luani.de/blog/esp8266-230v-io-modul/ + + setSetting("board", 72); + + setSetting("ledGPIO", 0, 15); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + + setSetting("btnGPIO", 0, 12); + setSetting("btnGPIO", 1, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + + setSetting("rlyGPIO", 0, 4); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + #elif defined(ALLNET_4DUINO_IOT_WLAN_RELAIS) + + // Allnet 4duino ESP8266-UP-Relais + // http://www.allnet.de/de/allnet-brand/produkte/neuheiten/p/allnet-4duino-iot-wlan-relais-unterputz-esp8266-up-relais/ + // https://shop.allnet.de/fileadmin/transfer/products/148814.pdf + + setSetting("board", 73); + + setSetting("ledGPIO", 0, 0); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + + setSetting("rlyGPIO", 0, 14); + setSetting("rlyResetGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_LATCHED); + + #elif defined(TONBUX_MOSQUITO_KILLER) + + // Tonbux 50-100M Smart Mosquito Killer USB + // https://www.aliexpress.com/item/Original-Tonbux-50-100M-Smart-Mosquito-Killer-USB-Plug-No-Noise-Repellent-App-Smart-Module/32859330820.html + + setSetting("board", 74); + + setSetting("ledGPIO", 0, 15); + setSetting("ledGPIO", 1, 14); + setSetting("ledGPIO", 2, 12); + setSetting("ledGPIO", 3, 16); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("ledLogic", 1, GPIO_LOGIC_INVERSE); + setSetting("ledLogic", 2, GPIO_LOGIC_DIRECT); + setSetting("ledLogic", 3, GPIO_LOGIC_DIRECT); + setSetting("ledMode", 0, LED_MODE_WIFI); + setSetting("ledMode", 1, LED_MODE_RELAY); + setSetting("ledRelay", 1, 0); + + setSetting("btnGPIO", 0, 2); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + + setSetting("rlyGPIO", 0, 5); // Fan + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(NEO_COOLCAM_NAS_WR01W) + + // NEO Coolcam NAS-WR01W Wifi Smart Power Plug + // https://es.aliexpress.com/item/-/32854589733.html?spm=a219c.12010608.0.0.6d084e68xX0y5N + // https://www.fasttech.com/product/9649426-neo-coolcam-nas-wr01w-wifi-smart-power-plug-eu + + setSetting("board", 75); + setSetting("ledGPIO", 0, 4); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(PILOTAK_ESP_DIN_V1) + + // ESP-DIN relay board V1 + // https://github.com/pilotak/esp_din + + setSetting("board", 76); + + setSetting("ledGPIO", 0, 15); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + + setSetting("rlyGPIO", 0, 4); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + setSetting("i2cEnable", 1); + setSetting("i2cSDAGPIO", 12); + setSetting("i2cSCLGPIO", 13); + + setSetting("dsEnabled", 1); + setSetting("dsGPIO", 0, 2); + + setSetting("rfEnabled", 1); + setSetting("rfGPIO", 14); + + setSetting("digEnabled", 1); + setSetting("digGPIO", 0, 16); + setSetting("digMode", 0, INPUT); + + #elif defined(ESTINK_WIFI_POWER_STRIP) + + // Estink Wifi Power Strip + // https://www.amazon.de/Steckdosenleiste-Ladeger%C3%A4t-Sprachsteuerung-SmartphonesTablets-Android/dp/B0796W5FZY + // Fornorm Wi-Fi USB Extension Socket (ZLD-34EU) + // https://www.aliexpress.com/item/Fornorm-WiFi-Extension-Socket-with-Surge-Protector-Smart-Power-Strip-3-Outlets-and-4-USB-Charging/32849743948.html + + setSetting("board", 77); + + setSetting("btnGPIO", 0, 16); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 3); + + setSetting("ledGPIO", 0, 0); + setSetting("ledGPIO", 1, 12); + setSetting("ledGPIO", 2, 3); + setSetting("ledGPIO", 3, 5); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("ledLogic", 1, GPIO_LOGIC_INVERSE); + setSetting("ledLogic", 2, GPIO_LOGIC_INVERSE); + setSetting("ledLogic", 3, GPIO_LOGIC_INVERSE); + setSetting("ledMode", 0, LED_MODE_FINDME); + setSetting("ledMode", 1, LED_MODE_FOLLOW); + setSetting("ledMode", 2, LED_MODE_FOLLOW); + setSetting("ledMode", 3, LED_MODE_FOLLOW); + setSetting("ledRelay", 1, 1); + setSetting("ledRelay", 2, 2); + setSetting("ledRelay", 3, 3); + + setSetting("rlyGPIO", 0, 14); // USB power + setSetting("rlyGPIO", 1, 13); // power plug 1 + setSetting("rlyGPIO", 2, 4); // power plug 2 + setSetting("rlyGPIO", 3, 15); // power plug 3 + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + setSetting("rlyType", 2, RELAY_TYPE_NORMAL); + setSetting("rlyType", 3, RELAY_TYPE_NORMAL); + + setSetting("dbgSerial", 0); + + #elif defined(BH_ONOFRE) + + // Bruno Horta's OnOfre + // https://www.bhonofre.pt/ + // https://github.com/brunohorta82/BH_OnOfre/ + + setSetting("board", 78); + setSetting("btnGPIO", 0, 12); + setSetting("btnGPIO", 1, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH | BUTTON_SET_PULLUP); + setSetting("btnMode", 1, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH | BUTTON_SET_PULLUP); + setSetting("btnRelay", 0, 0); + setSetting("btnRelay", 1, 1); + setSetting("rlyGPIO", 0, 4); + setSetting("rlyGPIO", 1, 5); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + setSetting("rlyType", 1, RELAY_TYPE_NORMAL); + + #elif defined(BLITZWOLF_BWSHP2) + + // Several boards under different names uing a power chip labelled BL0937 or HJL-01 + // * Blitzwolf (https://www.amazon.es/Inteligente-Temporización-Dispositivos-Cualquier-BlitzWolf/dp/B07BMQP142) + // * HomeCube (https://www.amazon.de/Steckdose-Homecube-intelligente-Verbrauchsanzeige-funktioniert/dp/B076Q2LKHG) + // * Coosa (https://www.amazon.com/COOSA-Monitoring-Function-Campatible-Assiatant/dp/B0788W9TDR) + // * Goosund (http://www.gosund.com/?m=content&c=index&a=show&catid=6&id=5) + // * Ablue (https://www.amazon.de/Intelligente-Steckdose-Ablue-Funktioniert-Assistant/dp/B076DRFRZC) + + setSetting("board", 79); + + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + + setSetting("ledGPIO", 0, 2); + setSetting("ledGPIO", 1, 0); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("ledLogic", 1, GPIO_LOGIC_INVERSE); + setSetting("ledMode", 0, LED_MODE_WIFI); + setSetting("ledMode", 1, LED_MODE_FINDME); + setSetting("ledRelay", 1, 0); + + setSetting("rlyGPIO", 0, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("hlwSELGPIO", 12); + setSetting("hlwCF1GPIO", 14); + setSetting("hlwCFGPIO", 5); + setSetting("hlwCurLevel", LOW); + setSetting("hlwInt", FALLING); + setSetting("curRatio", 25740); + setSetting("volRatio", 313400); + setSetting("pwrRatio", 3414290); + + #elif defined(TINKERMAN_ESPURNA_SWITCH) + + setSetting("board", 80); + setSetting("ledGPIO", 0, 2); + setSetting("ledLogic", 0, GPIO_LOGIC_DIRECT); + setSetting("btnGPIO", 0, 4); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON); + setSetting("btnPress", 0, BUTTON_MODE_TOGGLE); + setSetting("btnClick", 0, BUTTON_MODE_NONE); + setSetting("btnDblClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnLngLngClick", 0, BUTTON_MODE_NONE); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + #elif defined(ITEAD_SONOFF_S31) + + setSetting("board", 81); + setSetting("ledGPIO", 0, 13); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("btnGPIO", 0, 0); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + setSetting("rlyGPIO", 0, 12); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("dbgSerial", 0); + + setSetting("cseEnabled", 1); + setSetting("cseGPIO", 1); + + #elif defined(STM_RELAY) + + setSetting("board", 82); + setSetting("rlyCount", 2); + setSetting("rlyProvider", RELAY_PROVIDER_STM) + setSetting("dbgSerial", 0); + + #elif defined(VANZAVANZU_SMART_WIFI_PLUG_MINI) + + // VANZAVANZU Smart Outlet Socket (based on BL0937 or HJL-01) + // https://www.amazon.com/Smart-Plug-Wifi-Mini-VANZAVANZU/dp/B078PHD6S5 + + setSetting("board", 83); + + setSetting("btnGPIO", 0, 13); + setSetting("btnMode", 0, BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH); + setSetting("btnRelay", 0, 0); + + setSetting("ledGPIO", 0, 2); + setSetting("ledGPIO", 1, 0); + setSetting("ledLogic", 0, GPIO_LOGIC_INVERSE); + setSetting("ledLogic", 1, GPIO_LOGIC_INVERSE); + setSetting("ledMode", 0, LED_MODE_WIFI); + setSetting("ledMode", 1, LED_MODE_FINDME); + setSetting("ledRelay", 1, 0); + + setSetting("rlyGPIO", 0, 15); + setSetting("rlyType", 0, RELAY_TYPE_NORMAL); + + setSetting("hlwSELGPIO", 3); + setSetting("hlwCF1GPIO", 14); + setSetting("hlwCFGPIO", 5); + setSetting("hlwCurLevel", LOW); + setSetting("hlwInt", FALLING); + setSetting("curRatio", 25740); + setSetting("volRatio", 313400); + setSetting("pwrRatio", 3414290); + + #elif defined(GENERIC_GEIGER_COUNTER) + + setSetting("board", 83); + setSetting("geiEnabled", 1); + + #else + + // Allow users to define new settings without migration config + //#error "UNSUPPORTED HARDWARE!" + + #endif saveSettings(); diff --git a/code/espurna/rf.ino b/code/espurna/rf.ino index 825703fb..44643a72 100644 --- a/code/espurna/rf.ino +++ b/code/espurna/rf.ino @@ -89,10 +89,16 @@ bool _rfMatch(unsigned long code, unsigned char& relayID, unsigned char& value) } +bool _rfKeyCheck(const char * key) { + return (strncmp(key, "rfb", 3) == 0); +} + // ----------------------------------------------------------------------------- // WEB // ----------------------------------------------------------------------------- +#if WEB_SUPPORT + void _rfWebSocketOnSend(JsonObject& root) { char buffer[20]; root["rfbVisible"] = 1; @@ -115,6 +121,8 @@ void _rfWebSocketOnAction(uint32_t client_id, const char * action, JsonObject& d if (strcmp(action, "rfbsend") == 0) _rfStore(data["id"], data["status"], data["data"].as()); } +#endif + // ----------------------------------------------------------------------------- void rfLoop() { @@ -186,6 +194,9 @@ void rfSetup() { wsOnActionRegister(_rfWebSocketOnAction); #endif + // Key Check + settingsRegisterKeyCheck(_rfKeyCheck); + // Register loop espurnaRegisterLoop(rfLoop); diff --git a/code/espurna/rfbridge.ino b/code/espurna/rfbridge.ino index 5c1be3e3..ead22b7b 100644 --- a/code/espurna/rfbridge.ino +++ b/code/espurna/rfbridge.ino @@ -518,6 +518,10 @@ void _rfbMqttCallback(unsigned int type, const char * topic, const char * payloa } #endif +bool _rfbKeyCheck(const char * key) { + return (strncmp(key, "rfb", 3) == 0); +} + // ----------------------------------------------------------------------------- // PUBLIC // ----------------------------------------------------------------------------- @@ -624,6 +628,9 @@ void rfbSetup() { DEBUG_MSG_P(PSTR("[RFBRIDGE] RF transmitter on GPIO %u\n"), RFB_TX_PIN); #endif + // Key Check + settingsRegisterKeyCheck(_rfbKeyCheck); + // Register loop espurnaRegisterLoop(rfbLoop); diff --git a/code/espurna/sensor.ino b/code/espurna/sensor.ino index 39a8e8c3..eccaca32 100644 --- a/code/espurna/sensor.ino +++ b/code/espurna/sensor.ino @@ -4,7 +4,9 @@ SENSOR MODULE Copyright (C) 2016-2018 by Xose Pérez -Module key prefix: sns pwr ene cur vol tmp hum +Module key prefix: sns +Magnitude-based key prefix: pwr ene cur vol tmp hum +Sensor-based key previs: hlw bme dht ds cse v92 pze ech gei */ @@ -842,7 +844,15 @@ bool _sensorKeyCheck(const char * key) { if (strncmp(key, "tmp", 3) == 0) return true; if (strncmp(key, "hum", 3) == 0) return true; + if (strncmp(key, "bme", 3) == 0) return true; + if (strncmp(key, "dht", 3) == 0) return true; + if (strncmp(key, "ds" , 2) == 0) return true; if (strncmp(key, "hlw", 3) == 0) return true; + if (strncmp(key, "cse", 3) == 0) return true; + if (strncmp(key, "v92", 3) == 0) return true; + if (strncmp(key, "ech", 3) == 0) return true; + if (strncmp(key, "gei", 3) == 0) return true; + if (strncmp(key, "pze", 3) == 0) return true; return false; } diff --git a/code/espurna/uartmqtt.ino b/code/espurna/uartmqtt.ino index f3f31302..bdf01109 100644 --- a/code/espurna/uartmqtt.ino +++ b/code/espurna/uartmqtt.ino @@ -82,6 +82,11 @@ void _uartmqttMQTTCallback(unsigned int type, const char * topic, const char * p } +bool _uartmqttKeyCheck(const char * key) { + return (strncmp(key, "u2m", 3) == 0); +} + + // ----------------------------------------------------------------------------- // SETUP & LOOP // ----------------------------------------------------------------------------- @@ -99,6 +104,9 @@ void uartmqttSetup() { // Register MQTT callbackj mqttRegister(_uartmqttMQTTCallback); + // Register key check + settingsRegisterKeyCheck(_uartmqttKeyCheck); + // Register loop espurnaRegisterLoop(_uartmqttLoop); diff --git a/code/platformio.ini b/code/platformio.ini index 9e42b38a..62ad870d 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -327,17 +327,6 @@ build_flags = ${common.build_flags_4m1m} -DTINKERMAN_ESPURNA_SWITCH monitor_speed = ${common.monitor_speed} extra_scripts = ${common.extra_scripts} -[env:wemos-d1-tarpunashield] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board_4m} -board_build.flash_mode = ${common.flash_mode} -lib_deps = ${common.lib_deps} -lib_ignore = ${common.lib_ignore} -build_flags = ${common.build_flags_4m1m} -DWEMOS_D1_TARPUNA_SHIELD -monitor_speed = ${common.monitor_speed} -extra_scripts = ${common.extra_scripts} - # ------------------------------------------------------------------------------ [env:itead-sonoff-basic] @@ -2278,7 +2267,7 @@ board = ${common.board_4m} board_build.flash_mode = ${common.flash_mode} lib_deps = ${common.lib_deps} lib_ignore = ${common.lib_ignore} -build_flags = ${common.build_flags_1m0m} -DNODEMCU_BASIC -DGEIGER_SUPPORT=1 -DEVENTS_SUPPORT=0 -DINFLUXDB_SUPPORT=1 -DALEXA_SUPPORT=0 -DALEXA_ENABLED=0 +build_flags = ${common.build_flags_1m0m} -DGENERIC_GEIGER_COUNTER upload_speed = ${common.upload_speed_fast} monitor_speed = ${common.monitor_speed} extra_scripts = ${common.extra_scripts} @@ -2290,7 +2279,7 @@ board = ${common.board_4m} board_build.flash_mode = ${common.flash_mode} lib_deps = ${common.lib_deps} lib_ignore = ${common.lib_ignore} -build_flags = ${common.build_flags_1m0m} -DNODEMCU_BASIC -DGEIGER_SUPPORT=1 -DEVENTS_SUPPORT=0 -DINFLUXDB_SUPPORT=1 -DALEXA_SUPPORT=0 -DALEXA_ENABLED=0 +build_flags = ${common.build_flags_1m0m} -DGENERIC_GEIGER_COUNTER upload_speed = ${common.upload_speed_fast} monitor_speed = ${common.monitor_speed} upload_port = ${common.upload_port}