From 9cbd2d531d646a14da110062c34ee21022f49ede Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 25 Sep 2020 18:15:31 +0200 Subject: [PATCH 1/9] Initial GPIO redesign --- tasmota/settings.h | 18 +- tasmota/settings.ino | 16 +- tasmota/support.ino | 142 +- tasmota/support_button.ino | 4 + tasmota/support_command.ino | 30 +- tasmota/support_tasmota.ino | 32 +- tasmota/tasmota.h | 8 +- tasmota/tasmota.ino | 18 +- tasmota/tasmota_globals.h | 16 +- tasmota/tasmota_template.h | 2753 ++++++++++++++++-------------- tasmota/tasmota_template_ESP32.h | 729 -------- tasmota/xdrv_01_webserver.ino | 207 +-- tasmota/xsns_02_analog.ino | 460 ----- tasmota/xsns_02_analog_esp32.ino | 32 +- 14 files changed, 1800 insertions(+), 2665 deletions(-) delete mode 100644 tasmota/tasmota_template_ESP32.h delete mode 100644 tasmota/xsns_02_analog.ino diff --git a/tasmota/settings.h b/tasmota/settings.h index ba436a495..6df543660 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -424,12 +424,18 @@ struct { SysBitfield3 flag3; // 3A0 uint8_t switchmode[MAX_SWITCHES]; // 3A4 (6.0.0b - moved from 0x4CA) +//#ifdef ESP8266 +// char ex_friendlyname[4][33]; // 3AC +// char ex_switch_topic[33]; // 430 +//#else // ESP32 + myio my_gp; // 3AC - 2 x 18 bytes (ESP8266) / 2 x 40 bytes (ESP32) #ifdef ESP8266 - char ex_friendlyname[4][33]; // 3AC - char ex_switch_topic[33]; // 430 + uint8_t free_esp8266_3D0[44]; // 3D0 +#endif + mytmplt user_template; // 3FC - 2 x 15 bytes (ESP8266) / 2 x 37 bytes (ESP32) +#ifdef ESP8266 + uint8_t free_esp8266_41A[55]; // 41A #else // ESP32 - myio my_gp; // 3AC - 2 x 40 bytes (ESP32) - mytmplt user_template; // 3FC - 2 x 37 bytes (ESP32) uint8_t eth_type; // 446 uint8_t eth_clk_mode; // 447 @@ -449,7 +455,7 @@ struct { uint8_t ws_width[3]; // 481 #ifdef ESP8266 - myio my_gp; // 484 - 17 bytes (ESP8266) + myio8 my_gp8; // 484 - 17 bytes (ESP8266) #else // ESP32 uint8_t free_esp32_484[17]; // 484 #endif // ESP8266 - ESP32 @@ -508,7 +514,7 @@ struct { char user_template_name[15]; // 720 15 bytes - Backward compatibility since v8.2.0.3 #ifdef ESP8266 - mytmplt user_template; // 72F 14 bytes (ESP8266) + mytmplt8285 user_template8; // 72F 14 bytes (ESP8266) #else // ESP32 uint8_t free_esp32_72f[14]; // 72F #endif // ESP8266 - ESP32 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index a26c89b3d..c1f3cb4de 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1193,8 +1193,8 @@ void SettingsDelta(void) } } for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { - if (Settings.my_gp.io[i] >= GPIO_SWT5) { // Move up from GPIO_SWT5 to GPIO_KEY1 - Settings.my_gp.io[i] += 4; + if (Settings.my_gp8.io[i] >= GPI8_SWT5) { // Move up from GPIO_SWT5 to GPIO_KEY1 + Settings.my_gp8.io[i] += 4; } } } @@ -1259,7 +1259,7 @@ void SettingsDelta(void) Settings.ledmask = APP_LEDMASK; } if (Settings.version < 0x0605000A) { - Settings.my_adc0 = ADC0_NONE; +// Settings.my_adc0 = ADC0_NONE; } if (Settings.version < 0x0605000D) { Settings.param[P_IR_UNKNOW_THRESHOLD] = IR_RCV_MIN_UNKNOWN_SIZE; @@ -1450,7 +1450,7 @@ void SettingsDelta(void) SettingsUpdateText(SET_WEBPWD, Settings.ex_web_password); SettingsUpdateText(SET_CORS, Settings.ex_cors_domain); SettingsUpdateText(SET_MQTT_FULLTOPIC, Settings.ex_mqtt_fulltopic); - SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, Settings.ex_switch_topic); +// SettingsUpdateText(SET_MQTT_SWITCH_TOPIC, Settings.ex_switch_topic); SettingsUpdateText(SET_STATE_TXT1, Settings.ex_state_text[0]); SettingsUpdateText(SET_STATE_TXT2, Settings.ex_state_text[1]); SettingsUpdateText(SET_STATE_TXT3, Settings.ex_state_text[2]); @@ -1463,10 +1463,10 @@ void SettingsDelta(void) SettingsUpdateText(SET_MEM3, Settings.script_pram[2]); SettingsUpdateText(SET_MEM4, Settings.script_pram[3]); SettingsUpdateText(SET_MEM5, Settings.script_pram[4]); - SettingsUpdateText(SET_FRIENDLYNAME1, Settings.ex_friendlyname[0]); - SettingsUpdateText(SET_FRIENDLYNAME2, Settings.ex_friendlyname[1]); - SettingsUpdateText(SET_FRIENDLYNAME3, Settings.ex_friendlyname[2]); - SettingsUpdateText(SET_FRIENDLYNAME4, Settings.ex_friendlyname[3]); +// SettingsUpdateText(SET_FRIENDLYNAME1, Settings.ex_friendlyname[0]); +// SettingsUpdateText(SET_FRIENDLYNAME2, Settings.ex_friendlyname[1]); +// SettingsUpdateText(SET_FRIENDLYNAME3, Settings.ex_friendlyname[2]); +// SettingsUpdateText(SET_FRIENDLYNAME4, Settings.ex_friendlyname[3]); } if (Settings.version < 0x08020003) { SettingsUpdateText(SET_TEMPLATE_NAME, Settings.user_template_name); diff --git a/tasmota/support.ino b/tasmota/support.ino index eddffeab6..399912f78 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1119,13 +1119,37 @@ int ResponseJsonEndEnd(void) * GPIO Module and Template management \*********************************************************************************************/ +uint16_t GpioConvert(uint8_t gpio) { + if (gpio > ARRAY_SIZE(kGpioConvert)) { + return AGPIO(GPIO_USER); + } + return pgm_read_word(kGpioConvert + gpio); +} + +uint16_t Adc0Convert(uint8_t adc0) { + if (adc0 > 7) { + return AGPIO(GPIO_USER); + } + else if (0 == adc0) { + return GPIO_NONE; + } + return AGPIO(GPIO_ADC_INPUT + adc0 -1); +} + +void TemplateConvert(uint8_t template8[], uint16_t template16[]) { + for (uint32_t i = 0; i < (sizeof(mytmplt) / 2) -2; i++) { + template16[i] = GpioConvert(template8[i]); + } + template16[(sizeof(mytmplt) / 2) -2] = Adc0Convert(template8[sizeof(mytmplt8285) -1]); +} + uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index = 0); uint32_t ICACHE_RAM_ATTR Pin(uint32_t gpio, uint32_t index) { -#ifdef ESP8266 - uint16_t real_gpio = gpio + index; -#else // ESP32 +//#ifdef ESP8266 +// uint16_t real_gpio = gpio + index; +//#else // ESP32 uint16_t real_gpio = (gpio << 5) + index; -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 for (uint32_t i = 0; i < ARRAY_SIZE(gpio_pin); i++) { if (gpio_pin[i] == real_gpio) { return i; // Pin number configured for gpio @@ -1212,30 +1236,35 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Template %d, Option %d"), module_template, option); - uint8_t internal_template[sizeof(mytmplt)] = { GPIO_NONE }; + // template8 = GPIO 0,1,2,3,4,5,9,10,12,13,14,15,16,Adc + uint8_t template8[sizeof(mytmplt8285)] = { GPIO_NONE }; if (module_template < TMP_WEMOS) { - memcpy_P(&internal_template, &kModules8266[module_template], 6); - memcpy_P(&internal_template[8], &kModules8266[module_template].gp.io[6], 6); + memcpy_P(&template8, &kModules8266[module_template], 6); + memcpy_P(&template8[8], &kModules8266[module_template].gp.io[6], 6); } else { - memcpy_P(&internal_template, &kModules8285[module_template - TMP_WEMOS], sizeof(mytmplt)); + memcpy_P(&template8, &kModules8285[module_template - TMP_WEMOS], sizeof(template8)); } -// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&internal_template, sizeof(mytmplt)); +// AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&template8, sizeof(mytmplt)); + + // template16 = GPIO 0,1,2,3,4,5,9,10,12,13,14,15,16,Adc,Flg + uint16_t template16[(sizeof(mytmplt) / 2)] = { GPIO_NONE }; + TemplateConvert(template8, template16); uint32_t index = 0; - uint32_t size = sizeof(mycfgio); // kmodules[module_template].gp + uint32_t size = sizeof(mycfgio); // template16[module_template].gp switch (option) { case 2: { - index = sizeof(internal_template) -1; // kModules[module_template].flag - size = 1; + index = sizeof(template16) -2; // template16[module_template].flag + size = 2; break; } case 3: { - size = sizeof(internal_template); // kmodules[module_template] + size = sizeof(template16); // template16[module_template] break; } } - memcpy(ptr, &internal_template[index], size); + memcpy(ptr, &template16[index], size); // AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)ptr, size); } @@ -1243,13 +1272,13 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { void ModuleGpios(myio *gp) { -#ifdef ESP8266 - uint8_t *dest = (uint8_t *)gp; - uint8_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -#else // ESP32 +//#ifdef ESP8266 +// uint8_t *dest = (uint8_t *)gp; +// uint8_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; +//#else // ESP32 uint16_t *dest = (uint16_t *)gp; uint16_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 memset(dest, GPIO_NONE, sizeof(myio)); if (USER_MODULE == Settings.module) { @@ -1338,20 +1367,19 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) return (GPIO_USER == ValidPin(pin, BGPIO(gpio))); // Only allow GPIO_USER pins } -#ifdef ESP8266 -bool ValidAdc(void) -{ - gpio_flag flag = ModuleFlag(); - uint32_t template_adc0 = flag.data &15; - return (ADC0_USER == template_adc0); -} -#endif // ESP8266 +//#ifdef ESP8266 +//bool ValidAdc(void) { +// gpio_flag flag = ModuleFlag(); +// uint32_t template_adc0 = flag.data &15; +// return (ADC0_USER == template_adc0); +//} +//#endif // ESP8266 -#ifdef ESP8266 -bool GetUsedInModule(uint32_t val, uint8_t *arr) -#else // ESP32 +//#ifdef ESP8266 +//bool GetUsedInModule(uint32_t val, uint8_t *arr) +//#else // ESP32 bool GetUsedInModule(uint32_t val, uint16_t *arr) -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 { int offset = 0; @@ -1414,7 +1442,8 @@ bool GetUsedInModule(uint32_t val, uint16_t *arr) bool JsonTemplate(const char* dataBuf) { - // {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} + // Old: {"NAME":"Generic","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254],"FLAG":1,"BASE":255} + // New: {"NAME":"Generic16","GPIO":[17,254,29,254,7,254,254,254,138,254,139,254,254,254],"FLAG":1,"BASE":255} if (strlen(dataBuf) < 9) { return false; } // Workaround exception if empty JSON like {} - Needs checks @@ -1432,22 +1461,41 @@ bool JsonTemplate(const char* dataBuf) SettingsUpdateText(SET_TEMPLATE_NAME, name); } if (obj[D_JSON_GPIO].success()) { - for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { #ifdef ESP8266 - Settings.user_template.gp.io[i] = obj[D_JSON_GPIO][i] | 0; -#else // ESP32 - uint16_t gpio = obj[D_JSON_GPIO][i] | 0; - if (gpio == (AGPIO(GPIO_NONE) +1)) { - gpio = AGPIO(GPIO_USER); + if (!obj[D_JSON_GPIO][13].success()) { // Old template + uint8_t template8[sizeof(mytmplt8285)] = { GPIO_NONE }; + for (uint32_t i = 0; i < ARRAY_SIZE(template8) -1; i++) { + template8[i] = obj[D_JSON_GPIO][i] | 0; } - Settings.user_template.gp.io[i] = gpio; + if (obj[D_JSON_FLAG].success()) { + template8[ARRAY_SIZE(template8) -1] = (obj[D_JSON_FLAG] | 0) & 0x0F; + } + TemplateConvert(template8, Settings.user_template.gp.io); + Settings.user_template.flag.data = 0; + } else { #endif + for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { +// #ifdef ESP8266 +// Settings.user_template.gp.io[i] = obj[D_JSON_GPIO][i] | 0; +// #else // ESP32 + uint16_t gpio = obj[D_JSON_GPIO][i] | 0; + if (gpio == (AGPIO(GPIO_NONE) +1)) { + gpio = AGPIO(GPIO_USER); + } + Settings.user_template.gp.io[i] = gpio; +// #endif + } + if (obj[D_JSON_FLAG].success()) { + Settings.user_template.flag.data = obj[D_JSON_FLAG] | 0; + } +#ifdef ESP8266 } +#endif } - if (obj[D_JSON_FLAG].success()) { - uint32_t flag = obj[D_JSON_FLAG] | 0; - memcpy(&Settings.user_template.flag, &flag, sizeof(gpio_flag)); - } +// if (obj[D_JSON_FLAG].success()) { +// uint32_t flag = obj[D_JSON_FLAG] | 0; +// memcpy(&Settings.user_template.flag, &flag, sizeof(gpio_flag)); +// } if (obj[D_JSON_BASE].success()) { uint32_t base = obj[D_JSON_BASE]; if ((0 == base) || !ValidTemplateModule(base -1)) { base = 18; } @@ -1460,15 +1508,15 @@ void TemplateJson(void) { Response_P(PSTR("{\"" D_JSON_NAME "\":\"%s\",\"" D_JSON_GPIO "\":["), SettingsText(SET_TEMPLATE_NAME)); for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { -#ifdef ESP8266 - ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Settings.user_template.gp.io[i]); -#else // ESP32 +//#ifdef ESP8266 +// ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Settings.user_template.gp.io[i]); +//#else // ESP32 uint16_t gpio = Settings.user_template.gp.io[i]; if (gpio == AGPIO(GPIO_USER)) { gpio = AGPIO(GPIO_NONE) +1; } ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", gpio); -#endif +//#endif } ResponseAppend_P(PSTR("],\"" D_JSON_FLAG "\":%d,\"" D_JSON_BASE "\":%d}"), Settings.user_template.flag, Settings.user_template_base +1); } diff --git a/tasmota/support_button.ino b/tasmota/support_button.ino index be8a4dabb..c2979fccf 100644 --- a/tasmota/support_button.ino +++ b/tasmota/support_button.ino @@ -90,6 +90,7 @@ void ButtonInit(void) Button.present++; pinMode(Pin(GPIO_KEY1, i), bitRead(Button.no_pullup_mask, i) ? INPUT : ((16 == Pin(GPIO_KEY1, i)) ? INPUT_PULLDOWN_16 : INPUT_PULLUP)); } +/* #ifdef ESP8266 #ifndef USE_ADC_VCC else if ((99 == Button.adc) && ((ADC0_BUTTON == my_adc0) || (ADC0_BUTTON_INV == my_adc0))) { @@ -98,6 +99,7 @@ void ButtonInit(void) } #endif // USE_ADC_VCC #endif // ESP8266 +*/ } } @@ -167,12 +169,14 @@ void ButtonHandler(void) #ifndef USE_ADC_VCC if (Button.adc == button_index) { button_present = 1; +/* if (ADC0_BUTTON_INV == my_adc0) { button = (AdcRead(1) < 128); } else if (ADC0_BUTTON == my_adc0) { button = (AdcRead(1) > 128); } +*/ } #endif // USE_ADC_VCC #else // ESP32 diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index db83627e3..3558808c7 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1119,19 +1119,19 @@ void CmndGpio(void) if (ValidGPIO(XdrvMailbox.index, cmodule.io[XdrvMailbox.index]) && (XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < AGPIO(GPIO_SENSOR_END))) { bool present = false; for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { -#ifdef ESP8266 - uint32_t midx = pgm_read_byte(kGpioNiceList + i); - if (midx == XdrvMailbox.payload) { - present = true; - break; - } -#else // ESP32 +//#ifdef ESP8266 +// uint32_t midx = pgm_read_byte(kGpioNiceList + i); +// if (midx == XdrvMailbox.payload) { +// present = true; +// break; +// } +//#else // ESP32 uint32_t midx = pgm_read_word(kGpioNiceList + i); if ((XdrvMailbox.payload >= (midx & 0xFFE0)) && (XdrvMailbox.payload < midx)) { present = true; break; } -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 } if (present) { for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { @@ -1158,7 +1158,7 @@ void CmndGpio(void) } char sindex[4] = { 0 }; uint32_t sensor_name_idx = BGPIO(sensor_type); -#ifdef ESP32 +//#ifdef ESP32 uint32_t nice_list_search = sensor_type & 0xFFE0; for (uint32_t j = 0; j < ARRAY_SIZE(kGpioNiceList); j++) { uint32_t nls_idx = pgm_read_word(kGpioNiceList + j); @@ -1167,7 +1167,7 @@ void CmndGpio(void) break; } } -#endif // ESP32 +//#endif // ESP32 const char *sensor_names = kSensorNames; if (sensor_name_idx > GPIO_FIX_START) { sensor_name_idx = sensor_name_idx - GPIO_FIX_START -1; @@ -1193,13 +1193,13 @@ void CmndGpios(void) uint32_t lines = 1; bool jsflg = false; for (uint32_t i = 0; i < ARRAY_SIZE(kGpioNiceList); i++) { -#ifdef ESP8266 - uint32_t midx = pgm_read_byte(kGpioNiceList + i); - uint32_t ridx = midx; -#else // ESP32 +//#ifdef ESP8266 +// uint32_t midx = pgm_read_byte(kGpioNiceList + i); +// uint32_t ridx = midx; +//#else // ESP32 uint32_t ridx = pgm_read_word(kGpioNiceList + i) & 0xFFE0; uint32_t midx = BGPIO(ridx); -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 if ((XdrvMailbox.payload != 255) && GetUsedInModule(midx, cmodule.io)) { continue; } if (!jsflg) { Response_P(PSTR("{\"" D_CMND_GPIOS "%d\":{"), lines); diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 6aeec7665..e241a9bb2 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1476,6 +1476,12 @@ void GpioInit(void) // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("DBG: Used GPIOs %d"), GPIO_SENSOR_END); + if (Settings.user_template8.flag != 255) { + // Convert 8-bit user template + TemplateConvert((uint8_t*)&Settings.user_template8, (uint16_t*)&Settings.user_template); + Settings.user_template8.flag = 255; + } + for (uint32_t i = 0; i < ARRAY_SIZE(Settings.user_template.gp.io); i++) { if ((Settings.user_template.gp.io[i] >= AGPIO(GPIO_SENSOR_END)) && (Settings.user_template.gp.io[i] < AGPIO(GPIO_USER))) { Settings.user_template.gp.io[i] = AGPIO(GPIO_USER); // Fix not supported sensor ids in template @@ -1495,19 +1501,19 @@ void GpioInit(void) my_module.io[i] = def_gp.io[i]; // Force Template override } } -#ifdef ESP8266 - if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) { - Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module - } - else if (Settings.my_adc0 > ADC0_NONE) { - my_adc0 = Settings.my_adc0; // Set User selected Module sensors - } - my_module_flag = ModuleFlag(); - uint32_t template_adc0 = my_module_flag.data &15; - if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) { - my_adc0 = template_adc0; // Force Template override - } -#endif +//#ifdef ESP8266 +// if ((Settings.my_adc0 >= ADC0_END) && (Settings.my_adc0 < ADC0_USER)) { +// Settings.my_adc0 = ADC0_NONE; // Fix not supported sensor ids in module +// } +// else if (Settings.my_adc0 > ADC0_NONE) { +// my_adc0 = Settings.my_adc0; // Set User selected Module sensors +// } +// my_module_flag = ModuleFlag(); +// uint32_t template_adc0 = my_module_flag.data &15; +// if ((template_adc0 > ADC0_NONE) && (template_adc0 < ADC0_USER)) { +// my_adc0 = template_adc0; // Force Template override +// } +//#endif for (uint32_t i = 0; i < ARRAY_SIZE(my_module.io); i++) { uint32_t mpin = ValidPin(i, my_module.io[i]); diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 96cd9e49c..622c8211b 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -82,7 +82,11 @@ const uint8_t MAX_FRIENDLYNAMES = 8; // Max number of Friendly names const uint8_t MAX_BUTTON_TEXT = 16; // Max number of GUI button labels const uint8_t MAX_GROUP_TOPICS = 4; // Max number of Group Topics const uint8_t MAX_DEV_GROUP_NAMES = 4; // Max number of Device Group names +#ifdef ESP8266 +const uint8_t MAX_ADCS = 1; // Max number of ADC pins +#else const uint8_t MAX_ADCS = 8; // Max number of ESP32 ADC pins (ADC2 pins are unusable with Wifi enabled) +#endif const uint8_t MAX_HUE_DEVICES = 15; // Max number of Philips Hue device per emulation const uint8_t MAX_ROTARIES = 2; // Max number of Rotary Encoders @@ -297,7 +301,9 @@ enum SettingsTextIndex { SET_OTAURL, SET_DEV_GROUP_NAME1, SET_DEV_GROUP_NAME2, SET_DEV_GROUP_NAME3, SET_DEV_GROUP_NAME4, // MAX_DEV_GROUP_NAMES SET_DEVICENAME, SET_TELEGRAM_TOKEN, SET_TELEGRAM_CHATID, -#ifdef ESP32 +#ifdef ESP8266 + SET_ADC_PARAM1, +#else // ESP32 SET_ADC_PARAM1, SET_ADC_PARAM2, SET_ADC_PARAM3, SET_ADC_PARAM4, SET_ADC_PARAM5, SET_ADC_PARAM6, SET_ADC_PARAM7, SET_ADC_PARAM8, // MAX_ADCS #endif SET_MAX }; diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index b8d3293da..8da42b961 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -116,9 +116,9 @@ uint16_t blink_counter = 0; // Number of blink cycles uint16_t seriallog_timer = 0; // Timer to disable Seriallog uint16_t syslog_timer = 0; // Timer to re-enable syslog_level -#ifdef ESP32 +//#ifdef ESP32 uint16_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -#endif // ESP32 +//#endif // ESP32 int16_t save_data_counter; // Counter and flag for config save to Flash RulesBitfield rules_flag; // Rule state flags (16 bits) @@ -129,9 +129,9 @@ uint8_t latching_relay_pulse = 0; // Latching relay pulse timer uint8_t ssleep; // Current copy of Settings.sleep uint8_t blinkspeed = 1; // LED blink rate -#ifdef ESP8266 -uint8_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -#endif // ESP8266 - ESP32 +//#ifdef ESP8266 +//uint8_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number +//#endif // ESP8266 - ESP32 uint8_t active_device = 1; // Active device in ExecuteCommandPower uint8_t leds_present = 0; // Max number of LED supported @@ -171,7 +171,7 @@ bool is_8285 = false; // Hardware device ESP8266EX (0) or bool skip_light_fade; // Temporarily skip light fading bool restart_halt = false; // Do not restart but stay in wait loop myio my_module; // Active copy of Module GPIOs (17 x 8 bits) -gpio_flag my_module_flag; // Active copy of Template GPIO flags +//gpio_flag my_module_flag; // Active copy of Template GPIO flags StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits) char my_version[33]; // Composed version string char my_image[33]; // Code image and/or commit @@ -276,9 +276,9 @@ void setup(void) { for (uint32_t i = 0; i < ARRAY_SIZE(Settings.my_gp.io); i++) { Settings.my_gp.io[i] = GPIO_NONE; // Reset user defined GPIO disabling sensors } -#ifdef ESP8266 - Settings.my_adc0 = ADC0_NONE; // Reset user defined ADC0 disabling sensors -#endif +//#ifdef ESP8266 +// Settings.my_adc0 = ADC0_NONE; // Reset user defined ADC0 disabling sensors +//#endif } if (RtcReboot.fast_reboot_count > Settings.param[P_BOOT_LOOP_OFFSET] +4) { // Restarted 6 times Settings.module = Settings.fallback_module; // Reset module to fallback module diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index edf933c12..a711e35a1 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -327,6 +327,12 @@ const char kWebColors[] PROGMEM = #define ARDUINO_CORE_RELEASE ARDUINO_ESP8266_RELEASE #endif // ARDUINO_ESP8266_RELEASE +#ifndef USE_ADC_VCC +#define USE_ADC +#else +#undef USE_ADC +#endif + #endif // ESP8266 #ifdef ESP32 @@ -372,13 +378,13 @@ const char kWebColors[] PROGMEM = #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #endif -#ifdef ESP8266 -#define AGPIO(x) (x) -#define BGPIO(x) (x) -#else // ESP32 +//#ifdef ESP8266 +//#define AGPIO(x) (x) +//#define BGPIO(x) (x) +//#else // ESP32 #define AGPIO(x) (x<<5) #define BGPIO(x) (x>>5) -#endif // ESP8266 - ESP32 +//#endif // ESP8266 - ESP32 #ifdef USE_DEVICE_GROUPS #define SendDeviceGroupMessage(DEVICE_INDEX, REQUEST_TYPE, ...) _SendDeviceGroupMessage(DEVICE_INDEX, REQUEST_TYPE, __VA_ARGS__, 0) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 944165eef..da59989cc 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -20,242 +20,949 @@ #ifndef _TASMOTA_TEMPLATE_H_ #define _TASMOTA_TEMPLATE_H_ -#ifdef ESP8266 +#ifdef ESP32 + +// Hardware has no ESP32 +#undef USE_TUYA_DIMMER +#undef USE_PWM_DIMMER +#undef USE_EXS_DIMMER +#undef USE_ARMTRONIX_DIMMERS +#undef USE_SONOFF_RF +#undef USE_SONOFF_SC +#undef USE_SONOFF_IFAN +#undef USE_SONOFF_L1 +#undef USE_SONOFF_D1 +#undef USE_RF_FLASH + +// Not ported (yet) +#undef USE_DISCOVERY +#undef USE_MY92X1 +#undef USE_TUYA_MCU +#undef USE_PS_16_DZ + +#endif // ESP32 // User selectable GPIO functionality // ATTENTION: Only add at the end of this list just before GPIO_SENSOR_END // Then add the same name(s) in a nice location in array kGpioNiceList enum UserSelectablePins { - GPIO_NONE, // Not used - GPIO_DHT11, // DHT11 - GPIO_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_SI7021, // iTead SI7021 - GPIO_DSB, // Single wire DS18B20 or DS18S20 - GPIO_I2C_SCL, // I2C SCL - GPIO_I2C_SDA, // I2C SDA - GPIO_WS2812, // WS2812 Led string - GPIO_IRSEND, // IR remote - GPIO_SWT1, // User connected external switches - GPIO_SWT2, - GPIO_SWT3, - GPIO_SWT4, - GPIO_SWT5, - GPIO_SWT6, - GPIO_SWT7, - GPIO_SWT8, - GPIO_KEY1, // Button usually connected to GPIO0 - GPIO_KEY2, - GPIO_KEY3, - GPIO_KEY4, - GPIO_REL1, // Relays - GPIO_REL2, - GPIO_REL3, - GPIO_REL4, - GPIO_REL5, - GPIO_REL6, - GPIO_REL7, - GPIO_REL8, - GPIO_REL1_INV, - GPIO_REL2_INV, - GPIO_REL3_INV, - GPIO_REL4_INV, - GPIO_REL5_INV, - GPIO_REL6_INV, - GPIO_REL7_INV, - GPIO_REL8_INV, - GPIO_PWM1, // RGB Red or C Cold White - GPIO_PWM2, // RGB Green or CW Warm White - GPIO_PWM3, // RGB Blue - GPIO_PWM4, // RGBW (Cold) White - GPIO_PWM5, // RGBCW Warm White - GPIO_CNTR1, - GPIO_CNTR2, - GPIO_CNTR3, - GPIO_CNTR4, - GPIO_PWM1_INV, // RGB Red or C Cold White - GPIO_PWM2_INV, // RGB Green or CW Warm White - GPIO_PWM3_INV, // RGB Blue - GPIO_PWM4_INV, // RGBW (Cold) White - GPIO_PWM5_INV, // RGBCW Warm White - GPIO_IRRECV, // IR receiver - GPIO_LED1, // Leds - GPIO_LED2, - GPIO_LED3, - GPIO_LED4, - GPIO_LED1_INV, - GPIO_LED2_INV, - GPIO_LED3_INV, - GPIO_LED4_INV, - GPIO_MHZ_TXD, // MH-Z19 Serial interface - GPIO_MHZ_RXD, // MH-Z19 Serial interface - GPIO_PZEM0XX_TX, // PZEM0XX Serial interface - GPIO_PZEM004_RX, // PZEM004T Serial interface - GPIO_SAIR_TX, // SenseAir Serial interface - GPIO_SAIR_RX, // SenseAir Serial interface - GPIO_SPI_CS, // SPI Chip Select - GPIO_SPI_DC, // SPI Data Direction - GPIO_BACKLIGHT, // Display backlight control - GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface - GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface - GPIO_SBR_TX, // Serial Bridge Serial interface - GPIO_SBR_RX, // Serial Bridge Serial interface - GPIO_SR04_TRIG, // SR04 Trigger/TX pin - GPIO_SR04_ECHO, // SR04 Echo/RX pin - GPIO_SDM120_TX, // SDM120 Serial interface - GPIO_SDM120_RX, // SDM120 Serial interface - GPIO_SDM630_TX, // SDM630 Serial interface - GPIO_SDM630_RX, // SDM630 Serial interface - GPIO_TM16CLK, // TM1638 Clock - GPIO_TM16DIO, // TM1638 Data I/O - GPIO_TM16STB, // TM1638 Strobe - GPIO_SWT1_NP, // User connected external switches - GPIO_SWT2_NP, - GPIO_SWT3_NP, - GPIO_SWT4_NP, - GPIO_SWT5_NP, - GPIO_SWT6_NP, - GPIO_SWT7_NP, - GPIO_SWT8_NP, - GPIO_KEY1_NP, // Button usually connected to GPIO0 - GPIO_KEY2_NP, - GPIO_KEY3_NP, - GPIO_KEY4_NP, - GPIO_CNTR1_NP, - GPIO_CNTR2_NP, - GPIO_CNTR3_NP, - GPIO_CNTR4_NP, - GPIO_PZEM016_RX, // PZEM-014,016 Serial Modbus interface - GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus interface - GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player - GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface - GPIO_HX711_SCK, // HX711 Load Cell clock - GPIO_HX711_DAT, // HX711 Load Cell data - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin - GPIO_RFSEND, // RF transmitter - GPIO_RFRECV, // RF receiver - GPIO_TUYA_TX, // Tuya Serial interface - GPIO_TUYA_RX, // Tuya Serial interface - GPIO_MGC3130_XFER, // MGC3130 Transfer - GPIO_MGC3130_RESET, // MGC3130 Reset - GPIO_SSPI_MISO, // Software SPI Master Input Client Output - GPIO_SSPI_MOSI, // Software SPI Master Output Client Input - GPIO_SSPI_SCLK, // Software SPI Serial Clock - GPIO_SSPI_CS, // Software SPI Chip Select - GPIO_SSPI_DC, // Software SPI Data or Command - GPIO_RF_SENSOR, // Rf receiver with sensor decoding - GPIO_AZ_TXD, // AZ-Instrument 7798 Serial interface - GPIO_AZ_RXD, // AZ-Instrument 7798 Serial interface - GPIO_MAX31855CS, // MAX31855 Serial interface - GPIO_MAX31855CLK, // MAX31855 Serial interface - GPIO_MAX31855DO, // MAX31855 Serial interface - GPIO_KEY1_INV, // Inverted buttons - GPIO_KEY2_INV, - GPIO_KEY3_INV, - GPIO_KEY4_INV, - GPIO_KEY1_INV_NP, // Inverted buttons without pull-up - GPIO_KEY2_INV_NP, - GPIO_KEY3_INV_NP, - GPIO_KEY4_INV_NP, - GPIO_NRG_SEL, // HLW8012/HLJ-01 Sel output (1 = Voltage) - GPIO_NRG_SEL_INV, // HLW8012/HLJ-01 Sel output (0 = Voltage) - GPIO_NRG_CF1, // HLW8012/HLJ-01 CF1 voltage / current - GPIO_HLW_CF, // HLW8012 CF power - GPIO_HJL_CF, // HJL-01/BL0937 CF power - GPIO_MCP39F5_TX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RST, // MCP39F501 Reset (Shelly2) - GPIO_PN532_TXD, // PN532 NFC Serial Tx - GPIO_PN532_RXD, // PN532 NFC Serial Rx - GPIO_SM16716_CLK, // SM16716 CLOCK - GPIO_SM16716_DAT, // SM16716 DATA - GPIO_SM16716_SEL, // SM16716 SELECT - GPIO_DI, // my92x1 PWM input - GPIO_DCKI, // my92x1 CLK input - GPIO_CSE7766_TX, // CSE7766 Serial interface (S31 and Pow R2) - Not used anymore 20200121 - GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) - GPIO_ARIRFRCV, // AriLux RF Receive input - GPIO_TXD, // Serial interface - GPIO_RXD, // Serial interface - GPIO_ROT1A, // Rotary switch1 A Pin - GPIO_ROT1B, // Rotary switch1 B Pin - GPIO_ROT2A, // Rotary switch2 A Pin - GPIO_ROT2B, // Rotary switch2 B Pin - GPIO_HRE_CLOCK, // Clock/Power line for HR-E Water Meter - GPIO_HRE_DATA, // Data line for HR-E Water Meter - GPIO_ADE7953_IRQ, // ADE7953 IRQ - GPIO_LEDLNK, // Link led - GPIO_LEDLNK_INV, // Inverted link led - GPIO_ARIRFSEL, // Arilux RF Receive input selected - GPIO_BUZZER, // Buzzer - GPIO_BUZZER_INV, // Inverted buzzer - GPIO_OLED_RESET, // OLED Display Reset - GPIO_SOLAXX1_TX, // Solax Inverter tx pin - GPIO_SOLAXX1_RX, // Solax Inverter rx pin - GPIO_ZIGBEE_TX, // Zigbee Serial interface - GPIO_ZIGBEE_RX, // Zigbee Serial interface - GPIO_RDM6300_RX, // RDM6300 RX - GPIO_IBEACON_TX, // HM17 IBEACON TX - GPIO_IBEACON_RX, // HM17 IBEACON RX - GPIO_A4988_DIR, // A4988 direction pin - GPIO_A4988_STP, // A4988 step pin - GPIO_A4988_ENA, // A4988 enabled pin - GPIO_A4988_MS1, // A4988 microstep pin1 - GPIO_A4988_MS2, // A4988 microstep pin2 - GPIO_A4988_MS3, // A4988 microstep pin3 - GPIO_DDS2382_TX, // DDS2382 Serial interface - GPIO_DDS2382_RX, // DDS2382 Serial interface - GPIO_DDSU666_TX, // DDSU666 Serial interface - GPIO_DDSU666_RX, // DDSU666 Serial interface - GPIO_SM2135_CLK, // SM2135 Clk - GPIO_SM2135_DAT, // SM2135 Dat - GPIO_DEEPSLEEP, // Kill switch for deepsleep - GPIO_EXS_ENABLE, // EXS MCU Enable - GPIO_TASMOTACLIENT_TXD, // Client TX - GPIO_TASMOTACLIENT_RXD, // Client RX - GPIO_TASMOTACLIENT_RST, // Client Reset Pin - GPIO_TASMOTACLIENT_RST_INV, // Client Reset Inverted - GPIO_HPMA_RX, // Honeywell HPMA115S0 Serial interface - GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface - GPIO_GPS_RX, // GPS serial interface - GPIO_GPS_TX, // GPS serial interface - GPIO_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 - GPIO_DHT11_OUT, // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_HM10_RX, // HM10-BLE-Mijia-bridge serial interface - GPIO_HM10_TX, // HM10-BLE-Mijia-bridge serial interface - GPIO_LE01MR_RX, // F&F LE-01MR energy meter - GPIO_LE01MR_TX, // F&F LE-01MR energy meter - GPIO_CC1101_GDO0, // CC1101 pin for RX - GPIO_CC1101_GDO2, // CC1101 pin for RX - GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor - GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX - GPIO_AS3935, // Franklin Lightning Sensor - GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface - GPIO_BOILER_OT_RX, // OpenTherm Boiler RX pin - GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin - GPIO_WINDMETER_SPEED, // WindMeter speed counter pin - GPIO_BL0940_RX, // BL0940 serial interface - GPIO_TCP_TX, // TCP Serial bridge - GPIO_TCP_RX, // TCP Serial bridge - GPIO_TELEINFO_RX, // TELEINFO serial interface - GPIO_TELEINFO_ENABLE,// TELEINFO Enable PIN - GPIO_LMT01, // LMT01 input counting pin - GPIO_IEM3000_TX, // IEM3000 Serial interface - GPIO_IEM3000_RX, // IEM3000 Serial interface - GPIO_ZIGBEE_RST, // Zigbee reset + GPIO_NONE, // Not used + GPIO_KEY1, GPIO_KEY1_NP, GPIO_KEY1_INV, GPIO_KEY1_INV_NP, // 4 x Button + GPIO_SWT1, GPIO_SWT1_NP, // 8 x User connected external switches + GPIO_REL1, GPIO_REL1_INV, // 8 x Relays + GPIO_LED1, GPIO_LED1_INV, // 4 x Leds + GPIO_CNTR1, GPIO_CNTR1_NP, // 4 x Counter + GPIO_PWM1, GPIO_PWM1_INV, // 5 x PWM + GPIO_BUZZER, GPIO_BUZZER_INV, // Buzzer + GPIO_LEDLNK, GPIO_LEDLNK_INV, // Link led + GPIO_I2C_SCL, GPIO_I2C_SDA, // Software I2C + GPIO_SPI_MISO, GPIO_SPI_MOSI, GPIO_SPI_CLK, GPIO_SPI_CS, GPIO_SPI_DC, // Hardware SPI + GPIO_SSPI_MISO, GPIO_SSPI_MOSI, GPIO_SSPI_SCLK, GPIO_SSPI_CS, GPIO_SSPI_DC, // Software SPI + GPIO_BACKLIGHT, // Display backlight control + GPIO_OLED_RESET, // OLED Display Reset + GPIO_IRSEND, GPIO_IRRECV, // IR interface + GPIO_RFSEND, GPIO_RFRECV, // RF interface + GPIO_DHT11, GPIO_DHT22, GPIO_SI7021, GPIO_DHT11_OUT, // DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 + GPIO_DSB, GPIO_DSB_OUT, // DS18B20 or DS18S20 + GPIO_WS2812, // WS2812 Led string + GPIO_MHZ_TXD, GPIO_MHZ_RXD, // MH-Z19 Serial interface + GPIO_PZEM0XX_TX, GPIO_PZEM004_RX, GPIO_PZEM016_RX, GPIO_PZEM017_RX, // PZEM Serial Modbus interface + GPIO_SAIR_TX, GPIO_SAIR_RX, // SenseAir Serial interface + GPIO_PMS5003_TX, GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface + GPIO_SDS0X1_TX, GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface + GPIO_SBR_TX, GPIO_SBR_RX, // Serial Bridge Serial interface + GPIO_SR04_TRIG, GPIO_SR04_ECHO, // SR04 interface + GPIO_SDM120_TX, GPIO_SDM120_RX, // SDM120 Serial interface + GPIO_SDM630_TX, GPIO_SDM630_RX, // SDM630 Serial interface + GPIO_TM16CLK, GPIO_TM16DIO, GPIO_TM16STB, // TM1638 interface + GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player + GPIO_HX711_SCK, GPIO_HX711_DAT, // HX711 Load Cell interface + GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin + GPIO_TUYA_TX, GPIO_TUYA_RX, // Tuya Serial interface + GPIO_MGC3130_XFER, GPIO_MGC3130_RESET, // MGC3130 interface + GPIO_RF_SENSOR, // Rf receiver with sensor decoding + GPIO_AZ_TXD, GPIO_AZ_RXD, // AZ-Instrument 7798 Serial interface + GPIO_MAX31855CS, GPIO_MAX31855CLK, GPIO_MAX31855DO, // MAX31855 Serial interface + GPIO_NRG_SEL, GPIO_NRG_SEL_INV, GPIO_NRG_CF1, GPIO_HLW_CF, GPIO_HJL_CF, // HLW8012/HJL-01/BL0937 energy monitoring + GPIO_MCP39F5_TX, GPIO_MCP39F5_RX, GPIO_MCP39F5_RST, // MCP39F501 Energy monitoring (Shelly2) + GPIO_PN532_TXD, GPIO_PN532_RXD, // PN532 NFC Serial interface + GPIO_SM16716_CLK, GPIO_SM16716_DAT, GPIO_SM16716_SEL, // SM16716 SELECT + GPIO_DI, GPIO_DCKI, // my92x1 PWM controller + GPIO_CSE7766_TX, GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) + GPIO_ARIRFRCV, GPIO_ARIRFSEL, // Arilux RF Receive input + GPIO_TXD, GPIO_RXD, // Serial interface + GPIO_ROT1A, GPIO_ROT1B, // Rotary switch + GPIO_ADC_JOY, // Analog joystick + GPIO_SSPI_MAX31865_CS1, // MAX31865 Chip Select + GPIO_HRE_CLOCK, GPIO_HRE_DATA, // HR-E Water Meter + GPIO_ADE7953_IRQ, // ADE7953 IRQ + GPIO_SOLAXX1_TX, GPIO_SOLAXX1_RX, // Solax Inverter Serial interface + GPIO_ZIGBEE_TX, GPIO_ZIGBEE_RX, // Zigbee Serial interface + GPIO_RDM6300_RX, // RDM6300 RX + GPIO_IBEACON_TX, GPIO_IBEACON_RX, // HM17 IBEACON Serial interface + GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, // A4988 interface + GPIO_A4988_MS1, GPIO_A4988_MS2, GPIO_A4988_MS3, // A4988 microstep + GPIO_DDS2382_TX, GPIO_DDS2382_RX, // DDS2382 Serial interface + GPIO_DDSU666_TX, GPIO_DDSU666_RX, // DDSU666 Serial interface + GPIO_SM2135_CLK, GPIO_SM2135_DAT, // SM2135 PWM controller + GPIO_DEEPSLEEP, // Kill switch for deepsleep + GPIO_EXS_ENABLE, // EXS MCU Enable + GPIO_TASMOTACLIENT_TXD, GPIO_TASMOTACLIENT_RXD, // Client Serial interface + GPIO_TASMOTACLIENT_RST, GPIO_TASMOTACLIENT_RST_INV, // Client Reset + GPIO_HPMA_RX, GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface + GPIO_GPS_RX, GPIO_GPS_TX, // GPS Serial interface + GPIO_HM10_RX, GPIO_HM10_TX, // HM10-BLE-Mijia-bridge Serial interface + GPIO_LE01MR_RX, GPIO_LE01MR_TX, // F&F LE-01MR energy meter + GPIO_CC1101_GDO0, GPIO_CC1101_GDO2, // CC1101 Serial interface + GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor + GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX + GPIO_AS3935, // Franklin Lightning Sensor + GPIO_ADC_INPUT, // Analog input + GPIO_ADC_TEMP, // Analog Thermistor + GPIO_ADC_LIGHT, // Analog Light sensor + GPIO_ADC_BUTTON, GPIO_ADC_BUTTON_INV, // Analog Button + GPIO_ADC_RANGE, // Analog Range + GPIO_ADC_CT_POWER, // ANalog Current +#ifdef ESP32 + GPIO_WEBCAM_PWDN, GPIO_WEBCAM_RESET, GPIO_WEBCAM_XCLK, // Webcam + GPIO_WEBCAM_SIOD, GPIO_WEBCAM_SIOC, // Webcam I2C + GPIO_WEBCAM_DATA, + GPIO_WEBCAM_VSYNC, GPIO_WEBCAM_HREF, GPIO_WEBCAM_PCLK, + GPIO_WEBCAM_PSCLK, + GPIO_WEBCAM_HSD, + GPIO_WEBCAM_PSRCS, +#endif + GPIO_BOILER_OT_RX, GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin + GPIO_WINDMETER_SPEED, // WindMeter speed counter pin + GPIO_KEY1_TC, // Touch pin as button + GPIO_BL0940_RX, // BL0940 serial interface + GPIO_TCP_TX, GPIO_TCP_RX, // TCP to serial bridge +#ifdef ESP32 + GPIO_ETH_PHY_POWER, GPIO_ETH_PHY_MDC, GPIO_ETH_PHY_MDIO, // Ethernet +#endif + GPIO_TELEINFO_RX, // Teleinfo telemetry data receive pin + GPIO_TELEINFO_ENABLE, // Teleinfo Enable Receive Pin + GPIO_LMT01, // LMT01 input counting pin + GPIO_IEM3000_TX, GPIO_IEM3000_RX, // IEM3000 Serial interface + GPIO_ZIGBEE_RST, // Zigbee reset GPIO_DYP_RX, GPIO_SENSOR_END }; -// Programmer selectable GPIO functionality enum ProgramSelectablePins { - GPIO_FIX_START = 251, - GPIO_SPI_MISO, // SPI MISO library fixed pin GPIO12 - GPIO_SPI_MOSI, // SPI MOSI library fixed pin GPIO13 - GPIO_SPI_CLK, // SPI Clk library fixed pin GPIO14 - GPIO_USER, // User configurable needs to be 255 + GPIO_FIX_START = 2046, + GPIO_USER, // User configurable needs to be 2047 GPIO_MAX }; -/* -// Indexed by UserSelectablePins to convert legacy (8-bit) GPIOs +// Text in webpage Module Parameters and commands GPIOS and GPIO +const char kSensorNames[] PROGMEM = + D_SENSOR_NONE "|" + D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "_n|" D_SENSOR_BUTTON "_i|" D_SENSOR_BUTTON "_in|" + D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "_n|" + D_SENSOR_RELAY "|" D_SENSOR_RELAY "_i|" + D_SENSOR_LED "|" D_SENSOR_LED "_i|" + D_SENSOR_COUNTER "|" D_SENSOR_COUNTER "_n|" + D_SENSOR_PWM "|" D_SENSOR_PWM "_i|" + D_SENSOR_BUZZER "|" D_SENSOR_BUZZER "_i|" + D_SENSOR_LED_LINK "|" D_SENSOR_LED_LINK "_i|" + D_SENSOR_I2C_SCL "|" D_SENSOR_I2C_SDA "|" + D_SENSOR_SPI_MISO "|" D_SENSOR_SPI_MOSI "|" D_SENSOR_SPI_CLK "|" D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" + D_SENSOR_SSPI_MISO "|" D_SENSOR_SSPI_MOSI "|" D_SENSOR_SSPI_SCLK "|" D_SENSOR_SSPI_CS "|" D_SENSOR_SSPI_DC "|" + D_SENSOR_BACKLIGHT "|" D_SENSOR_OLED_RESET "|" + D_SENSOR_IRSEND "|" D_SENSOR_IRRECV "|" + D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" + D_SENSOR_DHT11 "|" D_SENSOR_AM2301 "|" D_SENSOR_SI7021 "|" D_SENSOR_DHT11 "_o|" + D_SENSOR_DS18X20 "|" D_SENSOR_DS18X20 "_o|" + D_SENSOR_WS2812 "|" + D_SENSOR_MHZ_TX "|" D_SENSOR_MHZ_RX "|" + D_SENSOR_PZEM0XX_TX "|" D_SENSOR_PZEM004_RX "|" D_SENSOR_PZEM016_RX "|" D_SENSOR_PZEM017_RX "|" + D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" + D_SENSOR_PMS5003_TX "|" D_SENSOR_PMS5003_RX "|" + D_SENSOR_SDS0X1_TX "|" D_SENSOR_SDS0X1_RX "|" + D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" + D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" + D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" + D_SENSOR_SDM630_TX "|" D_SENSOR_SDM630_RX "|" + D_SENSOR_TM1638_CLK "|" D_SENSOR_TM1638_DIO "|" D_SENSOR_TM1638_STB "|" + D_SENSOR_DFR562 "|" + D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" + D_SENSOR_TX2X_TX "|" + D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" + D_SENSOR_MGC3130_XFER "|" D_SENSOR_MGC3130_RESET "|" + D_SENSOR_RF_SENSOR "|" + D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX "|" + D_SENSOR_MAX31855_CS "|" D_SENSOR_MAX31855_CLK "|" D_SENSOR_MAX31855_DO "|" + D_SENSOR_NRG_SEL "|" D_SENSOR_NRG_SEL "_i|" D_SENSOR_NRG_CF1 "|" D_SENSOR_HLW_CF "|" D_SENSOR_HJL_CF "|" + D_SENSOR_MCP39F5_TX "|" D_SENSOR_MCP39F5_RX "|" D_SENSOR_MCP39F5_RST "|" + D_SENSOR_PN532_TX "|" D_SENSOR_PN532_RX "|" + D_SENSOR_SM16716_CLK "|" D_SENSOR_SM16716_DAT "|" D_SENSOR_SM16716_POWER "|" + D_SENSOR_MY92X1_DI "|" D_SENSOR_MY92X1_DCKI "|" + D_SENSOR_CSE7766_TX "|" D_SENSOR_CSE7766_RX "|" + D_SENSOR_ARIRFRCV "|" D_SENSOR_ARIRFSEL "|" + D_SENSOR_TXD "|" D_SENSOR_RXD "|" + D_SENSOR_ROTARY "_a|" D_SENSOR_ROTARY "_b|" + D_SENSOR_ADC_JOYSTICK "|" + D_SENSOR_MAX31865_CS "|" + D_SENSOR_HRE_CLOCK "|" D_SENSOR_HRE_DATA "|" + D_SENSOR_ADE7953_IRQ "|" + D_SENSOR_SOLAXX1_TX "|" D_SENSOR_SOLAXX1_RX "|" + D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|" + D_SENSOR_RDM6300_RX "|" + D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|" + D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|" + D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|" + D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|" + D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|" + D_SENSOR_DEEPSLEEP "|" D_SENSOR_EXS_ENABLE "|" + D_SENSOR_CLIENT_TX "|" D_SENSOR_CLIENT_RX "|" D_SENSOR_CLIENT_RESET "|" D_SENSOR_CLIENT_RESET "_i|" + D_SENSOR_HPMA_RX "|" D_SENSOR_HPMA_TX "|" + D_SENSOR_GPS_RX "|" D_SENSOR_GPS_TX "|" + D_SENSOR_HM10_RX "|" D_SENSOR_HM10_TX "|" + D_SENSOR_LE01MR_RX "|" D_SENSOR_LE01MR_TX "|" + D_SENSOR_CC1101_GDO0 "|" D_SENSOR_CC1101_GDO2 "|" + D_SENSOR_HRXL_RX "|" + D_SENSOR_ELECTRIQ_MOODL "|" + D_SENSOR_AS3935 "|" + D_SENSOR_ADC_INPUT "|" + D_SENSOR_ADC_TEMP "|" + D_SENSOR_ADC_LIGHT "|" + D_SENSOR_ADC_BUTTON "|" D_SENSOR_ADC_BUTTON "_i|" + D_SENSOR_ADC_RANGE "|" + D_SENSOR_ADC_CT_POWER "|" +#ifdef ESP32 + D_GPIO_WEBCAM_PWDN "|" D_GPIO_WEBCAM_RESET "|" D_GPIO_WEBCAM_XCLK "|" + D_GPIO_WEBCAM_SIOD "|" D_GPIO_WEBCAM_SIOC "|" + D_GPIO_WEBCAM_DATA "|" + D_GPIO_WEBCAM_VSYNC "|" D_GPIO_WEBCAM_HREF "|" D_GPIO_WEBCAM_PCLK "|" + D_GPIO_WEBCAM_PSCLK "|" + D_GPIO_WEBCAM_HSD "|" + D_GPIO_WEBCAM_PSRCS "|" +#endif + D_SENSOR_BOILER_OT_RX "|" D_SENSOR_BOILER_OT_TX "|" + D_SENSOR_WINDMETER_SPEED "|" D_SENSOR_BUTTON "_tc|" + D_SENSOR_BL0940_RX "|" + D_SENSOR_TCP_TXD "|" D_SENSOR_TCP_RXD "|" +#ifdef ESP32 + D_SENSOR_ETH_PHY_POWER "|" D_SENSOR_ETH_PHY_MDC "|" D_SENSOR_ETH_PHY_MDIO "|" +#endif + D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|" + D_SENSOR_LMT01_PULSE "|" + D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" + D_SENSOR_ZIGBEE_RST "|" + D_SENSOR_DYP_RX + ; + +const char kSensorNamesFixed[] PROGMEM = + D_SENSOR_USER; + +#define MAX_MAX31865_CS 6 +#define MAX_WEBCAM_DATA 8 +#define MAX_WEBCAM_HSD 3 + +const uint16_t kGpioNiceList[] PROGMEM = { + GPIO_NONE, // Not used + AGPIO(GPIO_KEY1) + MAX_KEYS, // Buttons + AGPIO(GPIO_KEY1_NP) + MAX_KEYS, + AGPIO(GPIO_KEY1_INV) + MAX_KEYS, + AGPIO(GPIO_KEY1_INV_NP) + MAX_KEYS, + AGPIO(GPIO_KEY1_TC) + MAX_KEYS, // Touch button + AGPIO(GPIO_SWT1) + MAX_SWITCHES, // User connected external switches + AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, +#ifdef ROTARY_V1 + AGPIO(GPIO_ROT1A) + MAX_ROTARIES, // Rotary A Pin + AGPIO(GPIO_ROT1B) + MAX_ROTARIES, // Rotary B Pin +#endif + AGPIO(GPIO_REL1) + MAX_RELAYS, // Relays + AGPIO(GPIO_REL1_INV) + MAX_RELAYS, + AGPIO(GPIO_LED1) + MAX_LEDS, // Leds + AGPIO(GPIO_LED1_INV) + MAX_LEDS, +#ifdef USE_COUNTER + AGPIO(GPIO_CNTR1) + MAX_COUNTERS, // Counters + AGPIO(GPIO_CNTR1_NP) + MAX_COUNTERS, +#endif + AGPIO(GPIO_PWM1) + MAX_PWMS, // RGB Red or C Cold White + AGPIO(GPIO_PWM1_INV) + MAX_PWMS, +#ifdef USE_BUZZER + AGPIO(GPIO_BUZZER), // Buzzer + AGPIO(GPIO_BUZZER_INV), // Inverted buzzer +#endif + AGPIO(GPIO_LEDLNK), // Link led + AGPIO(GPIO_LEDLNK_INV), // Inverted link led +#ifdef USE_I2C + AGPIO(GPIO_I2C_SCL), // I2C SCL + AGPIO(GPIO_I2C_SDA), // I2C SDA +#endif +#ifdef USE_SPI + AGPIO(GPIO_SPI_MISO), // SPI MISO + AGPIO(GPIO_SPI_MOSI), // SPI MOSI + AGPIO(GPIO_SPI_CLK), // SPI Clk + AGPIO(GPIO_SPI_CS), // SPI Chip Select + AGPIO(GPIO_SPI_DC), // SPI Data Direction +#endif + AGPIO(GPIO_SSPI_MISO), // Software SPI Master Input Client Output + AGPIO(GPIO_SSPI_MOSI), // Software SPI Master Output Client Input + AGPIO(GPIO_SSPI_SCLK), // Software SPI Serial Clock + AGPIO(GPIO_SSPI_CS), // Software SPI Chip Select + AGPIO(GPIO_SSPI_DC), // Software SPI Data or Command +#ifdef USE_DISPLAY + AGPIO(GPIO_BACKLIGHT), // Display backlight control + AGPIO(GPIO_OLED_RESET), // OLED Display Reset +#endif + + AGPIO(GPIO_TXD), // Serial interface + AGPIO(GPIO_RXD), // Serial interface + +#ifdef USE_DHT + AGPIO(GPIO_DHT11), // DHT11 + AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321 + AGPIO(GPIO_SI7021), // iTead SI7021 + AGPIO(GPIO_DHT11_OUT), // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 +#endif +#ifdef USE_DS18x20 + AGPIO(GPIO_DSB), // Single wire DS18B20 or DS18S20 + AGPIO(GPIO_DSB_OUT), // Pseudo Single wire DS18B20 or DS18S20 +#endif +#ifdef USE_LMT01 + AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO +#endif + +// Light +#ifdef USE_LIGHT +#ifdef USE_WS2812 + AGPIO(GPIO_WS2812), // WS2812 Led string +#endif +#ifdef USE_ARILUX_RF + AGPIO(GPIO_ARIRFRCV), // AriLux RF Receive input + AGPIO(GPIO_ARIRFSEL), // Arilux RF Receive input selected +#endif +#ifdef USE_MY92X1 + AGPIO(GPIO_DI), // my92x1 PWM input + AGPIO(GPIO_DCKI), // my92x1 CLK input +#endif // USE_MY92X1 +#ifdef USE_SM16716 + AGPIO(GPIO_SM16716_CLK), // SM16716 CLOCK + AGPIO(GPIO_SM16716_DAT), // SM16716 DATA + AGPIO(GPIO_SM16716_SEL), // SM16716 SELECT +#endif // USE_SM16716 +#ifdef USE_SM2135 + AGPIO(GPIO_SM2135_CLK), // SM2135 CLOCK + AGPIO(GPIO_SM2135_DAT), // SM2135 DATA +#endif // USE_SM2135 +#ifdef USE_TUYA_MCU + AGPIO(GPIO_TUYA_TX), // Tuya Serial interface + AGPIO(GPIO_TUYA_RX), // Tuya Serial interface +#endif +#ifdef USE_EXS_DIMMER + AGPIO(GPIO_EXS_ENABLE), // EXS MCU Enable +#endif +#ifdef USE_ELECTRIQ_MOODL + AGPIO(GPIO_ELECTRIQ_MOODL_TX), +#endif +#endif // USE_LIGHT + +#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) + AGPIO(GPIO_IRSEND), // IR remote +#if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) + AGPIO(GPIO_IRRECV), // IR receiver +#endif +#endif + +#ifdef USE_RC_SWITCH + AGPIO(GPIO_RFSEND), // RF transmitter + AGPIO(GPIO_RFRECV), // RF receiver +#endif +#ifdef USE_RF_SENSOR + AGPIO(GPIO_RF_SENSOR), // Rf receiver with sensor decoding +#endif +#ifdef USE_SR04 + AGPIO(GPIO_SR04_TRIG), // SR04 Tri/TXgger pin + AGPIO(GPIO_SR04_ECHO), // SR04 Ech/RXo pin +#endif +#ifdef USE_TM1638 + AGPIO(GPIO_TM16CLK), // TM1638 Clock + AGPIO(GPIO_TM16DIO), // TM1638 Data I/O + AGPIO(GPIO_TM16STB), // TM1638 Strobe +#endif +#ifdef USE_HX711 + AGPIO(GPIO_HX711_SCK), // HX711 Load Cell clock + AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data +#endif + +// Energy sensors +#ifdef USE_ENERGY_SENSOR +#ifdef USE_HLW8012 + AGPIO(GPIO_NRG_SEL), // HLW8012/HLJ-01 Sel output (1 = Voltage) + AGPIO(GPIO_NRG_SEL_INV), // HLW8012/HLJ-01 Sel output (0 = Voltage) + AGPIO(GPIO_NRG_CF1), // HLW8012/HLJ-01 CF1 voltage / current + AGPIO(GPIO_HLW_CF), // HLW8012 CF power + AGPIO(GPIO_HJL_CF), // HJL-01/BL0937 CF power +#endif +#if defined(USE_I2C) && defined(USE_ADE7953) + AGPIO(GPIO_ADE7953_IRQ), // ADE7953 IRQ +#endif +#ifdef USE_CSE7766 + AGPIO(GPIO_CSE7766_TX), // CSE7766 Serial interface (S31 and Pow R2) + AGPIO(GPIO_CSE7766_RX), // CSE7766 Serial interface (S31 and Pow R2) +#endif +#ifdef USE_MCP39F501 + AGPIO(GPIO_MCP39F5_TX), // MCP39F501 Serial interface (Shelly2) + AGPIO(GPIO_MCP39F5_RX), // MCP39F501 Serial interface (Shelly2) + AGPIO(GPIO_MCP39F5_RST), // MCP39F501 Reset (Shelly2) +#endif +#if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) + AGPIO(GPIO_PZEM0XX_TX), // PZEM0XX Serial interface +#endif +#ifdef USE_PZEM004T + AGPIO(GPIO_PZEM004_RX), // PZEM004T Serial interface +#endif +#ifdef USE_PZEM_AC + AGPIO(GPIO_PZEM016_RX), // PZEM-014,016 Serial Modbus interface +#endif +#ifdef USE_PZEM_DC + AGPIO(GPIO_PZEM017_RX), // PZEM-003,017 Serial Modbus interface +#endif +#ifdef USE_SDM120 + AGPIO(GPIO_SDM120_TX), // SDM120 Serial interface + AGPIO(GPIO_SDM120_RX), // SDM120 Serial interface +#endif +#ifdef USE_SDM630 + AGPIO(GPIO_SDM630_TX), // SDM630 Serial interface + AGPIO(GPIO_SDM630_RX), // SDM630 Serial interface +#endif +#ifdef USE_DDS2382 + AGPIO(GPIO_DDS2382_TX), // DDS2382 Serial interface + AGPIO(GPIO_DDS2382_RX), // DDS2382 Serial interface +#endif +#ifdef USE_DDSU666 + AGPIO(GPIO_DDSU666_TX), // DDSU666 Serial interface + AGPIO(GPIO_DDSU666_RX), // DDSU666 Serial interface +#endif // USE_DDSU666 +#ifdef USE_SOLAX_X1 + AGPIO(GPIO_SOLAXX1_TX), // Solax Inverter tx pin + AGPIO(GPIO_SOLAXX1_RX), // Solax Inverter rx pin +#endif // USE_SOLAX_X1 +#ifdef USE_LE01MR + AGPIO(GPIO_LE01MR_TX), // F7F LE-01MR energy meter tx pin + AGPIO(GPIO_LE01MR_RX), // F7F LE-01MR energy meter rx pin +#endif // IFDEF:USE_LE01MR +#ifdef USE_BL0940 + AGPIO(GPIO_BL0940_RX), // BL0940 Serial interface +#endif +#ifdef USE_IEM3000 + AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface + AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface +#endif +#endif // USE_ENERGY_SENSOR + +// Serial +#ifdef USE_SERIAL_BRIDGE + AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface + AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface +#endif +#ifdef USE_TCP_BRIDGE + AGPIO(GPIO_TCP_TX), // TCP Serial bridge + AGPIO(GPIO_TCP_RX), // TCP Serial bridge +#endif +#ifdef USE_ZIGBEE + AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface + AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface + AGPIO(GPIO_ZIGBEE_RST), // Zigbee reset +#endif +#ifdef USE_MHZ19 + AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface + AGPIO(GPIO_MHZ_RXD), // MH-Z19 Serial interface +#endif +#ifdef USE_SENSEAIR + AGPIO(GPIO_SAIR_TX), // SenseAir Serial interface + AGPIO(GPIO_SAIR_RX), // SenseAir Serial interface +#endif +#ifdef USE_NOVA_SDS + AGPIO(GPIO_SDS0X1_TX), // Nova Fitness SDS011 Serial interface + AGPIO(GPIO_SDS0X1_RX), // Nova Fitness SDS011 Serial interface +#endif +#ifdef USE_HPMA + AGPIO(GPIO_HPMA_TX), // Honeywell HPMA115S0 Serial interface + AGPIO(GPIO_HPMA_RX), // Honeywell HPMA115S0 Serial interface +#endif +#ifdef USE_PMS5003 + AGPIO(GPIO_PMS5003_TX), // Plantower PMS5003 Serial interface + AGPIO(GPIO_PMS5003_RX), // Plantower PMS5003 Serial interface +#endif +#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) + AGPIO(GPIO_TX2X_TXD_BLACK), // TX20/TX23 Transmission Pin +#endif +#ifdef USE_WINDMETER + AGPIO(GPIO_WINDMETER_SPEED), +#endif +#ifdef USE_MP3_PLAYER + AGPIO(GPIO_MP3_DFR562), // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface +#endif +#ifdef USE_AZ7798 + AGPIO(GPIO_AZ_TXD), // AZ-Instrument 7798 CO2 datalogger Serial interface + AGPIO(GPIO_AZ_RXD), // AZ-Instrument 7798 CO2 datalogger Serial interface +#endif +#ifdef USE_PN532_HSU + AGPIO(GPIO_PN532_TXD), // PN532 HSU Tx + AGPIO(GPIO_PN532_RXD), // PN532 HSU Rx +#endif +#ifdef USE_TASMOTA_CLIENT + AGPIO(GPIO_TASMOTACLIENT_TXD), // Tasmota Client TX + AGPIO(GPIO_TASMOTACLIENT_RXD), // Tasmota Client RX + AGPIO(GPIO_TASMOTACLIENT_RST), // Tasmota Client Reset + AGPIO(GPIO_TASMOTACLIENT_RST_INV), // Tasmota Client Reset Inverted +#endif +#ifdef USE_RDM6300 + AGPIO(GPIO_RDM6300_RX), +#endif +#ifdef USE_IBEACON + AGPIO(GPIO_IBEACON_TX), + AGPIO(GPIO_IBEACON_RX), +#endif +#ifdef USE_GPS + AGPIO(GPIO_GPS_TX), // GPS serial interface + AGPIO(GPIO_GPS_RX), // GPS serial interface +#endif +#ifdef USE_HM10 + AGPIO(GPIO_HM10_TX), // GPS serial interface + AGPIO(GPIO_HM10_RX), // GPS serial interface +#endif +#ifdef USE_OPENTHERM + AGPIO(GPIO_BOILER_OT_TX), + AGPIO(GPIO_BOILER_OT_RX), +#endif + +#ifdef USE_MGC3130 + AGPIO(GPIO_MGC3130_XFER), + AGPIO(GPIO_MGC3130_RESET), +#endif +#ifdef USE_MAX31855 + AGPIO(GPIO_MAX31855CS), // MAX31855 Serial interface + AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface + AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface +#endif +#ifdef USE_MAX31855 + AGPIO(GPIO_SSPI_MAX31865_CS1) + MAX_MAX31865_CS, +#endif +#ifdef USE_HRE + AGPIO(GPIO_HRE_CLOCK), + AGPIO(GPIO_HRE_DATA), +#endif +#ifdef USE_A4988_STEPPER + AGPIO(GPIO_A4988_DIR), // A4988 direction pin + AGPIO(GPIO_A4988_STP), // A4988 step pin + // folowing are not mandatory + AGPIO(GPIO_A4988_ENA), // A4988 enabled pin + AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1 + AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2 + AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3 +#endif +#ifdef USE_DEEPSLEEP + AGPIO(GPIO_DEEPSLEEP), +#endif +#ifdef USE_KEELOQ + AGPIO(GPIO_CC1101_GDO0), // CC1101 pin for RX + AGPIO(GPIO_CC1101_GDO2), // CC1101 pin for RX +#endif +#ifdef USE_HRXL + AGPIO(GPIO_HRXL_RX), +#endif +#ifdef USE_DYP + AGPIO(GPIO_DYP_RX), +#endif +#ifdef USE_AS3935 + AGPIO(GPIO_AS3935), // AS3935 IRQ Pin +#endif +#ifdef USE_TELEINFO + AGPIO(GPIO_TELEINFO_RX), + AGPIO(GPIO_TELEINFO_ENABLE), +#endif + +#ifdef ESP32 +#ifdef USE_WEBCAM + AGPIO(GPIO_WEBCAM_PWDN), + AGPIO(GPIO_WEBCAM_RESET), + AGPIO(GPIO_WEBCAM_XCLK), + AGPIO(GPIO_WEBCAM_SIOD), + AGPIO(GPIO_WEBCAM_SIOC), + AGPIO(GPIO_WEBCAM_DATA) + MAX_WEBCAM_DATA, + AGPIO(GPIO_WEBCAM_VSYNC), + AGPIO(GPIO_WEBCAM_HREF), + AGPIO(GPIO_WEBCAM_PCLK), + AGPIO(GPIO_WEBCAM_PSCLK), + AGPIO(GPIO_WEBCAM_HSD) + MAX_WEBCAM_HSD, + AGPIO(GPIO_WEBCAM_PSRCS), +#endif +#ifdef USE_ETHERNET + AGPIO(GPIO_ETH_PHY_POWER), + AGPIO(GPIO_ETH_PHY_MDC), + AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet +#endif +#endif // ESP32 + +#ifdef USE_ADC +#ifdef ESP8266 + AGPIO(GPIO_ADC_INPUT), // Analog inputs + AGPIO(GPIO_ADC_TEMP), // Thermistor + AGPIO(GPIO_ADC_LIGHT), // Light sensor + AGPIO(GPIO_ADC_BUTTON), // Button + AGPIO(GPIO_ADC_BUTTON_INV), + AGPIO(GPIO_ADC_RANGE), // Range + AGPIO(GPIO_ADC_CT_POWER), // Current + AGPIO(GPIO_ADC_JOY), // Joystick +#else // ESP32 + AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs + AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor + AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor + AGPIO(GPIO_ADC_BUTTON) + MAX_ADCS, // Button + AGPIO(GPIO_ADC_BUTTON_INV) + MAX_ADCS, + AGPIO(GPIO_ADC_RANGE) + MAX_ADCS, // Range + AGPIO(GPIO_ADC_CT_POWER) + MAX_ADCS, // Current + AGPIO(GPIO_ADC_JOY) + MAX_ADCS, // Joystick +#endif // ESP8266 or ESP32 +#endif // USE_ADC +}; + +/*********************************************************************************************\ + * ATTENTION: No user changeable features beyond this point - do not add templates !!! +\*********************************************************************************************/ + +// User selectable ADC functionality +enum UserSelectableAdc { + ADC_NONE, // Not used + ADC_INPUT, // Analog input + ADC_TEMP, // Thermistor + ADC_LIGHT, // Light sensor + ADC_BUTTON, // Button + ADC_BUTTON_INV, + ADC_RANGE, // Range + ADC_CT_POWER, // Current + ADC_JOY, // Joystick +// ADC_SWITCH, // Switch +// ADC_SWITCH_INV, + ADC_END }; + +#ifdef ESP8266 + +#define MAX_GPI8_PIN 17 // Number of supported GPIO (0..16) +#define FLASH_PINS 6 // Number of flash chip pins +#define ADC0_PIN 17 // Pin number of ADC0 + +#define MAX_GPIO_PIN 18 // Number of supported GPIO (0..16 + ADC0) +#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) +#define MAX_USER_PINS 14 // MAX_GPIO_PIN - MIN_FLASH_PINS +#define WEMOS_MODULE 17 // Wemos module + +const char PINS_WEMOS[] PROGMEM = "D3TXD4RXD2D1flashcFLFLolD6D7D5D8D0A0"; + +typedef struct MYIO8 { + uint8_t io[MAX_GPI8_PIN]; +} myio8; // 17 bytes + +typedef struct MYCFGIO8285 { + uint8_t io[MAX_GPI8_PIN - MIN_FLASH_PINS]; +} mycfgio8285; // 13 bytes + +typedef struct MYTMPLT8285 { + mycfgio8285 gp; + uint8_t flag; +} mytmplt8285; // 14 bytes + +typedef struct MYCFGIO8266 { + uint8_t io[MAX_GPI8_PIN - FLASH_PINS]; +} mycfgio8266; // 11 bytes + +typedef struct MYTMPLT8266 { + mycfgio8266 gp; + uint8_t flag; +} mytmplt8266; // 12 bytes + +#else // ESP32 + +#define MAX_GPIO_PIN 40 // Number of supported GPIO +#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) +#define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS +#define WEMOS_MODULE 0 // Wemos module + +// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 +const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOIAIAIAIAIAIA"; + +#endif // ESP8266 or ESP32 + +//******************************************************************************************** + +typedef struct MYIO { + uint16_t io[MAX_GPIO_PIN]; +} myio; // 18 * 2 = 36 bytes / 40 * 2 = 80 bytes + +typedef struct MYCFGIO { + uint16_t io[MAX_USER_PINS]; +} mycfgio; // 14 * 2 = 28 bytes / 36 * 2 = 72 bytes + +#define GPIO_FLAG_USED 0 // Currently no flags used + +typedef union { + uint16_t data; + struct { + uint16_t spare00 : 1; + uint16_t spare01 : 1; + uint16_t spare02 : 1; + uint16_t spare03 : 1; + uint16_t spare04 : 1; + uint16_t spare05 : 1; + uint16_t spare06 : 1; + uint16_t spare07 : 1; + uint16_t spare08 : 1; + uint16_t spare09 : 1; + uint16_t spare10 : 1; + uint16_t spare11 : 1; + uint16_t spare12 : 1; + uint16_t spare13 : 1; + uint16_t spare14 : 1; + uint16_t spare15 : 1; + }; +} gpio_flag; // 2 bytes + +typedef struct MYTMPLT { + mycfgio gp; // 28 / 72 bytes + gpio_flag flag; // 2 bytes +} mytmplt; // 30 / 74 bytes + +//******************************************************************************************** + +#ifdef ESP8266 + +// User selectable GPIO functionality +// ATTENTION: Only add at the end of this list just before GPI8_SENSOR_END +// Then add the same name(s) in a nice location in array kGpioNiceList +enum LegacyUserSelectablePins { + GPI8_NONE, // Not used + GPI8_DHT11, // DHT11 + GPI8_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 + GPI8_SI7021, // iTead SI7021 + GPI8_DSB, // Single wire DS18B20 or DS18S20 + GPI8_I2C_SCL, // I2C SCL + GPI8_I2C_SDA, // I2C SDA + GPI8_WS2812, // WS2812 Led string + GPI8_IRSEND, // IR remote + GPI8_SWT1, // User connected external switches + GPI8_SWT2, + GPI8_SWT3, + GPI8_SWT4, + GPI8_SWT5, + GPI8_SWT6, + GPI8_SWT7, + GPI8_SWT8, + GPI8_KEY1, // Button usually connected to GPIO0 + GPI8_KEY2, + GPI8_KEY3, + GPI8_KEY4, + GPI8_REL1, // Relays + GPI8_REL2, + GPI8_REL3, + GPI8_REL4, + GPI8_REL5, + GPI8_REL6, + GPI8_REL7, + GPI8_REL8, + GPI8_REL1_INV, + GPI8_REL2_INV, + GPI8_REL3_INV, + GPI8_REL4_INV, + GPI8_REL5_INV, + GPI8_REL6_INV, + GPI8_REL7_INV, + GPI8_REL8_INV, + GPI8_PWM1, // RGB Red or C Cold White + GPI8_PWM2, // RGB Green or CW Warm White + GPI8_PWM3, // RGB Blue + GPI8_PWM4, // RGBW (Cold) White + GPI8_PWM5, // RGBCW Warm White + GPI8_CNTR1, + GPI8_CNTR2, + GPI8_CNTR3, + GPI8_CNTR4, + GPI8_PWM1_INV, // RGB Red or C Cold White + GPI8_PWM2_INV, // RGB Green or CW Warm White + GPI8_PWM3_INV, // RGB Blue + GPI8_PWM4_INV, // RGBW (Cold) White + GPI8_PWM5_INV, // RGBCW Warm White + GPI8_IRRECV, // IR receiver + GPI8_LED1, // Leds + GPI8_LED2, + GPI8_LED3, + GPI8_LED4, + GPI8_LED1_INV, + GPI8_LED2_INV, + GPI8_LED3_INV, + GPI8_LED4_INV, + GPI8_MHZ_TXD, // MH-Z19 Serial interface + GPI8_MHZ_RXD, // MH-Z19 Serial interface + GPI8_PZEM0XX_TX, // PZEM0XX Serial interface + GPI8_PZEM004_RX, // PZEM004T Serial interface + GPI8_SAIR_TX, // SenseAir Serial interface + GPI8_SAIR_RX, // SenseAir Serial interface + GPI8_SPI_CS, // SPI Chip Select + GPI8_SPI_DC, // SPI Data Direction + GPI8_BACKLIGHT, // Display backlight control + GPI8_PMS5003_RX, // Plantower PMS5003 Serial interface + GPI8_SDS0X1_RX, // Nova Fitness SDS011 Serial interface + GPI8_SBR_TX, // Serial Bridge Serial interface + GPI8_SBR_RX, // Serial Bridge Serial interface + GPI8_SR04_TRIG, // SR04 Trigger/TX pin + GPI8_SR04_ECHO, // SR04 Echo/RX pin + GPI8_SDM120_TX, // SDM120 Serial interface + GPI8_SDM120_RX, // SDM120 Serial interface + GPI8_SDM630_TX, // SDM630 Serial interface + GPI8_SDM630_RX, // SDM630 Serial interface + GPI8_TM16CLK, // TM1638 Clock + GPI8_TM16DIO, // TM1638 Data I/O + GPI8_TM16STB, // TM1638 Strobe + GPI8_SWT1_NP, // User connected external switches + GPI8_SWT2_NP, + GPI8_SWT3_NP, + GPI8_SWT4_NP, + GPI8_SWT5_NP, + GPI8_SWT6_NP, + GPI8_SWT7_NP, + GPI8_SWT8_NP, + GPI8_KEY1_NP, // Button usually connected to GPIO0 + GPI8_KEY2_NP, + GPI8_KEY3_NP, + GPI8_KEY4_NP, + GPI8_CNTR1_NP, + GPI8_CNTR2_NP, + GPI8_CNTR3_NP, + GPI8_CNTR4_NP, + GPI8_PZEM016_RX, // PZEM-014,016 Serial Modbus interface + GPI8_PZEM017_RX, // PZEM-003,017 Serial Modbus interface + GPI8_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player + GPI8_SDS0X1_TX, // Nova Fitness SDS011 Serial interface + GPI8_HX711_SCK, // HX711 Load Cell clock + GPI8_HX711_DAT, // HX711 Load Cell data + GPI8_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin + GPI8_RFSEND, // RF transmitter + GPI8_RFRECV, // RF receiver + GPI8_TUYA_TX, // Tuya Serial interface + GPI8_TUYA_RX, // Tuya Serial interface + GPI8_MGC3130_XFER, // MGC3130 Transfer + GPI8_MGC3130_RESET, // MGC3130 Reset + GPI8_SSPI_MISO, // Software SPI Master Input Client Output + GPI8_SSPI_MOSI, // Software SPI Master Output Client Input + GPI8_SSPI_SCLK, // Software SPI Serial Clock + GPI8_SSPI_CS, // Software SPI Chip Select + GPI8_SSPI_DC, // Software SPI Data or Command + GPI8_RF_SENSOR, // Rf receiver with sensor decoding + GPI8_AZ_TXD, // AZ-Instrument 7798 Serial interface + GPI8_AZ_RXD, // AZ-Instrument 7798 Serial interface + GPI8_MAX31855CS, // MAX31855 Serial interface + GPI8_MAX31855CLK, // MAX31855 Serial interface + GPI8_MAX31855DO, // MAX31855 Serial interface + GPI8_KEY1_INV, // Inverted buttons + GPI8_KEY2_INV, + GPI8_KEY3_INV, + GPI8_KEY4_INV, + GPI8_KEY1_INV_NP, // Inverted buttons without pull-up + GPI8_KEY2_INV_NP, + GPI8_KEY3_INV_NP, + GPI8_KEY4_INV_NP, + GPI8_NRG_SEL, // HLW8012/HLJ-01 Sel output (1 = Voltage) + GPI8_NRG_SEL_INV, // HLW8012/HLJ-01 Sel output (0 = Voltage) + GPI8_NRG_CF1, // HLW8012/HLJ-01 CF1 voltage / current + GPI8_HLW_CF, // HLW8012 CF power + GPI8_HJL_CF, // HJL-01/BL0937 CF power + GPI8_MCP39F5_TX, // MCP39F501 Serial interface (Shelly2) + GPI8_MCP39F5_RX, // MCP39F501 Serial interface (Shelly2) + GPI8_MCP39F5_RST, // MCP39F501 Reset (Shelly2) + GPI8_PN532_TXD, // PN532 NFC Serial Tx + GPI8_PN532_RXD, // PN532 NFC Serial Rx + GPI8_SM16716_CLK, // SM16716 CLOCK + GPI8_SM16716_DAT, // SM16716 DATA + GPI8_SM16716_SEL, // SM16716 SELECT + GPI8_DI, // my92x1 PWM input + GPI8_DCKI, // my92x1 CLK input + GPI8_CSE7766_TX, // CSE7766 Serial interface (S31 and Pow R2) - Not used anymore 20200121 + GPI8_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) + GPI8_ARIRFRCV, // AriLux RF Receive input + GPI8_TXD, // Serial interface + GPI8_RXD, // Serial interface + GPI8_ROT1A, // Rotary switch1 A Pin + GPI8_ROT1B, // Rotary switch1 B Pin + GPI8_ROT2A, // Rotary switch2 A Pin + GPI8_ROT2B, // Rotary switch2 B Pin + GPI8_HRE_CLOCK, // Clock/Power line for HR-E Water Meter + GPI8_HRE_DATA, // Data line for HR-E Water Meter + GPI8_ADE7953_IRQ, // ADE7953 IRQ + GPI8_LEDLNK, // Link led + GPI8_LEDLNK_INV, // Inverted link led + GPI8_ARIRFSEL, // Arilux RF Receive input selected + GPI8_BUZZER, // Buzzer + GPI8_BUZZER_INV, // Inverted buzzer + GPI8_OLED_RESET, // OLED Display Reset + GPI8_SOLAXX1_TX, // Solax Inverter tx pin + GPI8_SOLAXX1_RX, // Solax Inverter rx pin + GPI8_ZIGBEE_TX, // Zigbee Serial interface + GPI8_ZIGBEE_RX, // Zigbee Serial interface + GPI8_RDM6300_RX, // RDM6300 RX + GPI8_IBEACON_TX, // HM17 IBEACON TX + GPI8_IBEACON_RX, // HM17 IBEACON RX + GPI8_A4988_DIR, // A4988 direction pin + GPI8_A4988_STP, // A4988 step pin + GPI8_A4988_ENA, // A4988 enabled pin + GPI8_A4988_MS1, // A4988 microstep pin1 + GPI8_A4988_MS2, // A4988 microstep pin2 + GPI8_A4988_MS3, // A4988 microstep pin3 + GPI8_DDS2382_TX, // DDS2382 Serial interface + GPI8_DDS2382_RX, // DDS2382 Serial interface + GPI8_DDSU666_TX, // DDSU666 Serial interface + GPI8_DDSU666_RX, // DDSU666 Serial interface + GPI8_SM2135_CLK, // SM2135 Clk + GPI8_SM2135_DAT, // SM2135 Dat + GPI8_DEEPSLEEP, // Kill switch for deepsleep + GPI8_EXS_ENABLE, // EXS MCU Enable + GPI8_TASMOTACLIENT_TXD, // Client TX + GPI8_TASMOTACLIENT_RXD, // Client RX + GPI8_TASMOTACLIENT_RST, // Client Reset Pin + GPI8_TASMOTACLIENT_RST_INV, // Client Reset Inverted + GPI8_HPMA_RX, // Honeywell HPMA115S0 Serial interface + GPI8_HPMA_TX, // Honeywell HPMA115S0 Serial interface + GPI8_GPS_RX, // GPS serial interface + GPI8_GPS_TX, // GPS serial interface + GPI8_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 + GPI8_DHT11_OUT, // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 + GPI8_HM10_RX, // HM10-BLE-Mijia-bridge serial interface + GPI8_HM10_TX, // HM10-BLE-Mijia-bridge serial interface + GPI8_LE01MR_RX, // F&F LE-01MR energy meter + GPI8_LE01MR_TX, // F&F LE-01MR energy meter + GPI8_CC1101_GDO0, // CC1101 pin for RX + GPI8_CC1101_GDO2, // CC1101 pin for RX + GPI8_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor + GPI8_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX + GPI8_AS3935, // Franklin Lightning Sensor + GPI8_PMS5003_TX, // Plantower PMS5003 Serial interface + GPI8_BOILER_OT_RX, // OpenTherm Boiler RX pin + GPI8_BOILER_OT_TX, // OpenTherm Boiler TX pin + GPI8_WINDMETER_SPEED, // WindMeter speed counter pin + GPI8_BL0940_RX, // BL0940 serial interface + GPI8_TCP_TX, // TCP Serial bridge + GPI8_TCP_RX, // TCP Serial bridge + GPI8_TELEINFO_RX, // TELEINFO serial interface + GPI8_TELEINFO_ENABLE,// TELEINFO Enable PIN + GPI8_LMT01, // LMT01 input counting pin + GPI8_IEM3000_TX, // IEM3000 Serial interface + GPI8_IEM3000_RX, // IEM3000 Serial interface + GPI8_ZIGBEE_RST, // Zigbee reset + GPI8_DYP_RX, + GPI8_SENSOR_END }; + +// Programmer selectable GPIO functionality +enum LegacyProgramSelectablePins { + GPI8_FIX_START = 251, + GPI8_SPI_MISO, // SPI MISO library fixed pin GPIO12 + GPI8_SPI_MOSI, // SPI MOSI library fixed pin GPIO13 + GPI8_SPI_CLK, // SPI Clk library fixed pin GPIO14 + GPI8_USER, // User configurable needs to be 255 + GPI8_MAX }; + +// Indexed by LegacyUserSelectablePins to convert legacy (8-bit) GPIOs const uint16_t kGpioConvert[] PROGMEM = { GPIO_NONE, AGPIO(GPIO_DHT11), // DHT11 @@ -475,558 +1182,6 @@ const uint16_t kGpioConvert[] PROGMEM = { AGPIO(GPIO_ZIGBEE_RST), // Zigbee reset AGPIO(GPIO_DYP_RX) }; -*/ - -// Text in webpage Module Parameters and commands GPIOS and GPIO -const char kSensorNames[] PROGMEM = - D_SENSOR_NONE "|" - D_SENSOR_DHT11 "|" D_SENSOR_AM2301 "|" D_SENSOR_SI7021 "|" - D_SENSOR_DS18X20 "|" - D_SENSOR_I2C_SCL "|" D_SENSOR_I2C_SDA "|" - D_SENSOR_WS2812 "|" - D_SENSOR_IRSEND "|" - D_SENSOR_SWITCH "1|" D_SENSOR_SWITCH "2|" D_SENSOR_SWITCH "3|" D_SENSOR_SWITCH "4|" D_SENSOR_SWITCH "5|" D_SENSOR_SWITCH "6|" D_SENSOR_SWITCH "7|" D_SENSOR_SWITCH "8|" - D_SENSOR_BUTTON "1|" D_SENSOR_BUTTON "2|" D_SENSOR_BUTTON "3|" D_SENSOR_BUTTON "4|" - D_SENSOR_RELAY "1|" D_SENSOR_RELAY "2|" D_SENSOR_RELAY "3|" D_SENSOR_RELAY "4|" D_SENSOR_RELAY "5|" D_SENSOR_RELAY "6|" D_SENSOR_RELAY "7|" D_SENSOR_RELAY "8|" - D_SENSOR_RELAY "1i|" D_SENSOR_RELAY "2i|" D_SENSOR_RELAY "3i|" D_SENSOR_RELAY "4i|" D_SENSOR_RELAY "5i|" D_SENSOR_RELAY "6i|" D_SENSOR_RELAY "7i|" D_SENSOR_RELAY "8i|" - D_SENSOR_PWM "1|" D_SENSOR_PWM "2|" D_SENSOR_PWM "3|" D_SENSOR_PWM "4|" D_SENSOR_PWM "5|" - D_SENSOR_COUNTER "1|" D_SENSOR_COUNTER "2|" D_SENSOR_COUNTER "3|" D_SENSOR_COUNTER "4|" - D_SENSOR_PWM "1i|" D_SENSOR_PWM "2i|" D_SENSOR_PWM "3i|" D_SENSOR_PWM "4i|" D_SENSOR_PWM "5i|" - D_SENSOR_IRRECV "|" - D_SENSOR_LED "1|" D_SENSOR_LED "2|" D_SENSOR_LED "3|" D_SENSOR_LED "4|" - D_SENSOR_LED "1i|" D_SENSOR_LED "2i|" D_SENSOR_LED "3i|" D_SENSOR_LED "4i|" - D_SENSOR_MHZ_TX "|" D_SENSOR_MHZ_RX "|" - D_SENSOR_PZEM0XX_TX "|" D_SENSOR_PZEM004_RX "|" - D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" - D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" D_SENSOR_BACKLIGHT "|" - D_SENSOR_PMS5003_RX "|" D_SENSOR_SDS0X1_RX "|" - D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" - D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" - D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" - D_SENSOR_SDM630_TX "|" D_SENSOR_SDM630_RX "|" - D_SENSOR_TM1638_CLK "|" D_SENSOR_TM1638_DIO "|" D_SENSOR_TM1638_STB "|" - D_SENSOR_SWITCH "1n|" D_SENSOR_SWITCH "2n|" D_SENSOR_SWITCH "3n|" D_SENSOR_SWITCH "4n|" D_SENSOR_SWITCH "5n|" D_SENSOR_SWITCH "6n|" D_SENSOR_SWITCH "7n|" D_SENSOR_SWITCH "8n|" - D_SENSOR_BUTTON "1n|" D_SENSOR_BUTTON "2n|" D_SENSOR_BUTTON "3n|" D_SENSOR_BUTTON "4n|" - D_SENSOR_COUNTER "1n|" D_SENSOR_COUNTER "2n|" D_SENSOR_COUNTER "3n|" D_SENSOR_COUNTER "4n|" - D_SENSOR_PZEM016_RX "|" D_SENSOR_PZEM017_RX "|" - D_SENSOR_DFR562 "|" D_SENSOR_SDS0X1_TX "|" - D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" - D_SENSOR_TX2X_TX "|" - D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" - D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" - D_SENSOR_MGC3130_XFER "|" D_SENSOR_MGC3130_RESET "|" - D_SENSOR_SSPI_MISO "|" D_SENSOR_SSPI_MOSI "|" D_SENSOR_SSPI_SCLK "|" D_SENSOR_SSPI_CS "|" D_SENSOR_SSPI_DC "|" - D_SENSOR_RF_SENSOR "|" - D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX "|" - D_SENSOR_MAX31855_CS "|" D_SENSOR_MAX31855_CLK "|" D_SENSOR_MAX31855_DO "|" - D_SENSOR_BUTTON "1i|" D_SENSOR_BUTTON "2i|" D_SENSOR_BUTTON "3i|" D_SENSOR_BUTTON "4i|" - D_SENSOR_BUTTON "1in|" D_SENSOR_BUTTON "2in|" D_SENSOR_BUTTON "3in|" D_SENSOR_BUTTON "4in|" - D_SENSOR_NRG_SEL "|" D_SENSOR_NRG_SEL "i|" D_SENSOR_NRG_CF1 "|" D_SENSOR_HLW_CF "|" D_SENSOR_HJL_CF "|" - D_SENSOR_MCP39F5_TX "|" D_SENSOR_MCP39F5_RX "|" D_SENSOR_MCP39F5_RST "|" - D_SENSOR_PN532_TX "|" D_SENSOR_PN532_RX "|" - D_SENSOR_SM16716_CLK "|" D_SENSOR_SM16716_DAT "|" D_SENSOR_SM16716_POWER "|" - D_SENSOR_MY92X1_DI "|" D_SENSOR_MY92X1_DCKI "|" - D_SENSOR_CSE7766_TX "|" D_SENSOR_CSE7766_RX "|" - D_SENSOR_ARIRFRCV "|" D_SENSOR_TXD "|" D_SENSOR_RXD "|" - D_SENSOR_ROTARY "1a|" D_SENSOR_ROTARY "1b|" D_SENSOR_ROTARY "2a|" D_SENSOR_ROTARY "2b|" - D_SENSOR_HRE_CLOCK "|" D_SENSOR_HRE_DATA "|" - D_SENSOR_ADE7953_IRQ "|" - D_SENSOR_LED_LINK "|" D_SENSOR_LED_LINK "i|" - D_SENSOR_ARIRFSEL "|" - D_SENSOR_BUZZER "|" D_SENSOR_BUZZER "i|" - D_SENSOR_OLED_RESET "|" - D_SENSOR_SOLAXX1_TX "|" D_SENSOR_SOLAXX1_RX "|" - D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|" - D_SENSOR_RDM6300_RX "|" - D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|" - D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|" - D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|" - D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|" - D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|" - D_SENSOR_DEEPSLEEP "|" D_SENSOR_EXS_ENABLE "|" - D_SENSOR_CLIENT_TX "|" D_SENSOR_CLIENT_RX "|" D_SENSOR_CLIENT_RESET "|" D_SENSOR_CLIENT_RESET "i|" - D_SENSOR_HPMA_RX "|" D_SENSOR_HPMA_TX "|" - D_SENSOR_GPS_RX "|" D_SENSOR_GPS_TX "|" - D_SENSOR_DS18X20 "o|" D_SENSOR_DHT11 "o|" - D_SENSOR_HM10_RX "|" D_SENSOR_HM10_TX "|" - D_SENSOR_LE01MR_RX "|" D_SENSOR_LE01MR_TX "|" - D_SENSOR_CC1101_GDO0 "|" D_SENSOR_CC1101_GDO2 "|" - D_SENSOR_HRXL_RX "|" - D_SENSOR_ELECTRIQ_MOODL "|" - D_SENSOR_AS3935 "|" D_SENSOR_PMS5003_TX "|" - D_SENSOR_BOILER_OT_RX "|" D_SENSOR_BOILER_OT_TX "|" - D_SENSOR_WINDMETER_SPEED "|" - D_SENSOR_BL0940_RX "|" - D_SENSOR_TCP_TXD "|" D_SENSOR_TCP_RXD "|" - D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|" - D_SENSOR_LMT01_PULSE "|" - D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" - D_SENSOR_ZIGBEE_RST "|" - D_SENSOR_DYP_RX - ; - -const char kSensorNamesFixed[] PROGMEM = - D_SENSOR_SPI_MISO "|" D_SENSOR_SPI_MOSI "|" D_SENSOR_SPI_CLK "|" - D_SENSOR_USER; - -const uint8_t kGpioNiceList[] PROGMEM = { - GPIO_NONE, // Not used - GPIO_KEY1, // Buttons - GPIO_KEY1_NP, - GPIO_KEY1_INV, - GPIO_KEY1_INV_NP, - GPIO_KEY2, - GPIO_KEY2_NP, - GPIO_KEY2_INV, - GPIO_KEY2_INV_NP, - GPIO_KEY3, - GPIO_KEY3_NP, - GPIO_KEY3_INV, - GPIO_KEY3_INV_NP, - GPIO_KEY4, - GPIO_KEY4_NP, - GPIO_KEY4_INV, - GPIO_KEY4_INV_NP, - GPIO_SWT1, // User connected external switches - GPIO_SWT1_NP, - GPIO_SWT2, - GPIO_SWT2_NP, - GPIO_SWT3, - GPIO_SWT3_NP, - GPIO_SWT4, - GPIO_SWT4_NP, - GPIO_SWT5, - GPIO_SWT5_NP, - GPIO_SWT6, - GPIO_SWT6_NP, - GPIO_SWT7, - GPIO_SWT7_NP, - GPIO_SWT8, - GPIO_SWT8_NP, -#ifdef ROTARY_V1 - GPIO_ROT1A, // Rotary switch1 A Pin - GPIO_ROT1B, // Rotary switch1 B Pin - GPIO_ROT2A, // Rotary switch2 A Pin - GPIO_ROT2B, // Rotary switch2 B Pin -#endif - GPIO_REL1, // Relays - GPIO_REL1_INV, - GPIO_REL2, - GPIO_REL2_INV, - GPIO_REL3, - GPIO_REL3_INV, - GPIO_REL4, - GPIO_REL4_INV, - GPIO_REL5, - GPIO_REL5_INV, - GPIO_REL6, - GPIO_REL6_INV, - GPIO_REL7, - GPIO_REL7_INV, - GPIO_REL8, - GPIO_REL8_INV, - GPIO_LED1, // Leds - GPIO_LED1_INV, - GPIO_LED2, - GPIO_LED2_INV, - GPIO_LED3, - GPIO_LED3_INV, - GPIO_LED4, - GPIO_LED4_INV, - GPIO_LEDLNK, // Link led - GPIO_LEDLNK_INV, // Inverted link led - GPIO_PWM1, // RGB Red or C Cold White - GPIO_PWM1_INV, - GPIO_PWM2, // RGB Green or CW Warm White - GPIO_PWM2_INV, - GPIO_PWM3, // RGB Blue - GPIO_PWM3_INV, - GPIO_PWM4, // RGBW (Cold) White - GPIO_PWM4_INV, - GPIO_PWM5, // RGBCW Warm White - GPIO_PWM5_INV, -#ifdef USE_COUNTER - GPIO_CNTR1, // Counters - GPIO_CNTR1_NP, - GPIO_CNTR2, - GPIO_CNTR2_NP, - GPIO_CNTR3, - GPIO_CNTR3_NP, - GPIO_CNTR4, - GPIO_CNTR4_NP, -#endif -#ifdef USE_BUZZER - GPIO_BUZZER, // Buzzer - GPIO_BUZZER_INV, // Inverted buzzer -#endif - GPIO_TXD, // Serial interface - GPIO_RXD, // Serial interface -#ifdef USE_I2C - GPIO_I2C_SCL, // I2C SCL - GPIO_I2C_SDA, // I2C SDA -#endif -#ifdef USE_SPI - GPIO_SPI_CS, // SPI Chip Select - GPIO_SPI_DC, // SPI Data Direction -#endif - GPIO_SSPI_MISO, // Software SPI Master Input Client Output - GPIO_SSPI_MOSI, // Software SPI Master Output Client Input - GPIO_SSPI_SCLK, // Software SPI Serial Clock - GPIO_SSPI_CS, // Software SPI Chip Select - GPIO_SSPI_DC, // Software SPI Data or Command -#ifdef USE_DISPLAY - GPIO_BACKLIGHT, // Display backlight control - GPIO_OLED_RESET, // OLED Display Reset -#endif -#ifdef USE_DHT - GPIO_DHT11, // DHT11 - GPIO_DHT22, // DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_SI7021, // iTead SI7021 - GPIO_DHT11_OUT, // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 -#endif -#ifdef USE_DS18x20 - GPIO_DSB, // Single wire DS18B20 or DS18S20 - GPIO_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 -#endif -#ifdef USE_LMT01 // LMT01, count pulses on GPIO - GPIO_LMT01, -#endif - -// Light -#ifdef USE_LIGHT -#ifdef USE_WS2812 - GPIO_WS2812, // WS2812 Led string -#endif -#ifdef USE_ARILUX_RF - GPIO_ARIRFRCV, // AriLux RF Receive input - GPIO_ARIRFSEL, // Arilux RF Receive input selected -#endif -#ifdef USE_MY92X1 - GPIO_DI, // my92x1 PWM input - GPIO_DCKI, // my92x1 CLK input -#endif // USE_MY92X1 -#ifdef USE_SM16716 - GPIO_SM16716_CLK, // SM16716 CLOCK - GPIO_SM16716_DAT, // SM16716 DATA - GPIO_SM16716_SEL, // SM16716 SELECT -#endif // USE_SM16716 -#ifdef USE_SM2135 - GPIO_SM2135_CLK, // SM2135 CLOCK - GPIO_SM2135_DAT, // SM2135 DATA -#endif // USE_SM2135 -#ifdef USE_TUYA_MCU - GPIO_TUYA_TX, // Tuya Serial interface - GPIO_TUYA_RX, // Tuya Serial interface -#endif -#ifdef USE_EXS_DIMMER - GPIO_EXS_ENABLE, // EXS MCU Enable -#endif -#ifdef USE_ELECTRIQ_MOODL - GPIO_ELECTRIQ_MOODL_TX, -#endif -#endif // USE_LIGHT - -#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) - GPIO_IRSEND, // IR remote -#if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) - GPIO_IRRECV, // IR receiver -#endif -#endif - -#ifdef USE_RC_SWITCH - GPIO_RFSEND, // RF transmitter - GPIO_RFRECV, // RF receiver -#endif -#ifdef USE_RF_SENSOR - GPIO_RF_SENSOR, // Rf receiver with sensor decoding -#endif -#ifdef USE_SR04 - GPIO_SR04_TRIG, // SR04 Tri/TXgger pin - GPIO_SR04_ECHO, // SR04 Ech/RXo pin -#endif -#ifdef USE_TM1638 - GPIO_TM16CLK, // TM1638 Clock - GPIO_TM16DIO, // TM1638 Data I/O - GPIO_TM16STB, // TM1638 Strobe -#endif -#ifdef USE_HX711 - GPIO_HX711_SCK, // HX711 Load Cell clock - GPIO_HX711_DAT, // HX711 Load Cell data -#endif - -// Energy sensors -#ifdef USE_ENERGY_SENSOR -#ifdef USE_HLW8012 - GPIO_NRG_SEL, // HLW8012/HLJ-01 Sel output (1 = Voltage) - GPIO_NRG_SEL_INV, // HLW8012/HLJ-01 Sel output (0 = Voltage) - GPIO_NRG_CF1, // HLW8012/HLJ-01 CF1 voltage / current - GPIO_HLW_CF, // HLW8012 CF power - GPIO_HJL_CF, // HJL-01/BL0937 CF power -#endif -#if defined(USE_I2C) && defined(USE_ADE7953) - GPIO_ADE7953_IRQ, // ADE7953 IRQ -#endif -#ifdef USE_CSE7766 - GPIO_CSE7766_TX, // CSE7766 Serial interface (S31 and Pow R2) - GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) -#endif -#ifdef USE_MCP39F501 - GPIO_MCP39F5_TX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RST, // MCP39F501 Reset (Shelly2) -#endif -#if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) - GPIO_PZEM0XX_TX, // PZEM0XX Serial interface -#endif -#ifdef USE_PZEM004T - GPIO_PZEM004_RX, // PZEM004T Serial interface -#endif -#ifdef USE_PZEM_AC - GPIO_PZEM016_RX, // PZEM-014,016 Serial Modbus interface -#endif -#ifdef USE_PZEM_DC - GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus interface -#endif -#ifdef USE_SDM120 - GPIO_SDM120_TX, // SDM120 Serial interface - GPIO_SDM120_RX, // SDM120 Serial interface -#endif -#ifdef USE_SDM630 - GPIO_SDM630_TX, // SDM630 Serial interface - GPIO_SDM630_RX, // SDM630 Serial interface -#endif -#ifdef USE_DDS2382 - GPIO_DDS2382_TX, // DDS2382 Serial interface - GPIO_DDS2382_RX, // DDS2382 Serial interface -#endif -#ifdef USE_DDSU666 - GPIO_DDSU666_TX, // DDSU666 Serial interface - GPIO_DDSU666_RX, // DDSU666 Serial interface -#endif -#ifdef USE_SOLAX_X1 - GPIO_SOLAXX1_TX, // Solax Inverter tx pin - GPIO_SOLAXX1_RX, // Solax Inverter rx pin -#endif -#ifdef USE_LE01MR - GPIO_LE01MR_RX, // F7F LE-01MR energy meter rx pin - GPIO_LE01MR_TX, // F7F LE-01MR energy meter tx pin -#endif -#ifdef USE_BL0940 - GPIO_BL0940_RX, // BL0940 Serial interface -#endif -#ifdef USE_IEM3000 - GPIO_IEM3000_TX, // IEM3000 Serial interface - GPIO_IEM3000_RX, // IEM3000 Serial interface -#endif -#endif // USE_ENERGY_SENSOR - -// Serial -#ifdef USE_SERIAL_BRIDGE - GPIO_SBR_TX, // Serial Bridge Serial interface - GPIO_SBR_RX, // Serial Bridge Serial interface -#endif -#ifdef USE_TCP_BRIDGE - GPIO_TCP_TX, // TCP Serial bridge - GPIO_TCP_RX, // TCP Serial bridge -#endif -#ifdef USE_ZIGBEE - GPIO_ZIGBEE_TX, // Zigbee Serial interface - GPIO_ZIGBEE_RX, // Zigbee Serial interface - GPIO_ZIGBEE_RST, // Zigbee reset -#endif -#ifdef USE_MHZ19 - GPIO_MHZ_TXD, // MH-Z19 Serial interface - GPIO_MHZ_RXD, // MH-Z19 Serial interface -#endif -#ifdef USE_SENSEAIR - GPIO_SAIR_TX, // SenseAir Serial interface - GPIO_SAIR_RX, // SenseAir Serial interface -#endif -#ifdef USE_NOVA_SDS - GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface - GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface -#endif -#ifdef USE_HPMA - GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface - GPIO_HPMA_RX, // Honeywell HPMA115S0 Serial interface -#endif -#ifdef USE_PMS5003 - GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface - GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface -#endif -#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin -#endif -#ifdef USE_WINDMETER - GPIO_WINDMETER_SPEED, -#endif -#ifdef USE_MP3_PLAYER - GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface -#endif -#ifdef USE_AZ7798 - GPIO_AZ_TXD, // AZ-Instrument 7798 CO2 datalogger Serial interface - GPIO_AZ_RXD, // AZ-Instrument 7798 CO2 datalogger Serial interface -#endif -#ifdef USE_PN532_HSU - GPIO_PN532_TXD, // PN532 HSU Tx - GPIO_PN532_RXD, // PN532 HSU Rx -#endif -#ifdef USE_TASMOTA_CLIENT - GPIO_TASMOTACLIENT_TXD, // Tasmota Client TX - GPIO_TASMOTACLIENT_RXD, // Tasmota Client RX - GPIO_TASMOTACLIENT_RST, // Tasmota Client Reset - GPIO_TASMOTACLIENT_RST_INV, // Tasmota Client Reset Inverted -#endif -#ifdef USE_RDM6300 - GPIO_RDM6300_RX, -#endif -#ifdef USE_IBEACON - GPIO_IBEACON_TX, - GPIO_IBEACON_RX, -#endif -#ifdef USE_GPS - GPIO_GPS_TX, // GPS serial interface - GPIO_GPS_RX, // GPS serial interface -#endif -#ifdef USE_HM10 - GPIO_HM10_TX, // GPS serial interface - GPIO_HM10_RX, // GPS serial interface -#endif -#ifdef USE_OPENTHERM - GPIO_BOILER_OT_TX, - GPIO_BOILER_OT_RX, -#endif - -#ifdef USE_MGC3130 - GPIO_MGC3130_XFER, - GPIO_MGC3130_RESET, -#endif -#ifdef USE_MAX31855 - GPIO_MAX31855CS, // MAX31855 Serial interface - GPIO_MAX31855CLK, // MAX31855 Serial interface - GPIO_MAX31855DO, // MAX31855 Serial interface -#endif -#ifdef USE_HRE - GPIO_HRE_CLOCK, - GPIO_HRE_DATA, -#endif -#ifdef USE_A4988_STEPPER - GPIO_A4988_DIR, // A4988 direction pin - GPIO_A4988_STP, // A4988 step pin - // folowing are not mandatory - GPIO_A4988_ENA, // A4988 enabled pin - GPIO_A4988_MS1, // A4988 microstep pin1 - GPIO_A4988_MS2, // A4988 microstep pin2 - GPIO_A4988_MS3, // A4988 microstep pin3 -#endif -#ifdef USE_DEEPSLEEP - GPIO_DEEPSLEEP, -#endif -#ifdef USE_KEELOQ - GPIO_CC1101_GDO0, // CC1101 pin for RX - GPIO_CC1101_GDO2, // CC1101 pin for RX -#endif -#ifdef USE_HRXL - GPIO_HRXL_RX, -#endif -#ifdef USE_DYP - GPIO_DYP_RX, -#endif -#ifdef USE_AS3935 - GPIO_AS3935, // AS3935 IRQ Pin -#endif -#ifdef USE_TELEINFO - GPIO_TELEINFO_RX, - GPIO_TELEINFO_ENABLE, -#endif -}; - -/********************************************************************************************/ - -// User selectable ADC0 functionality -enum UserSelectableAdc0 { - ADC0_NONE, // Not used - ADC0_INPUT, // Analog input - ADC0_TEMP, // Thermistor - ADC0_LIGHT, // Light sensor - ADC0_BUTTON, // Button - ADC0_BUTTON_INV, - ADC0_RANGE, // Range - ADC0_CT_POWER, // Current -// ADC0_SWITCH, // Switch -// ADC0_SWITCH_INV, - ADC0_END }; - -// Programmer selectable ADC0 functionality -enum ProgramSelectableAdc0 { - ADC0_FIX_START = 14, - ADC0_USER, // User configurable needs to be 15 - ADC0_MAX }; - -// Text in webpage Module Parameters and commands ADC -const char kAdc0Names[] PROGMEM = - D_SENSOR_NONE "|" D_ANALOG_INPUT "|" - D_TEMPERATURE "|" D_LIGHT "|" - D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|" - D_RANGE "|" - D_CT_POWER "|" -// D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "i|" - ; - -/*********************************************************************************************\ - * ATTENTION: No user changeable features beyond this point - do not add templates !!! -\*********************************************************************************************/ - -#define MAX_GPIO_PIN 17 // Number of supported GPIO -#define FLASH_PINS 6 // Number of flash chip pins -#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) -#define MAX_USER_PINS 13 // MAX_GPIO_PIN - MIN_FLASH_PINS -#define ADC0_PIN 17 // Pin number of ADC0 -#define WEMOS_MODULE 17 // Wemos module - -const char PINS_WEMOS[] PROGMEM = "D3TXD4RXD2D1flashcFLFLolD6D7D5D8D0A0"; - -/********************************************************************************************/ - -typedef struct MYIO { - uint8_t io[MAX_GPIO_PIN]; -} myio; - -typedef struct MYCFGIO { - uint8_t io[MAX_GPIO_PIN - MIN_FLASH_PINS]; -} mycfgio; - -typedef struct MYCFGIO8266 { - uint8_t io[MAX_GPIO_PIN - FLASH_PINS]; -} mycfgio8266; - -#define GPIO_FLAG_USED 0 // Currently two flags used - -#define GPIO_FLAG_SPARE04 16 -#define GPIO_FLAG_SPARE05 32 -#define GPIO_FLAG_SPARE06 64 -#define GPIO_FLAG_SPARE07 128 - -typedef union { - uint8_t data; - struct { - uint8_t adc0 : 4; // Allow ADC0 when define USE_ADC_VCC is disabled - uint8_t spare04 : 1; - uint8_t spare05 : 1; - uint8_t spare06 : 1; - uint8_t spare07 : 1; - }; -} gpio_flag; - -typedef struct MYTMPLT { - mycfgio gp; - gpio_flag flag; -} mytmplt; - -typedef struct MYTMPLT8266 { - mycfgio8266 gp; - gpio_flag flag; -} mytmplt8266; /********************************************************************************************/ // Supported hardware modules @@ -1256,11 +1411,11 @@ const uint8_t kModuleTemplateList[MAXMODULE] PROGMEM = { const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { { // SONOFF_BASIC - Sonoff Basic (ESP8266) - GPIO_KEY1, // GPIO00 Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Only available on newer Sonoff Basic R2 V1 - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor + GPI8_KEY1, // GPIO00 Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Only available on newer Sonoff Basic R2 V1 + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor 0, // GPIO05 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1268,38 +1423,38 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, // GPIO15 0, // GPIO16 0 // ADC0 Analog input }, { // SONOFF_SV - Sonoff SV (ESP8266) - GPIO_KEY1, // GPIO00 Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_KEY1, // GPIO00 Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor 0, - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, 0, - ADC0_USER // ADC0 Analog input + GPI8_USER // ADC0 Analog input }, { // SONOFF_DUAL - Sonoff Dual (ESP8266) - GPIO_USER, // GPIO00 Pad - GPIO_TXD, // GPIO01 Relay control + GPI8_USER, // GPIO00 Pad + GPI8_TXD, // GPIO01 Relay control 0, - GPIO_RXD, // GPIO03 Relay control - GPIO_USER, // GPIO04 Optional sensor + GPI8_RXD, // GPIO03 Relay control + GPI8_USER, // GPIO04 Optional sensor 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1308,91 +1463,91 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, 0, 0 }, { // SONOFF_POW - Sonoff Pow (ESP8266 - HLW8012) - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, 0, - GPIO_NRG_SEL, // GPIO05 HLW8012 Sel output (1 = Voltage) + GPI8_NRG_SEL, // GPIO05 HLW8012 Sel output (1 = Voltage) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_NRG_CF1, // GPIO13 HLW8012 CF1 voltage / current - GPIO_HLW_CF, // GPIO14 HLW8012 CF power - GPIO_LED1, // GPIO15 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_NRG_CF1, // GPIO13 HLW8012 CF1 voltage / current + GPI8_HLW_CF, // GPIO14 HLW8012 CF power + GPI8_LED1, // GPIO15 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0 }, { // SONOFF_LED - Sonoff LED (ESP8266) - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_USER, // GPIO04 Optional sensor (PWM3 Green) - GPIO_USER, // GPIO05 Optional sensor (PWM2 Red) + GPI8_USER, // GPIO04 Optional sensor (PWM3 Green) + GPI8_USER, // GPIO05 Optional sensor (PWM2 Red) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM1, // GPIO12 Cold light (PWM0 Cold) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status - GPIO_PWM2, // GPIO14 Warm light (PWM1 Warm) - GPIO_USER, // GPIO15 Optional sensor (PWM4 Blue) + GPI8_PWM1, // GPIO12 Cold light (PWM0 Cold) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_PWM2, // GPIO14 Warm light (PWM1 Warm) + GPI8_USER, // GPIO15 Optional sensor (PWM4 Blue) 0, 0 }, { // ELECTRODRAGON - ElectroDragon IoT Relay Board (ESP8266) - GPIO_KEY2, // GPIO00 Button 2 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_KEY1, // GPIO02 Button 1 - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_KEY2, // GPIO00 Button 2 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_KEY1, // GPIO02 Button 1 + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL2, // GPIO12 Red Led and Relay 2 (0 = Off, 1 = On) - GPIO_REL1, // GPIO13 Red Led and Relay 1 (0 = Off, 1 = On) - GPIO_USER, // GPIO14 Optional sensor - GPIO_USER, // GPIO15 Optional sensor - GPIO_LED1, // GPIO16 Green/Blue Led (1 = On, 0 = Off) - Link and Power status - ADC0_USER // ADC0 A0 Analog input + GPI8_REL2, // GPIO12 Red Led and Relay 2 (0 = Off, 1 = On) + GPI8_REL1, // GPIO13 Red Led and Relay 1 (0 = Off, 1 = On) + GPI8_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO15 Optional sensor + GPI8_LED1, // GPIO16 Green/Blue Led (1 = On, 0 = Off) - Link and Power status + GPI8_USER // ADC0 A0 Analog input }, { // EXS_RELAY - ES-Store Latching relay(s) (ESP8266) // https://ex-store.de/ESP8266-WiFi-Relay-V31 // V3.1 Module Pin 1 VCC 3V3, Module Pin 6 GND // https://ex-store.de/2-Kanal-WiFi-WLan-Relay-V5-Blackline-fuer-Unterputzmontage - GPIO_USER, // GPIO00 V3.1 Module Pin 8 - V5.0 Module Pin 4 - GPIO_USER, // GPIO01 UART0_TXD V3.1 Module Pin 2 - V5.0 Module Pin 3 - GPIO_USER, // GPIO02 V3.1 Module Pin 7 - GPIO_USER, // GPIO03 UART0_RXD V3.1 Module Pin 3 - GPIO_USER, // GPIO04 V3.1 Module Pin 10 - V5.0 Module Pin 2 - GPIO_USER, // GPIO05 V3.1 Module Pin 9 - V5.0 Module Pin 1 + GPI8_USER, // GPIO00 V3.1 Module Pin 8 - V5.0 Module Pin 4 + GPI8_USER, // GPIO01 UART0_TXD V3.1 Module Pin 2 - V5.0 Module Pin 3 + GPI8_USER, // GPIO02 V3.1 Module Pin 7 + GPI8_USER, // GPIO03 UART0_RXD V3.1 Module Pin 3 + GPI8_USER, // GPIO04 V3.1 Module Pin 10 - V5.0 Module Pin 2 + GPI8_USER, // GPIO05 V3.1 Module Pin 9 - V5.0 Module Pin 1 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Relay1 ( 1 = Off) - GPIO_REL2, // GPIO13 Relay1 ( 1 = On) - GPIO_USER, // GPIO14 V3.1 Module Pin 5 - V5.0 GPIO_REL3_INV Relay2 ( 1 = Off) - GPIO_LED1, // GPIO15 V5.0 LED1 - Link and Power status - GPIO_USER, // GPIO16 V3.1 Module Pin 4 - V5.0 GPIO_REL4_INV Relay2 ( 1 = On) + GPI8_REL1, // GPIO12 Relay1 ( 1 = Off) + GPI8_REL2, // GPIO13 Relay1 ( 1 = On) + GPI8_USER, // GPIO14 V3.1 Module Pin 5 - V5.0 GPI8_REL3_INV Relay2 ( 1 = Off) + GPI8_LED1, // GPIO15 V5.0 LED1 - Link and Power status + GPI8_USER, // GPIO16 V3.1 Module Pin 4 - V5.0 GPI8_REL4_INV Relay2 ( 1 = On) 0 }, { // WION - Indoor Tap (ESP8266) // https://www.amazon.com/gp/product/B00ZYLUBJU/ref=s9_acsd_al_bw_c_x_3_w - GPIO_USER, // GPIO00 Optional sensor (pm clock) + GPI8_USER, // GPIO00 Optional sensor (pm clock) 0, - GPIO_LED1, // GPIO02 Green Led (1 = On, 0 = Off) - Link and Power status + GPI8_LED1, // GPIO02 Green Led (1 = On, 0 = Off) - Link and Power status 0, 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1400,56 +1555,56 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Optional sensor (pm data) - GPIO_KEY1, // GPIO13 Button + GPI8_USER, // GPIO12 Optional sensor (pm data) + GPI8_KEY1, // GPIO13 Button 0, - GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) + GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 }, { // SONOFF_DEV - Sonoff Dev (ESP8266) - GPIO_KEY1, // GPIO00 E-FW Button - GPIO_USER, // GPIO01 TX Serial RXD and Optional sensor + GPI8_KEY1, // GPIO00 E-FW Button + GPI8_USER, // GPIO01 TX Serial RXD and Optional sensor 0, // GPIO02 - GPIO_USER, // GPIO03 RX Serial TXD and Optional sensor - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_USER, // GPIO03 RX Serial TXD and Optional sensor + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 - GPIO_USER, // GPIO13 BLUE LED - GPIO_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO12 + GPI8_USER, // GPIO13 BLUE LED + GPI8_USER, // GPIO14 Optional sensor 0, // GPIO15 0, // GPIO16 - ADC0_USER // ADC0 A0 Analog input + GPI8_USER // ADC0 A0 Analog input }, { // H801 - Lixada H801 Wifi (ESP8266) - GPIO_USER, // GPIO00 E-FW Button - GPIO_LED1, // GPIO01 Green LED - Link and Power status - GPIO_USER, // GPIO02 TX and Optional sensor - Pin next to TX on the PCB - GPIO_USER, // GPIO03 RX and Optional sensor - Pin next to GND on the PCB - GPIO_PWM5, // GPIO04 W2 - PWM5 - GPIO_LED2_INV, // GPIO05 Red LED + GPI8_USER, // GPIO00 E-FW Button + GPI8_LED1, // GPIO01 Green LED - Link and Power status + GPI8_USER, // GPIO02 TX and Optional sensor - Pin next to TX on the PCB + GPI8_USER, // GPIO03 RX and Optional sensor - Pin next to GND on the PCB + GPI8_PWM5, // GPIO04 W2 - PWM5 + GPI8_LED2_INV, // GPIO05 Red LED // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM3, // GPIO12 Blue - GPIO_PWM2, // GPIO13 Green - GPIO_PWM4, // GPIO14 W1 - PWM4 - GPIO_PWM1, // GPIO15 Red + GPI8_PWM3, // GPIO12 Blue + GPI8_PWM2, // GPIO13 Green + GPI8_PWM4, // GPIO14 W1 - PWM4 + GPI8_PWM1, // GPIO15 Red 0, 0 }, { // SONOFF_SC - onoff SC (ESP8266) - GPIO_KEY1, // GPIO00 Button - GPIO_TXD, // GPIO01 RXD to ATMEGA328P - GPIO_USER, // GPIO02 Optional sensor - GPIO_RXD, // GPIO03 TXD to ATMEGA328P + GPI8_KEY1, // GPIO00 Button + GPI8_TXD, // GPIO01 RXD to ATMEGA328P + GPI8_USER, // GPIO02 Optional sensor + GPI8_RXD, // GPIO03 TXD to ATMEGA328P 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1458,7 +1613,7 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, - GPIO_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status + GPI8_LED1_INV, // GPIO13 Green Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_BN - Sonoff BN-SZ01 Ceiling led (ESP8285) @@ -1469,50 +1624,50 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM1, // GPIO12 Light - GPIO_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Link and Power status + GPI8_PWM1, // GPIO12 Light + GPI8_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // HUAFAN_SS - Hua Fan Smart Socket (ESP8266) - like Sonoff Pow - GPIO_LEDLNK_INV, // GPIO00 Blue Led (0 = On, 1 = Off) - Link status + GPI8_LEDLNK_INV, // GPIO00 Blue Led (0 = On, 1 = Off) - Link status 0, 0, - GPIO_LED1_INV, // GPIO03 Red Led (0 = On, 1 = Off) - Power status - GPIO_KEY1, // GPIO04 Button - GPIO_REL1_INV, // GPIO05 Relay (0 = On, 1 = Off) + GPI8_LED1_INV, // GPIO03 Red Led (0 = On, 1 = Off) - Power status + GPI8_KEY1, // GPIO04 Button + GPI8_REL1_INV, // GPIO05 Relay (0 = On, 1 = Off) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_CF1, // GPIO12 HLW8012 CF1 voltage / current - GPIO_NRG_SEL, // GPIO13 HLW8012 Sel output (1 = Voltage) - GPIO_HLW_CF, // GPIO14 HLW8012 CF power + GPI8_NRG_CF1, // GPIO12 HLW8012 CF1 voltage / current + GPI8_NRG_SEL, // GPIO13 HLW8012 Sel output (1 = Voltage) + GPI8_HLW_CF, // GPIO14 HLW8012 CF power 0, 0, 0 }, { // SONOFF_BRIDGE - Sonoff RF Bridge 433 (ESP8285) - GPIO_KEY1, // GPIO00 Button - GPIO_TXD, // GPIO01 RF bridge control - GPIO_USER, // GPIO02 Optional sensor - GPIO_RXD, // GPIO03 RF bridge control - GPIO_USER, // GPIO04 Optional sensor - GPIO_USER, // GPIO05 Optional sensor + GPI8_KEY1, // GPIO00 Button + GPI8_TXD, // GPIO01 RF bridge control + GPI8_USER, // GPIO02 Optional sensor + GPI8_RXD, // GPIO03 RF bridge control + GPI8_USER, // GPIO04 Optional sensor + GPI8_USER, // GPIO05 Optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Optional sensor - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status - GPIO_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO12 Optional sensor + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_USER, // GPIO14 Optional sensor 0, 0, 0 }, { // SONOFF_B1 - Sonoff B1 (ESP8285 - my9231) - GPIO_KEY1, // GPIO00 Pad - GPIO_USER, // GPIO01 Serial RXD and Optional sensor pad - GPIO_USER, // GPIO02 Optional sensor SDA pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor pad + GPI8_KEY1, // GPIO00 Pad + GPI8_USER, // GPIO01 Serial RXD and Optional sensor pad + GPI8_USER, // GPIO02 Optional sensor SDA pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor pad 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1520,16 +1675,16 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_DI, // GPIO12 my9231 DI + GPI8_DI, // GPIO12 my9231 DI 0, - GPIO_DCKI, // GPIO14 my9231 DCKI + GPI8_DCKI, // GPIO14 my9231 DCKI 0, 0, 0 }, { // AILIGHT - Ai-Thinker RGBW led (ESP8266 - my9291) - GPIO_KEY1, // GPIO00 Pad - GPIO_USER, // GPIO01 Serial RXD and Optional sensor pad - GPIO_USER, // GPIO02 Optional sensor SDA pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor pad + GPI8_KEY1, // GPIO00 Pad + GPI8_USER, // GPIO01 Serial RXD and Optional sensor pad + GPI8_USER, // GPIO02 Optional sensor SDA pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor pad 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1538,16 +1693,16 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, - GPIO_DI, // GPIO13 my9291 DI + GPI8_DI, // GPIO13 my9291 DI 0, - GPIO_DCKI, // GPIO15 my9291 DCKI + GPI8_DCKI, // GPIO15 my9291 DCKI 0, 0 }, { // SONOFF_T11 - Sonoff T1 1CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional Sensor (J3 Pin 5) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1555,65 +1710,65 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SUPLA1 - Supla Espablo (ESP8266) // http://www.wykop.pl/ramka/3325399/diy-supla-do-puszki-instalacyjnej-podtynkowej-supla-org/ 0, // GPIO00 Flash jumper - GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO01 Serial RXD and Optional sensor #ifdef USE_DS18x20 - GPIO_DSB, // GPIO02 DS18B20 sensor + GPI8_DSB, // GPIO02 DS18B20 sensor #else - GPIO_USER, // GPIO02 Optional sensor + GPI8_USER, // GPIO02 Optional sensor #endif - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_KEY1, // GPIO04 Button 1 - GPIO_REL1, // GPIO05 Relay 1 (0 = Off, 1 = On) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO04 Button 1 + GPI8_REL1, // GPIO05 Relay 1 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Optional sensor - GPIO_REL2, // GPIO13 Relay 2 (0 = Off, 1 = On) - GPIO_USER, // GPIO14 Optional sensor + GPI8_USER, // GPIO12 Optional sensor + GPI8_REL2, // GPIO13 Relay 2 (0 = Off, 1 = On) + GPI8_USER, // GPIO14 Optional sensor 0, - GPIO_LED1, // GPIO16 Led (1 = On, 0 = Off) - Link and Power status - ADC0_USER // ADC0 A0 Analog input + GPI8_LED1, // GPIO16 Led (1 = On, 0 = Off) - Link and Power status + GPI8_USER // ADC0 A0 Analog input }, { // WITTY - Witty Cloud Dev Board (ESP8266) // https://www.aliexpress.com/item/ESP8266-serial-WIFI-Witty-cloud-Development-Board-ESP-12F-module-MINI-nodemcu/32643464555.html - GPIO_USER, // GPIO00 D3 flash push button on interface board - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_LED1_INV, // GPIO02 D4 Blue Led (0 = On, 1 = Off) on ESP-12F - Link and Power status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_KEY1, // GPIO04 D2 push button on ESP-12F board - GPIO_USER, // GPIO05 D1 optional sensor + GPI8_USER, // GPIO00 D3 flash push button on interface board + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_LED1_INV, // GPIO02 D4 Blue Led (0 = On, 1 = Off) on ESP-12F - Link and Power status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO04 D2 push button on ESP-12F board + GPI8_USER, // GPIO05 D1 optional sensor // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 D6 RGB LED Green - GPIO_PWM3, // GPIO13 D7 RGB LED Blue - GPIO_USER, // GPIO14 D5 optional sensor - GPIO_PWM1, // GPIO15 D8 RGB LED Red - GPIO_USER, // GPIO16 D0 optional sensor - ADC0_USER // ADC0 A0 Light sensor / Requires USE_ADC_VCC in user_config.h to be disabled + GPI8_PWM2, // GPIO12 D6 RGB LED Green + GPI8_PWM3, // GPIO13 D7 RGB LED Blue + GPI8_USER, // GPIO14 D5 optional sensor + GPI8_PWM1, // GPIO15 D8 RGB LED Red + GPI8_USER, // GPIO16 D0 optional sensor + GPI8_USER // ADC0 A0 Light sensor / Requires USE_ADC_VCC in user_config.h to be disabled }, { // YUNSHAN - Yunshan Wifi Relay (ESP8266) // https://www.ebay.com/p/Esp8266-220v-10a-Network-Relay-WiFi-Module/1369583381 // Schematics and Info https://ucexperiment.wordpress.com/2016/12/18/yunshan-esp8266-250v-15a-acdc-network-wifi-relay-module/ 0, // GPIO00 Flash jumper - Module Pin 8 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - Module Pin 2 - GPIO_LED1_INV, // GPIO02 Blue Led (0 = On, 1 = Off) on ESP-12F - Module Pin 7 - Link and Power status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - Module Pin 3 - GPIO_REL1, // GPIO04 Red Led and Relay (0 = Off, 1 = On) - Module Pin 10 - GPIO_KEY1, // GPIO05 Blue Led and OptoCoupler input - Module Pin 9 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor - Module Pin 2 + GPI8_LED1_INV, // GPIO02 Blue Led (0 = On, 1 = Off) on ESP-12F - Module Pin 7 - Link and Power status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor - Module Pin 3 + GPI8_REL1, // GPIO04 Red Led and Relay (0 = Off, 1 = On) - Module Pin 10 + GPI8_KEY1, // GPIO05 Blue Led and OptoCoupler input - Module Pin 9 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) @@ -1625,109 +1780,109 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { { // MAGICHOME - Magic Home (aka Flux-light) (ESP8266) and Arilux LC10 (ESP8285) // https://www.aliexpress.com/item/Magic-Home-Mini-RGB-RGBW-Wifi-Controller-For-Led-Strip-Panel-light-Timing-Function-16million-colors/32686853650.html 0, - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_LED1_INV, // GPIO02 Blue onboard LED - Link and Power status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) (Arilux LC10) - GPIO_PWM2, // GPIO05 RGB LED Green + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_LED1_INV, // GPIO02 Blue onboard LED - Link and Power status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_ARIRFRCV, // GPIO04 IR or RF receiver (optional) (Arilux LC10) + GPI8_PWM2, // GPIO05 RGB LED Green // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM3, // GPIO12 RGB LED Blue - GPIO_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10) - GPIO_PWM1, // GPIO14 RGB LED Red - GPIO_ARIRFSEL, // GPIO15 RF receiver control (Arilux LC10) + GPI8_PWM3, // GPIO12 RGB LED Blue + GPI8_USER, // GPIO13 RGBW LED White (optional - set to PWM4 for Cold White or Warm White as used on Arilux LC10) + GPI8_PWM1, // GPIO14 RGB LED Red + GPI8_ARIRFSEL, // GPIO15 RF receiver control (Arilux LC10) 0, 0 }, { // LUANIHVIO - ESP8266_HVIO // https://luani.de/projekte/esp8266-hvio/ 0, // GPIO00 Flash jumper - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional sensor / I2C SDA pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_REL1, // GPIO04 Relay 1 (0 = Off, 1 = On) - GPIO_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional sensor / I2C SDA pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_REL1, // GPIO04 Relay 1 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_SWT1, // GPIO12 External input 1 (0 = On, 1 = Off) - GPIO_SWT2, // GPIO13 External input 2 (0 = On, 1 = Off) - GPIO_USER, // GPIO14 Optional sensor / I2C SCL pad - GPIO_LED1, // GPIO15 Led (1 = On, 0 = Off) - Link and Power status + GPI8_SWT1, // GPIO12 External input 1 (0 = On, 1 = Off) + GPI8_SWT2, // GPIO13 External input 2 (0 = On, 1 = Off) + GPI8_USER, // GPIO14 Optional sensor / I2C SCL pad + GPI8_LED1, // GPIO15 Led (1 = On, 0 = Off) - Link and Power status 0, - ADC0_USER // ADC0 A0 Analog input + GPI8_USER // ADC0 A0 Analog input }, { // KMC_70011 - KMC 70011 // https://www.amazon.com/KMC-Timing-Monitoring-Network-125V-240V/dp/B06XRX2GTQ - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL, // GPIO12 HLW8012 SEL (1 = Voltage) - GPIO_LED1_INV, // GPIO13 Green Led - Link and Power status - GPIO_REL1, // GPIO14 Relay + GPI8_NRG_SEL, // GPIO12 HLW8012 SEL (1 = Voltage) + GPI8_LED1_INV, // GPIO13 Green Led - Link and Power status + GPI8_REL1, // GPIO14 Relay 0, 0, 0 }, { // ARILUX_LC01 - Arilux AL-LC01 (ESP8285) // https://www.banggood.com/nl/ARILUX-AL-LC01-Super-Mini-LED-WIFI-Smart-RGB-Controller-For-RGB-LED-Strip-Light-DC-9-12V-p-1058603.html // (PwmFrequency 1111Hz) - GPIO_KEY1, // GPIO00 Optional Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_ARIRFSEL, // GPIO02 RF receiver control - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_ARIRFRCV, // GPIO04 IR or RF receiver (optional) - GPIO_PWM1, // GPIO05 RGB LED Red + GPI8_KEY1, // GPIO00 Optional Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_ARIRFSEL, // GPIO02 RF receiver control + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_ARIRFRCV, // GPIO04 IR or RF receiver (optional) + GPI8_PWM1, // GPIO05 RGB LED Red // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 RGB LED Green - GPIO_PWM3, // GPIO13 RGB LED Blue - GPIO_USER, // GPIO14 RGBW LED White (optional - set to PWM4 for Cold White or Warm White) + GPI8_PWM2, // GPIO12 RGB LED Green + GPI8_PWM3, // GPIO13 RGB LED Blue + GPI8_USER, // GPIO14 RGBW LED White (optional - set to PWM4 for Cold White or Warm White) 0, 0, 0 }, { // ARILUX_LC11 - Arilux AL-LC11 (ESP8266) // https://www.banggood.com/nl/ARILUX-AL-LC11-Super-Mini-LED-WIFI-APP-Controller-RF-Remote-Control-For-RGBWW-LED-Strip-DC9-28V-p-1085112.html // (PwmFrequency 540Hz) - GPIO_KEY1, // GPIO00 Optional Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_ARIRFSEL, // GPIO02 RF receiver control - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_PWM2, // GPIO04 RGB LED Green - GPIO_PWM1, // GPIO05 RGB LED Red + GPI8_KEY1, // GPIO00 Optional Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_ARIRFSEL, // GPIO02 RF receiver control + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_PWM2, // GPIO04 RGB LED Green + GPI8_PWM1, // GPIO05 RGB LED Red // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM5, // GPIO12 RGBCW LED Warm - GPIO_PWM4, // GPIO13 RGBW LED Cold - GPIO_PWM3, // GPIO14 RGB LED Blue - GPIO_ARIRFRCV, // GPIO15 RF receiver input + GPI8_PWM5, // GPIO12 RGBCW LED Warm + GPI8_PWM4, // GPIO13 RGBW LED Cold + GPI8_PWM3, // GPIO14 RGB LED Blue + GPI8_ARIRFRCV, // GPIO15 RF receiver input 0, 0 }, { // ARILUX_LC06 - Arilux AL-LC06 (ESP8285) // https://www.banggood.com/ARILUX-AL-LC06-LED-WIFI-Smartphone-Controller-Romote-5-Channels-DC12-24V-For-RGBWW-Strip-light-p-1061476.html - GPIO_KEY1, // GPIO00 Optional Button - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Empty pad - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_USER, // GPIO04 W2 - PWM5 + GPI8_KEY1, // GPIO00 Optional Button + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Empty pad + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO04 W2 - PWM5 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1735,19 +1890,19 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 RGB LED Green - GPIO_PWM3, // GPIO13 RGB LED Blue - GPIO_PWM1, // GPIO14 RGB LED Red - GPIO_USER, // GPIO15 RGBW LED White + GPI8_PWM2, // GPIO12 RGB LED Green + GPI8_PWM3, // GPIO13 RGB LED Blue + GPI8_PWM1, // GPIO14 RGB LED Red + GPI8_USER, // GPIO15 RGBW LED White 0, 0 }, { // ZENGGE_ZF_WF017 - Zenggee ZJ-WF017-A (ESP12S)) // https://www.ebay.com/p/Smartphone-Android-IOS-WiFi-Music-Controller-for-RGB-5050-3528-LED-Strip-Light/534446632?_trksid=p2047675.l2644 - GPIO_KEY1, // GPIO00 Optional Button + GPI8_KEY1, // GPIO00 Optional Button 0, - GPIO_USER, // GPIO02 Empty pad + GPI8_USER, // GPIO02 Empty pad 0, - GPIO_USER, // GPIO04 W2 - PWM5 + GPI8_USER, // GPIO04 W2 - PWM5 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1755,16 +1910,16 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 RGB LED Green - GPIO_PWM1, // GPIO13 RGB LED Red - GPIO_PWM3, // GPIO14 RGB LED Blue + GPI8_PWM2, // GPIO12 RGB LED Green + GPI8_PWM1, // GPIO13 RGB LED Red + GPI8_PWM3, // GPIO14 RGB LED Blue 0, 0, 0 }, { // SONOFF_POW_R2 - Sonoff Pow R2 (ESP8285 - CSE7766) - GPIO_KEY1, // GPIO00 Button - GPIO_CSE7766_TX, // GPIO01 Serial RXD 4800 baud 8E1 CSE7766 energy sensor + GPI8_KEY1, // GPIO00 Button + GPI8_CSE7766_TX, // GPIO01 Serial RXD 4800 baud 8E1 CSE7766 energy sensor 0, - GPIO_CSE7766_RX, // GPIO03 Serial TXD + GPI8_CSE7766_RX, // GPIO03 Serial TXD 0, 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1772,8 +1927,8 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // BLITZWOLF_BWSHP - BlitzWolf BW-SHP2 and BW-SHP6 (ESP8285 - BL0937 or HJL-01 Energy Monitoring) @@ -1781,31 +1936,31 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // https://www.amazon.de/Steckdose-Homecube-intelligente-Verbrauchsanzeige-funktioniert/dp/B076Q2LKHG/ref=sr_1_fkmr0_1 // https://www.amazon.de/Intelligente-Stromverbrauch-Fernsteurung-Schaltbare-Energieklasse/dp/B076WZQS4S/ref=sr_1_1 // https://www.aliexpress.com/store/product/BlitzWolf-BW-SHP6-EU-Plug-Metering-Version-WIFI-Smart-Socket-220V-240V-10A-Work-with-Amazon/1965360_32945504669.html - GPIO_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, - GPIO_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power + GPI8_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_KEY1, // GPIO13 Button - GPIO_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage - GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_KEY1, // GPIO13 Button + GPI8_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage + GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 }, { // SHELLY1 - Shelly1 Open Source (ESP8266 - 2MB) - https://shelly.cloud/shelly1-open-source/ - GPIO_USER, // GPIO00 - Can be changed to GPIO_USER, only if Shelly is powered with 12V DC - GPIO_USER, // GPIO01 Serial RXD - Can be changed to GPIO_USER, only if Shelly is powered with 12V DC + GPI8_USER, // GPIO00 - Can be changed to GPI8_USER, only if Shelly is powered with 12V DC + GPI8_USER, // GPIO01 Serial RXD - Can be changed to GPI8_USER, only if Shelly is powered with 12V DC 0, - GPIO_USER, // GPIO03 Serial TXD - Can be changed to GPIO_USER, only if Shelly is powered with 12V DC - GPIO_REL1, // GPIO04 Relay (0 = Off, 1 = On) - GPIO_SWT1_NP, // GPIO05 SW pin + GPI8_USER, // GPIO03 Serial TXD - Can be changed to GPI8_USER, only if Shelly is powered with 12V DC + GPI8_REL1, // GPIO04 Relay (0 = Off, 1 = On) + GPI8_SWT1_NP, // GPIO05 SW pin // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) @@ -1816,21 +1971,21 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { }, { // SHELLY2 - Shelly2 (ESP8266 - 2MB) - https://shelly.cloud/shelly2/ 0, - GPIO_MCP39F5_TX, // GPIO01 MCP39F501 Serial input + GPI8_MCP39F5_TX, // GPIO01 MCP39F501 Serial input 0, - GPIO_MCP39F5_RX, // GPIO03 MCP39F501 Serial output - GPIO_REL1, // GPIO04 - GPIO_REL2, // GPIO05 + GPI8_MCP39F5_RX, // GPIO03 MCP39F501 Serial output + GPI8_REL1, // GPIO04 + GPI8_REL2, // GPIO05 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_SWT1, // GPIO12 + GPI8_SWT1, // GPIO12 0, - GPIO_SWT2, // GPIO14 - GPIO_MCP39F5_RST, // GPIO15 MCP39F501 Reset + GPI8_SWT2, // GPIO14 + GPI8_MCP39F5_RST, // GPIO15 MCP39F501 Reset 0, 0 }, @@ -1842,15 +1997,15 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_PWM2, // GPIO12 cold/warm light + GPI8_PWM2, // GPIO12 cold/warm light 0, 0, - GPIO_PWM1, // GPIO15 light intensity + GPI8_PWM1, // GPIO15 light intensity 0, 0 }, { // NEO_COOLCAM - Neo Coolcam (ESP8266) // https://www.banggood.com/NEO-COOLCAM-WiFi-Mini-Smart-Plug-APP-Remote-Control-Timing-Smart-Socket-EU-Plug-p-1288562.html?cur_warehouse=CN 0, 0, 0, 0, - GPIO_LED1_INV, // GPIO04 Red Led (0 = On, 1 = Off) - Link and Power status + GPI8_LED1_INV, // GPIO04 Red Led (0 = On, 1 = Off) - Link and Power status 0, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -1858,203 +2013,203 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) - GPIO_KEY1, // GPIO13 Button + GPI8_REL1, // GPIO12 Red Led and Relay (0 = Off, 1 = On) + GPI8_KEY1, // GPIO13 Button 0, 0, 0, 0 }, { // ESP_SWITCH - Michael Haustein 4 channel wall switch (ESP07 = ESP8266) // Use rules for further actions like - rule on power1#state do publish cmnd/other_device/power %value% endon - GPIO_KEY2, // GPIO00 Button 2 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_REL3_INV, // GPIO02 Yellow Led 3 (0 = On, 1 = Off) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_KEY1, // GPIO04 Button 1 - GPIO_REL2_INV, // GPIO05 Red Led 2 (0 = On, 1 = Off) + GPI8_KEY2, // GPIO00 Button 2 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_REL3_INV, // GPIO02 Yellow Led 3 (0 = On, 1 = Off) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO04 Button 1 + GPI8_REL2_INV, // GPIO05 Red Led 2 (0 = On, 1 = Off) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL4_INV, // GPIO12 Blue Led 4 (0 = On, 1 = Off) - GPIO_KEY4, // GPIO13 Button 4 - GPIO_KEY3, // GPIO14 Button 3 - GPIO_LED1, // GPIO15 Optional sensor - GPIO_REL1_INV, // GPIO16 Green Led 1 (0 = On, 1 = Off) + GPI8_REL4_INV, // GPIO12 Blue Led 4 (0 = On, 1 = Off) + GPI8_KEY4, // GPIO13 Button 4 + GPI8_KEY3, // GPIO14 Button 3 + GPI8_LED1, // GPIO15 Optional sensor + GPI8_REL1_INV, // GPIO16 Green Led 1 (0 = On, 1 = Off) 0 }, { // OBI - OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko/p/2291706 - GPIO_USER, // GPIO00 - GPIO_USER, // GPIO01 Serial RXD + GPI8_USER, // GPIO00 + GPI8_USER, // GPIO01 Serial RXD 0, - GPIO_USER, // GPIO03 Serial TXD - GPIO_LED1, // GPIO04 Blue LED - Link and Power status - GPIO_REL1, // GPIO05 (Relay OFF, but used as Relay Switch) + GPI8_USER, // GPIO03 Serial TXD + GPI8_LED1, // GPIO04 Blue LED - Link and Power status + GPI8_REL1, // GPIO05 (Relay OFF, but used as Relay Switch) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_LED3, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05) - GPIO_USER, // GPIO13 - GPIO_KEY1, // GPIO14 Button + GPI8_LED3, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05) + GPI8_USER, // GPIO13 + GPI8_KEY1, // GPIO14 Button 0, - GPIO_USER, // GPIO16 - ADC0_USER // ADC0 A0 Analog input + GPI8_USER, // GPIO16 + GPI8_USER // ADC0 A0 Analog input }, { // TECKIN - https://www.amazon.de/gp/product/B07D5V139R 0, - GPIO_KEY1, // GPIO01 Serial TXD and Button + GPI8_KEY1, // GPIO01 Serial TXD and Button 0, - GPIO_LED1_INV, // GPIO03 Serial RXD and Red Led (0 = On, 1 = Off) - Power status - GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + GPI8_LED1_INV, // GPIO03 Serial RXD and Red Led (0 = On, 1 = Off) - Power status + GPI8_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status - GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status + GPI8_REL1, // GPIO14 Relay (0 = Off, 1 = On) 0, 0, 0 }, { // APLIC_WDP303075 - Aplic WDP 303075 (ESP8285 - HLW8012 Energy Monitoring) // https://www.amazon.de/dp/B07CNWVNJ2 0, 0, 0, - GPIO_KEY1, // GPIO03 Button - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage + GPI8_KEY1, // GPIO03 Button + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) - GPIO_LED1_INV, // GPIO13 LED (0 = On, 1 = Off) - Link and Power status - GPIO_REL1, // GPIO14 Relay SRU 5VDC SDA (0 = Off, 1 = On ) + GPI8_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) + GPI8_LED1_INV, // GPIO13 LED (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO14 Relay SRU 5VDC SDA (0 = Off, 1 = On ) 0, 0, 0 }, { // TUYA_DIMMER - Tuya MCU device (ESP8266 w/ separate MCU) // https://www.amazon.com/gp/product/B07CTNSZZ8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 - GPIO_USER, // Virtual Button (controlled by MCU) - GPIO_USER, // GPIO01 MCU serial control - GPIO_USER, - GPIO_USER, // GPIO03 MCU serial control - GPIO_USER, - GPIO_USER, + GPI8_USER, // Virtual Button (controlled by MCU) + GPI8_USER, // GPIO01 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO03 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, - GPIO_USER, - GPIO_USER, // GPIO14 Green Led - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, // GPIO14 Green Led + GPI8_USER, + GPI8_USER, 0 }, { // GOSUND - https://www.amazon.de/gp/product/B0777BWS1P 0, - GPIO_LEDLNK_INV, // GPIO01 Serial RXD and LED1 (blue) inv - Link status + GPI8_LEDLNK_INV, // GPIO01 Serial RXD and LED1 (blue) inv - Link status 0, - GPIO_KEY1, // GPIO03 Serial TXD and Button - GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + GPI8_KEY1, // GPIO03 Serial TXD and Button + GPI8_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_LED1_INV, // GPIO13 LED2 (red) inv - Power status - GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_LED1_INV, // GPIO13 LED2 (red) inv - Power status + GPI8_REL1, // GPIO14 Relay (0 = Off, 1 = On) 0, 0, 0 }, { // ARMTRONIX_DIMMERS - ARMTRONIX Dimmer, one or two channel (ESP8266 w/ separate MCU dimmer) // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-two-triac-board/ // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-esp8266-one-triac-board-alexaecho/ - GPIO_USER, - GPIO_TXD, // GPIO01 MCU serial control - GPIO_USER, - GPIO_RXD, // GPIO03 MCU serial control - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_TXD, // GPIO01 MCU serial control + GPI8_USER, + GPI8_RXD, // GPIO03 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, - GPIO_USER, - GPIO_USER, - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, + GPI8_USER, 0 }, { // SK03_TUYA - Outdoor smart plug with power monitoring HLW8012 chip - https://www.amazon.com/gp/product/B07CG7MBPV - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) - GPIO_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Power status - GPIO_LEDLNK_INV, // GPIO14 Blue Led (0 = On, 1 = Off) - Link status - GPIO_REL1, // GPIO15 Relay (0 = Off, 1 = On) + GPI8_NRG_SEL_INV, // GPIO12 HLW8012 CF Sel output (0 = Voltage) + GPI8_LED1_INV, // GPIO13 Red Led (0 = On, 1 = Off) - Power status + GPI8_LEDLNK_INV, // GPIO14 Blue Led (0 = On, 1 = Off) - Link status + GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On) 0, 0 }, { // PS_16_DZ - PS-16-DZ Dimmer (ESP8266 w/ separate Nuvoton MCU dimmer) // https://www.aliexpress.com/item/SM-Smart-WIFI-Wall-Dimmer-Light-Switch-US-Ewelink-APP-Remote-Control-Wi-Fi-Wirele-Work/32871151902.html - GPIO_USER, - GPIO_TXD, // GPIO01 MCU serial control - GPIO_USER, - GPIO_RXD, // GPIO03 MCU serial control - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_TXD, // GPIO01 MCU serial control + GPI8_USER, + GPI8_RXD, // GPIO03 MCU serial control + GPI8_USER, + GPI8_USER, // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, - GPIO_LED1, // GPIO13 WiFi LED - Link and Power status - GPIO_USER, - GPIO_USER, - GPIO_USER, + GPI8_USER, + GPI8_LED1, // GPIO13 WiFi LED - Link and Power status + GPI8_USER, + GPI8_USER, + GPI8_USER, 0 }, { // TECKIN_US - Teckin SP20 US with Energy Monitoring // https://www.amazon.com/Outlet-Compatible-Monitoring-Function-Required/dp/B079Q5W22B // https://www.amazon.com/Outlet-ZOOZEE-Monitoring-Function-Compatible/dp/B07J2LR5KN - GPIO_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status + GPI8_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status 0, - GPIO_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status + GPI8_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status 0, - GPIO_REL1, // GPIO04 Relay (0 = Off, 1 = On) - GPIO_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power + GPI8_REL1, // GPIO04 Relay (0 = Off, 1 = On) + GPI8_HJL_CF, // GPIO05 BL0937 or HJL-01 CF power // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_KEY1, // GPIO13 Button - GPIO_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_KEY1, // GPIO13 Button + GPI8_NRG_CF1, // GPIO14 BL0937 or HJL-01 CF1 current / voltage 0, 0, 0 }, { // MANZOKU_EU_4 - "MANZOKU" labeled power strip, EU version @@ -2063,20 +2218,20 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { 0, // GPIO00 0, // GPIO01 Serial RXD 0, - GPIO_KEY1, // GPIO03 Serial TXD + Button - GPIO_REL2, // GPIO04 Relay 2 - GPIO_REL1, // GPIO05 Relay 1 + GPI8_KEY1, // GPIO03 Serial TXD + Button + GPI8_REL2, // GPIO04 Relay 2 + GPI8_REL1, // GPIO05 Relay 1 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL3, // GPIO12 Relay 3 - GPIO_REL4, // GPIO13 Relay 4 - GPIO_USER, // GPIO14 + GPI8_REL3, // GPIO12 Relay 3 + GPI8_REL4, // GPIO13 Relay 4 + GPI8_USER, // GPIO14 0, - GPIO_USER, // GPIO16 + GPI8_USER, // GPIO16 0 }, { // OBI2 - OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko-2-stueck-weiss/p/4077673 @@ -2084,25 +2239,25 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { 0, // GPIO01 Serial RXD 0, 0, // GPIO03 Serial TXD - GPIO_REL1, // GPIO04 Relay 1 - GPIO_KEY1, // GPIO05 Button + GPI8_REL1, // GPIO04 Relay 1 + GPI8_KEY1, // GPIO05 Button // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_LEDLNK_INV, // GPIO12 Green LED - Link status - GPIO_LED1, // GPIO13 Red LED - Power status + GPI8_LEDLNK_INV, // GPIO12 Green LED - Link status + GPI8_LED1, // GPIO13 Red LED - Power status 0, 0, 0, 0 }, { // YTF_IR_BRIDGE - https://www.aliexpress.com/item/Tuya-universal-Smart-IR-Hub-remote-control-Voice-Control-AC-TV-Work-With-Alexa-Google-Home/32951202513.html - GPIO_USER, // GPIO00 - GPIO_USER, // GPIO01 Serial RXD - GPIO_USER, // GPIO02 - GPIO_USER, // GPIO03 Serial TXD - GPIO_LED1_INV, // GPIO04 Blue Led - Link status - GPIO_IRRECV, // GPIO05 IR Receiver + GPI8_USER, // GPIO00 + GPI8_USER, // GPIO01 Serial RXD + GPI8_USER, // GPIO02 + GPI8_USER, // GPIO03 Serial TXD + GPI8_LED1_INV, // GPIO04 Blue Led - Link status + GPI8_IRRECV, // GPIO05 IR Receiver // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) @@ -2110,162 +2265,162 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) 0, // GPIO12 - GPIO_KEY1, // GPIO13 Button - GPIO_IRSEND, // GPIO14 IR Transmitter + GPI8_KEY1, // GPIO13 Button + GPI8_IRSEND, // GPIO14 IR Transmitter 0, 0, 0 }, { // DIGOO - Digoo DG-SP202 // https://www.banggood.com/DIGOO-DG-SP202-Dual-EU-Plug-Smart-WIFI-Socket-Individual-Controllable-Energy-Monitor-Remote-Control-Timing-Smart-Home-Outlet-let-p-1375323.html - GPIO_KEY1, // GPIO00 Button1 + GPI8_KEY1, // GPIO00 Button1 0, // GPIO01 Serial RXD 0, // GPIO02 0, // GPIO03 Serial TXD - GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + GPI8_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_LED1, // GPIO13 Blue Leds - Link Status - GPIO_REL2, // GPIO14 Relay2 (0 = Off, 1 = On) and Red Led - GPIO_REL1, // GPIO15 Relay1 (0 = Off, 1 = On) and Red Led - GPIO_KEY2_NP, // GPIO16 Button2, externally pulled up + GPI8_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPI8_LED1, // GPIO13 Blue Leds - Link Status + GPI8_REL2, // GPIO14 Relay2 (0 = Off, 1 = On) and Red Led + GPI8_REL1, // GPIO15 Relay1 (0 = Off, 1 = On) and Red Led + GPI8_KEY2_NP, // GPIO16 Button2, externally pulled up 0 }, { // KA10 - SMANERGY KA10 (ESP8285 - BL0937 Energy Monitoring) - https://www.amazon.es/dp/B07MBTCH2Y 0, // GPIO00 - GPIO_LEDLNK_INV, // GPIO01 Blue LED - Link status + GPI8_LEDLNK_INV, // GPIO01 Blue LED - Link status 0, // GPIO02 - GPIO_KEY1, // GPIO03 Button - GPIO_HJL_CF, // GPIO04 BL0937 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current + GPI8_KEY1, // GPIO03 Button + GPI8_HJL_CF, // GPIO04 BL0937 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) - GPIO_LED1, // GPIO13 Red LED - Power status - GPIO_REL1, // GPIO14 Relay 1 + GPI8_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) + GPI8_LED1, // GPIO13 Red LED - Power status + GPI8_REL1, // GPIO14 Relay 1 0, 0, 0 }, { // ZX2820 - GPIO_KEY1, // GPIO00 Button + GPI8_KEY1, // GPIO00 Button 0, 0, 0, - GPIO_HLW_CF, // GPIO04 HLW8012 CF power - GPIO_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current + GPI8_HLW_CF, // GPIO04 HLW8012 CF power + GPI8_NRG_CF1, // GPIO05 HLW8012 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 HLW8012 SEL (0 = Voltage) - GPIO_LED1_INV, // GPIO13 Green Led - Link and Power status - GPIO_REL1, // GPIO14 Relay + GPI8_NRG_SEL_INV, // GPIO12 HLW8012 SEL (0 = Voltage) + GPI8_LED1_INV, // GPIO13 Green Led - Link and Power status + GPI8_REL1, // GPIO14 Relay 0, 0, 0 }, { // MI_DESK_LAMP - Mi LED Desk Lamp - https://www.mi.com/global/smartlamp/ 0, 0, - GPIO_KEY1, // GPIO02 Button + GPI8_KEY1, // GPIO02 Button 0, - GPIO_PWM1, // GPIO04 Cold White - GPIO_PWM2, // GPIO05 Warm White + GPI8_PWM1, // GPIO04 Cold White + GPI8_PWM2, // GPIO05 Warm White // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_ROT1A, // GPIO12 Rotary switch A pin - GPIO_ROT1B, // GPIO13 Rotary switch B pin + GPI8_ROT1A, // GPIO12 Rotary switch A pin + GPI8_ROT1B, // GPIO13 Rotary switch B pin 0, 0, 0, 0 }, { // SP10 - Tuya SP10 (BL0937 Energy Monitoring) // https://www.aliexpress.com/item/Smart-Mini-WiFi-Plug-Outlet-Switch-Work-With-ForEcho-Alexa-Google-Home-Remote-EU-Smart-Socket/32963670423.html 0, // GPIO00 - GPIO_PWM1, // GPIO01 Nightlight + GPI8_PWM1, // GPIO01 Nightlight 0, // GPIO02 - GPIO_KEY1, // GPIO03 Button - GPIO_HJL_CF, // GPIO04 BL0937 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current + GPI8_KEY1, // GPIO03 Button + GPI8_HJL_CF, // GPIO04 BL0937 CF power + GPI8_NRG_CF1, // GPIO05 BL0937 CF1 voltage / current // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) - GPIO_LED1, // GPIO13 Blue LED - Link status - GPIO_REL1, // GPIO14 Relay and red LED + GPI8_NRG_SEL_INV, // GPIO12 BL0937 Sel output (1 = Voltage) + GPI8_LED1, // GPIO13 Blue LED - Link status + GPI8_REL1, // GPIO14 Relay and red LED 0, 0, 0 }, { // WAGA - WAGA life CHCZ02MB (HJL-01 Energy Monitoring) // https://www.ebay.com/itm/332595697006 - GPIO_LED1_INV, // GPIO00 Red LED + GPI8_LED1_INV, // GPIO00 Red LED 0, // GPIO01 Serial RXD 0, // GPIO02 - GPIO_NRG_SEL_INV, // GPIO03 HJL-01 Sel output (1 = Voltage) + GPI8_NRG_SEL_INV, // GPIO03 HJL-01 Sel output (1 = Voltage) 0, // GPIO04 - GPIO_HJL_CF, // GPIO05 HJL-01 CF power + GPI8_HJL_CF, // GPIO05 HJL-01 CF power // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Relay - GPIO_KEY1, // GPIO13 Button - GPIO_NRG_CF1, // GPIO14 HJL-01 CF1 voltage / current - GPIO_LEDLNK_INV, // GPIO15 Blue LED - Link status + GPI8_REL1, // GPIO12 Relay + GPI8_KEY1, // GPIO13 Button + GPI8_NRG_CF1, // GPIO14 HJL-01 CF1 voltage / current + GPI8_LEDLNK_INV, // GPIO15 Blue LED - Link status 0, 0 }, { // SYF05 - Sunyesmart SYF05 (a.k.a. Fcmila) = TYWE3S + SM16726 - // Also works with Merkury 904 RGBW Bulbs with 13 set to GPIO_SM16716_SEL + // Also works with Merkury 904 RGBW Bulbs with 13 set to GPI8_SM16716_SEL // https://www.flipkart.com/fc-mila-bxav-xs-ad-smart-bulb/p/itmf85zgs45fzr7n // https://docs.tuya.com/en/hardware/WiFi-module/wifi-e3s-module.html // http://www.datasheet-pdf.com/PDF/SM16716-Datasheet-Sunmoon-932771 - GPIO_USER, // GPIO00 N.C. + GPI8_USER, // GPIO00 N.C. 0, // GPIO01 Serial RXD - GPIO_USER, // GPIO02 N.C. + GPI8_USER, // GPIO02 N.C. 0, // GPIO03 Serial TXD - GPIO_SM16716_CLK, // GPIO04 SM16716 Clock - GPIO_PWM1, // GPIO05 White + GPI8_SM16716_CLK, // GPIO04 SM16716 Clock + GPI8_PWM1, // GPIO05 White // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 Alt. White on some devices - GPIO_USER, // GPIO13 SM16716 Enable on some devices - GPIO_SM16716_DAT, // GPIO14 SM16716 Data + GPI8_USER, // GPIO12 Alt. White on some devices + GPI8_USER, // GPIO13 SM16716 Enable on some devices + GPI8_SM16716_DAT, // GPIO14 SM16716 Data 0, // GPIO15 wired to GND - GPIO_USER, // GPIO16 N.C. - ADC0_USER // ADC0 A0 Analog input + GPI8_USER, // GPIO16 N.C. + GPI8_USER // ADC0 A0 Analog input }, { // EXS_DIMMER - EX-Store WiFi Dimmer v4, two channel (ESP8266 w/ separate MCU dimmer) // https://ex-store.de/2-Kanal-RS232-WiFi-WLan-Dimmer-Modul-V4-fuer-Unterputzmontage-230V-3A // https://ex-store.de/2-Kanal-RS232-WiFi-WLan-Dimmer-Modul-V4-fuer-Unterputzmontage-230V-3A-ESP8266-V12-Stift-und-Buchsenleisten 0, - GPIO_TXD, // GPIO01 MCU serial control - GPIO_LEDLNK, // GPIO02 LED Link - GPIO_RXD, // GPIO03 MCU serial control - GPIO_USER, // GPIO04 - GPIO_USER, // GPIO05 + GPI8_TXD, // GPIO01 MCU serial control + GPI8_LEDLNK, // GPIO02 LED Link + GPI8_RXD, // GPIO03 MCU serial control + GPI8_USER, // GPIO04 + GPI8_USER, // GPIO05 // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 - GPIO_EXS_ENABLE, // GPIO13 EXS MCU Enable - GPIO_USER, // GPIO14 + GPI8_USER, // GPIO12 + GPI8_EXS_ENABLE, // GPIO13 EXS MCU Enable + GPI8_USER, // GPIO14 0, // GPIO15 0, 0 }, @@ -2277,31 +2432,31 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // https://www.amazon.com/dp/B07V26Q3VD // https://www.amazon.com/dp/B07K67D43J // https://www.amazon.com/dp/B07TTGFWFM - GPIO_KEY3, // GPIO00 Up button - GPIO_KEY2, // GPIO01 Down button + GPI8_KEY3, // GPIO00 Up button + GPI8_KEY2, // GPIO01 Down button 0, // GPIO02 - GPIO_LED4_INV, // GPIO03 Level 5 LED - GPIO_LEDLNK_INV, // GPIO04 LED Link - GPIO_LED3_INV, // GPIO05 Level 4 LED + GPI8_LED4_INV, // GPIO03 Level 5 LED + GPI8_LEDLNK_INV, // GPIO04 LED Link + GPI8_LED3_INV, // GPIO05 Level 4 LED // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_LED2_INV, // GPIO12 Level 3 LED - GPIO_PWM1, // GPIO13 Dimmer PWM - GPIO_LED1_INV, // GPIO12 Level 2 LED - GPIO_KEY1_INV, // GPIO15 Power button - GPIO_REL1_INV, // GPIO16 Power relay/Level 1 LED + GPI8_LED2_INV, // GPIO12 Level 3 LED + GPI8_PWM1, // GPIO13 Dimmer PWM + GPI8_LED1_INV, // GPIO12 Level 2 LED + GPI8_KEY1_INV, // GPIO15 Power button + GPI8_REL1_INV, // GPIO16 Power relay/Level 1 LED 0 }, { // SONOFF_ZB_BRIDGE - Sonoff Zigbee Bridge (ESP8266) - GPIO_LED1_INV, // GPIO00 Green Led (0 = On, 1 = Off) - Traffic between ESP and EFR - GPIO_ZIGBEE_TX, // GPIO01 Zigbee Serial control + GPI8_LED1_INV, // GPIO00 Green Led (0 = On, 1 = Off) - Traffic between ESP and EFR + GPI8_ZIGBEE_TX, // GPIO01 Zigbee Serial control 0, // GPIO02 - GPIO_ZIGBEE_RX, // GPIO03 Zigbee Serial control - GPIO_ZIGBEE_RST, // GPIO04 Zigbee Reset + GPI8_ZIGBEE_RX, // GPIO03 Zigbee Serial control + GPI8_ZIGBEE_RST, // GPIO04 Zigbee Reset 0, // GPIO05 EFR32 Bootloader mode (drive Low for Gecko Bootloader, inactive or high for Zigbee EmberZNet) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) @@ -2309,11 +2464,11 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { // GPIO09 (SD_DATA2 Flash QIO or ESP8285) // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_I2C_SDA, // GPIO12 I2C SDA - connected to 512KB EEPROM - GPIO_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status - GPIO_I2C_SCL, // GPIO14 I2C SCL - connected to 512KB EEPROM + GPI8_I2C_SDA, // GPIO12 I2C SDA - connected to 512KB EEPROM + GPI8_LEDLNK_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link status + GPI8_I2C_SCL, // GPIO14 I2C SCL - connected to 512KB EEPROM 0, // GPIO15 connected to IO15 pad, also used for logging - GPIO_KEY1, // GPIO16 Button + GPI8_KEY1, // GPIO16 Button 0 } }; @@ -2322,122 +2477,186 @@ const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = { * Templates with 14 usable pins (ESP8285) \*********************************************************************************************/ -const mytmplt kModules8285[TMP_MAXMODULE_8266 - TMP_WEMOS] PROGMEM = { +const mytmplt8285 kModules8285[TMP_MAXMODULE_8266 - TMP_WEMOS] PROGMEM = { { // WEMOS - Any ESP8266/ESP8285 device like WeMos and NodeMCU hardware (ESP8266) - GPIO_USER, // GPIO00 D3 Wemos Button Shield - GPIO_USER, // GPIO01 TX Serial RXD - GPIO_USER, // GPIO02 D4 Wemos DHT Shield - GPIO_USER, // GPIO03 RX Serial TXD and Optional sensor - GPIO_USER, // GPIO04 D2 Wemos I2C SDA - GPIO_USER, // GPIO05 D1 Wemos I2C SCL / Wemos Relay Shield (0 = Off, 1 = On) / Wemos WS2812B RGB led Shield + GPI8_USER, // GPIO00 D3 Wemos Button Shield + GPI8_USER, // GPIO01 TX Serial RXD + GPI8_USER, // GPIO02 D4 Wemos DHT Shield + GPI8_USER, // GPIO03 RX Serial TXD and Optional sensor + GPI8_USER, // GPIO04 D2 Wemos I2C SDA + GPI8_USER, // GPIO05 D1 Wemos I2C SCL / Wemos Relay Shield (0 = Off, 1 = On) / Wemos WS2812B RGB led Shield // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_USER, // GPIO09 (SD_DATA2 Flash QIO or ESP8285) - GPIO_USER, // GPIO10 (SD_DATA3 Flash QIO or ESP8285) + GPI8_USER, // GPIO09 (SD_DATA2 Flash QIO or ESP8285) + GPI8_USER, // GPIO10 (SD_DATA3 Flash QIO or ESP8285) // GPIO11 (SD_CMD Flash) - GPIO_USER, // GPIO12 D6 - GPIO_USER, // GPIO13 D7 - GPIO_USER, // GPIO14 D5 - GPIO_USER, // GPIO15 D8 - GPIO_USER, // GPIO16 D0 Wemos Wake - ADC0_USER // ADC0 A0 Analog input + GPI8_USER, // GPIO12 D6 + GPI8_USER, // GPIO13 D7 + GPI8_USER, // GPIO14 D5 + GPI8_USER, // GPIO15 D8 + GPI8_USER, // GPIO16 D0 Wemos Wake + GPI8_USER // ADC0 A0 Analog input }, { // SONOFF_4CH - Sonoff 4CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional sensor - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_REL3, // GPIO04 Sonoff 4CH Red Led and Relay 3 (0 = Off, 1 = On) - GPIO_REL2, // GPIO05 Sonoff 4CH Red Led and Relay 2 (0 = Off, 1 = On) + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional sensor + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_REL3, // GPIO04 Sonoff 4CH Red Led and Relay 3 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Sonoff 4CH Red Led and Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_KEY2, // GPIO09 Button 2 - GPIO_KEY3, // GPIO10 Button 3 + GPI8_KEY2, // GPIO09 Button 2 + GPI8_KEY3, // GPIO10 Button 3 // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Red Led and Relay 1 (0 = Off, 1 = On) - Link and Power status - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - GPIO_KEY4, // GPIO14 Button 4 - GPIO_REL4, // GPIO15 Red Led and Relay 4 (0 = Off, 1 = On) + GPI8_REL1, // GPIO12 Red Led and Relay 1 (0 = Off, 1 = On) - Link and Power status + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) + GPI8_KEY4, // GPIO14 Button 4 + GPI8_REL4, // GPIO15 Red Led and Relay 4 (0 = Off, 1 = On) 0, 0 }, { // SONOFF_T12 - Sonoff T1 2CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional Sensor (J3 Pin 5) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, - GPIO_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_KEY2, // GPIO09 Button 2 + GPI8_KEY2, // GPIO09 Button 2 0, // GPIO10 // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_T13 - Sonoff T1 3CH (ESP8285) - GPIO_KEY1, // GPIO00 Button 1 - GPIO_USER, // GPIO01 Serial RXD and Optional sensor - GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) - GPIO_USER, // GPIO03 Serial TXD and Optional sensor - GPIO_REL3, // GPIO04 Blue Led and Relay 3 (0 = Off, 1 = On) - GPIO_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) + GPI8_KEY1, // GPIO00 Button 1 + GPI8_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO02 Optional Sensor (J3 Pin 5) + GPI8_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_REL3, // GPIO04 Blue Led and Relay 3 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_KEY2, // GPIO09 Button 2 - GPIO_KEY3, // GPIO10 Button 3 + GPI8_KEY2, // GPIO09 Button 2 + GPI8_KEY3, // GPIO10 Button 3 // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Blue Led and Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_DUAL_R2 - Sonoff Dual R2 (ESP8285) - GPIO_USER, // GPIO00 Button 0 on header (0 = On, 1 = Off) - GPIO_USER, // GPIO01 Serial RXD and Optional sensor + GPI8_USER, // GPIO00 Button 0 on header (0 = On, 1 = Off) + GPI8_USER, // GPIO01 Serial RXD and Optional sensor 0, - GPIO_USER, // GPIO03 Serial TXD and Optional sensor + GPI8_USER, // GPIO03 Serial TXD and Optional sensor 0, - GPIO_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) + GPI8_REL2, // GPIO05 Relay 2 (0 = Off, 1 = On) // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_USER, // GPIO09 Button 1 on header (0 = On, 1 = Off) - GPIO_KEY1, // GPIO10 Button on casing + GPI8_USER, // GPIO09 Button 1 on header (0 = On, 1 = Off) + GPI8_KEY1, // GPIO10 Button on casing // GPIO11 (SD_CMD Flash) - GPIO_REL1, // GPIO12 Relay 1 (0 = Off, 1 = On) - GPIO_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status + GPI8_REL1, // GPIO12 Relay 1 (0 = Off, 1 = On) + GPI8_LED1_INV, // GPIO13 Blue Led (0 = On, 1 = Off) - Link and Power status 0, 0, 0, 0 }, { // SONOFF_IFAN03 - Sonoff iFan03 (ESP8285) - GPIO_KEY1, // GPIO00 WIFI_KEY0 Button 1 - GPIO_TXD, // GPIO01 ESP_TXD Serial RXD connection to P0.5 of RF microcontroller + GPI8_KEY1, // GPIO00 WIFI_KEY0 Button 1 + GPI8_TXD, // GPIO01 ESP_TXD Serial RXD connection to P0.5 of RF microcontroller 0, // GPIO02 ESP_LOG - GPIO_RXD, // GPIO03 ESP_RXD Serial TXD connection to P0.4 of RF microcontroller + GPI8_RXD, // GPIO03 ESP_RXD Serial TXD connection to P0.4 of RF microcontroller 0, // GPIO04 DEBUG_RX 0, // GPIO05 DEBUG_TX // GPIO06 (SD_CLK Flash) // GPIO07 (SD_DATA0 Flash QIO/DIO/DOUT) // GPIO08 (SD_DATA1 Flash QIO/DIO/DOUT) - GPIO_REL1_INV, // GPIO09 WIFI_O0 Relay 1 (0 = Off, 1 = On) controlling the light - GPIO_BUZZER_INV, // GPIO10 WIFI_O4 Buzzer (0 = Off, 1 = On) + GPI8_REL1_INV, // GPIO09 WIFI_O0 Relay 1 (0 = Off, 1 = On) controlling the light + GPI8_BUZZER_INV, // GPIO10 WIFI_O4 Buzzer (0 = Off, 1 = On) // GPIO11 (SD_CMD Flash) - GPIO_REL3, // GPIO12 WIFI_O2 Relay 3 (0 = Off, 1 = On) controlling the fan - GPIO_LED1_INV, // GPIO13 WIFI_CHK Blue Led on PCA (0 = On, 1 = Off) - Link and Power status - GPIO_REL2, // GPIO14 WIFI_O1 Relay 2 (0 = Off, 1 = On) controlling the fan - GPIO_REL4, // GPIO15 WIFI_O3 Relay 4 (0 = Off, 1 = On) controlling the fan + GPI8_REL3, // GPIO12 WIFI_O2 Relay 3 (0 = Off, 1 = On) controlling the fan + GPI8_LED1_INV, // GPIO13 WIFI_CHK Blue Led on PCA (0 = On, 1 = Off) - Link and Power status + GPI8_REL2, // GPIO14 WIFI_O1 Relay 2 (0 = Off, 1 = On) controlling the fan + GPI8_REL4, // GPIO15 WIFI_O3 Relay 4 (0 = Off, 1 = On) controlling the fan 0, 0 } }; -#endif // ESP8266 +#else // ESP32 + +/********************************************************************************************/ +// Supported hardware modules +enum SupportedModules { WEMOS, ESP32_CAM_AITHINKER, MAXMODULE }; + +#define USER_MODULE 255 + +const char kModuleNames[] PROGMEM = "ESP32-DevKit|ESP32 Cam AiThinker"; + +// Default module settings +const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { WEMOS, ESP32_CAM_AITHINKER }; + +const mytmplt kModules PROGMEM = +{ // WEMOS - Espressif ESP32-DevKitC - Any ESP32 device like WeMos and NodeMCU hardware (ESP32) + AGPIO(GPIO_USER), // 0 (I)O GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK + AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2 + AGPIO(GPIO_USER), // 2 IO GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0 + AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 + AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER + AGPIO(GPIO_USER), // 5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK + // 6 IO GPIO6, Flash CLK + // 7 IO GPIO7, Flash D0 + // 8 IO GPIO8, Flash D1 + AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD + AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD + // 11 IO GPIO11, Flash CMD + AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) + AGPIO(GPIO_USER), // 13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER + AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 + AGPIO(GPIO_USER), // 15 (I)O GPIO15, ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13, HS2_CMD, SD_CMD, EMAC_RXD3 (If driven Low, silences boot messages from normal boot. Has internal pull-up, so unconnected = High = normal output.) + AGPIO(GPIO_USER), // 16 IO GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT + AGPIO(GPIO_USER), // 17 IO GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 + AGPIO(GPIO_USER), // 18 IO GPIO18, VSPICLK, HS1_DATA7 + AGPIO(GPIO_USER), // 19 IO GPIO19, VSPIQ, U0CTS, EMAC_TXD0 + 0, // 20 + AGPIO(GPIO_USER), // 21 IO GPIO21, VSPIHD, EMAC_TX_EN + AGPIO(GPIO_USER), // 22 IO LED GPIO22, VSPIWP, U0RTS, EMAC_TXD1 + AGPIO(GPIO_USER), // 23 IO GPIO23, VSPID, HS1_STROBE + 0, // 24 + AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 + AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 + AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV + 0, // 28 + 0, // 29 + 0, // 30 + 0, // 31 + AGPIO(GPIO_USER), // 32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 + AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 + AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 + AGPIO(GPIO_USER), // 35 I NO PULLUP GPIO35, ADC1_CH7, RTC_GPIO5 + AGPIO(GPIO_USER), // 36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0 + 0, // 37 NO PULLUP + 0, // 38 NO PULLUP + AGPIO(GPIO_USER), // 39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3 + 0 // Flag +}; + +/*********************************************************************************************\ + Known templates + +{"NAME":"AITHINKER CAM","GPIO":[4992,1,1,1,1,5088,1,1,1,1,1,1,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,1,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":1} +{"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,5536,1,1,1,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} +{"NAME":"wESP32","GPIO":[1,1,1,1,1,1,0,0,0,1,1,1,5568,5600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} +{"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,5664,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1376,1,1,0,0,0,0,1,5632,1,1,1,0,0,1],"FLAG":0,"BASE":1} + +\*********************************************************************************************/ -#ifdef ESP32 -#include "tasmota_template_ESP32.h" #endif // ESP32 #endif // _TASMOTA_TEMPLATE_H_ diff --git a/tasmota/tasmota_template_ESP32.h b/tasmota/tasmota_template_ESP32.h deleted file mode 100644 index f0f59b488..000000000 --- a/tasmota/tasmota_template_ESP32.h +++ /dev/null @@ -1,729 +0,0 @@ -/* - tasmota_template_ESP32.h - ESP32 template settings for Tasmota - - Copyright (C) 2020 Theo Arends - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef _TASMOTA_TEMPLATE_ESP32_H_ -#define _TASMOTA_TEMPLATE_ESP32_H_ - -#ifdef ESP32 - -// Hardware has no ESP32 -#undef USE_TUYA_DIMMER -#undef USE_PWM_DIMMER -#undef USE_EXS_DIMMER -#undef USE_ARMTRONIX_DIMMERS -#undef USE_SONOFF_RF -#undef USE_SONOFF_SC -#undef USE_SONOFF_IFAN -#undef USE_SONOFF_L1 -#undef USE_SONOFF_D1 -#undef USE_RF_FLASH - -// Not ported (yet) -#undef USE_DISCOVERY -#undef USE_MY92X1 -#undef USE_TUYA_MCU -#undef USE_PS_16_DZ - -enum UserSelectablePins { - GPIO_NONE, // Not used - GPIO_KEY1, GPIO_KEY1_NP, GPIO_KEY1_INV, GPIO_KEY1_INV_NP, // 4 x Button - GPIO_SWT1, GPIO_SWT1_NP, // 8 x User connected external switches - GPIO_REL1, GPIO_REL1_INV, // 8 x Relays - GPIO_LED1, GPIO_LED1_INV, // 4 x Leds - GPIO_CNTR1, GPIO_CNTR1_NP, // 4 x Counter - GPIO_PWM1, GPIO_PWM1_INV, // 5 x PWM - GPIO_BUZZER, GPIO_BUZZER_INV, // Buzzer - GPIO_LEDLNK, GPIO_LEDLNK_INV, // Link led - GPIO_I2C_SCL, GPIO_I2C_SDA, // Software I2C - GPIO_SPI_MISO, GPIO_SPI_MOSI, GPIO_SPI_CLK, GPIO_SPI_CS, GPIO_SPI_DC, // Hardware SPI - GPIO_SSPI_MISO, GPIO_SSPI_MOSI, GPIO_SSPI_SCLK, GPIO_SSPI_CS, GPIO_SSPI_DC, // Software SPI - GPIO_BACKLIGHT, // Display backlight control - GPIO_OLED_RESET, // OLED Display Reset - GPIO_IRSEND, GPIO_IRRECV, // IR interface - GPIO_RFSEND, GPIO_RFRECV, // RF interface - GPIO_DHT11, GPIO_DHT22, GPIO_SI7021, GPIO_DHT11_OUT, // DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 - GPIO_DSB, GPIO_DSB_OUT, // DS18B20 or DS18S20 - GPIO_WS2812, // WS2812 Led string - GPIO_MHZ_TXD, GPIO_MHZ_RXD, // MH-Z19 Serial interface - GPIO_PZEM0XX_TX, GPIO_PZEM004_RX, GPIO_PZEM016_RX, GPIO_PZEM017_RX, // PZEM Serial Modbus interface - GPIO_SAIR_TX, GPIO_SAIR_RX, // SenseAir Serial interface - GPIO_PMS5003_TX, GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface - GPIO_SDS0X1_TX, GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface - GPIO_SBR_TX, GPIO_SBR_RX, // Serial Bridge Serial interface - GPIO_SR04_TRIG, GPIO_SR04_ECHO, // SR04 interface - GPIO_SDM120_TX, GPIO_SDM120_RX, // SDM120 Serial interface - GPIO_SDM630_TX, GPIO_SDM630_RX, // SDM630 Serial interface - GPIO_TM16CLK, GPIO_TM16DIO, GPIO_TM16STB, // TM1638 interface - GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player - GPIO_HX711_SCK, GPIO_HX711_DAT, // HX711 Load Cell interface - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin - GPIO_TUYA_TX, GPIO_TUYA_RX, // Tuya Serial interface - GPIO_MGC3130_XFER, GPIO_MGC3130_RESET, // MGC3130 interface - GPIO_RF_SENSOR, // Rf receiver with sensor decoding - GPIO_AZ_TXD, GPIO_AZ_RXD, // AZ-Instrument 7798 Serial interface - GPIO_MAX31855CS, GPIO_MAX31855CLK, GPIO_MAX31855DO, // MAX31855 Serial interface - GPIO_NRG_SEL, GPIO_NRG_SEL_INV, GPIO_NRG_CF1, GPIO_HLW_CF, GPIO_HJL_CF, // HLW8012/HJL-01/BL0937 energy monitoring - GPIO_MCP39F5_TX, GPIO_MCP39F5_RX, GPIO_MCP39F5_RST, // MCP39F501 Energy monitoring (Shelly2) - GPIO_PN532_TXD, GPIO_PN532_RXD, // PN532 NFC Serial interface - GPIO_SM16716_CLK, GPIO_SM16716_DAT, GPIO_SM16716_SEL, // SM16716 SELECT - GPIO_DI, GPIO_DCKI, // my92x1 PWM controller - GPIO_CSE7766_TX, GPIO_CSE7766_RX, // CSE7766 Serial interface (S31 and Pow R2) - GPIO_ARIRFRCV, GPIO_ARIRFSEL, // Arilux RF Receive input - GPIO_TXD, GPIO_RXD, // Serial interface - GPIO_ROT1A, GPIO_ROT1B, // Rotary switch - GPIO_ADC_JOY, // Analog joystick - GPIO_SSPI_MAX31865_CS1, // MAX31865 Chip Select - GPIO_HRE_CLOCK, GPIO_HRE_DATA, // HR-E Water Meter - GPIO_ADE7953_IRQ, // ADE7953 IRQ - GPIO_SOLAXX1_TX, GPIO_SOLAXX1_RX, // Solax Inverter Serial interface - GPIO_ZIGBEE_TX, GPIO_ZIGBEE_RX, // Zigbee Serial interface - GPIO_RDM6300_RX, // RDM6300 RX - GPIO_IBEACON_TX, GPIO_IBEACON_RX, // HM17 IBEACON Serial interface - GPIO_A4988_DIR, GPIO_A4988_STP, GPIO_A4988_ENA, // A4988 interface - GPIO_A4988_MS1, GPIO_A4988_MS2, GPIO_A4988_MS3, // A4988 microstep - GPIO_DDS2382_TX, GPIO_DDS2382_RX, // DDS2382 Serial interface - GPIO_DDSU666_TX, GPIO_DDSU666_RX, // DDSU666 Serial interface - GPIO_SM2135_CLK, GPIO_SM2135_DAT, // SM2135 PWM controller - GPIO_DEEPSLEEP, // Kill switch for deepsleep - GPIO_EXS_ENABLE, // EXS MCU Enable - GPIO_TASMOTACLIENT_TXD, GPIO_TASMOTACLIENT_RXD, // Client Serial interface - GPIO_TASMOTACLIENT_RST, GPIO_TASMOTACLIENT_RST_INV, // Client Reset - GPIO_HPMA_RX, GPIO_HPMA_TX, // Honeywell HPMA115S0 Serial interface - GPIO_GPS_RX, GPIO_GPS_TX, // GPS Serial interface - GPIO_HM10_RX, GPIO_HM10_TX, // HM10-BLE-Mijia-bridge Serial interface - GPIO_LE01MR_RX, GPIO_LE01MR_TX, // F&F LE-01MR energy meter - GPIO_CC1101_GDO0, GPIO_CC1101_GDO2, // CC1101 Serial interface - GPIO_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor - GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX - GPIO_AS3935, // Franklin Lightning Sensor - GPIO_ADC_INPUT, // Analog input - GPIO_ADC_TEMP, // Analog Thermistor - GPIO_ADC_LIGHT, // Analog Light sensor - GPIO_ADC_BUTTON, GPIO_ADC_BUTTON_INV, // Analog Button - GPIO_ADC_RANGE, // Analog Range - GPIO_ADC_CT_POWER, // ANalog Current - GPIO_WEBCAM_PWDN, GPIO_WEBCAM_RESET, GPIO_WEBCAM_XCLK, // Webcam - GPIO_WEBCAM_SIOD, GPIO_WEBCAM_SIOC, // Webcam I2C - GPIO_WEBCAM_DATA, - GPIO_WEBCAM_VSYNC, GPIO_WEBCAM_HREF, GPIO_WEBCAM_PCLK, - GPIO_WEBCAM_PSCLK, - GPIO_WEBCAM_HSD, - GPIO_WEBCAM_PSRCS, - GPIO_BOILER_OT_RX, GPIO_BOILER_OT_TX, // OpenTherm Boiler TX pin - GPIO_WINDMETER_SPEED, // WindMeter speed counter pin - GPIO_KEY1_TC, // Touch pin as button - GPIO_BL0940_RX, // BL0940 serial interface - GPIO_TCP_TX, GPIO_TCP_RX, // TCP to serial bridge - GPIO_ETH_PHY_POWER, GPIO_ETH_PHY_MDC, GPIO_ETH_PHY_MDIO, // Ethernet - GPIO_TELEINFO_RX, // Teleinfo telemetry data receive pin - GPIO_TELEINFO_ENABLE, // Teleinfo Enable Receive Pin - GPIO_LMT01, // LMT01 input counting pin - GPIO_IEM3000_TX, GPIO_IEM3000_RX, // IEM3000 Serial interface - GPIO_ZIGBEE_RST, // Zigbee reset - GPIO_DYP_RX, - GPIO_SENSOR_END }; - -enum ProgramSelectablePins { -// GPIO_FIX_START = 254, - GPIO_FIX_START = 2046, - GPIO_USER, // User configurable needs to be 2047 - GPIO_MAX }; - -// Text in webpage Module Parameters and commands GPIOS and GPIO -const char kSensorNames[] PROGMEM = - D_SENSOR_NONE "|" - D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "_n|" D_SENSOR_BUTTON "_i|" D_SENSOR_BUTTON "_in|" - D_SENSOR_SWITCH "|" D_SENSOR_SWITCH "_n|" - D_SENSOR_RELAY "|" D_SENSOR_RELAY "_i|" - D_SENSOR_LED "|" D_SENSOR_LED "_i|" - D_SENSOR_COUNTER "|" D_SENSOR_COUNTER "_n|" - D_SENSOR_PWM "|" D_SENSOR_PWM "_i|" - D_SENSOR_BUZZER "|" D_SENSOR_BUZZER "_i|" - D_SENSOR_LED_LINK "|" D_SENSOR_LED_LINK "_i|" - D_SENSOR_I2C_SCL "|" D_SENSOR_I2C_SDA "|" - D_SENSOR_SPI_MISO "|" D_SENSOR_SPI_MOSI "|" D_SENSOR_SPI_CLK "|" D_SENSOR_SPI_CS "|" D_SENSOR_SPI_DC "|" - D_SENSOR_SSPI_MISO "|" D_SENSOR_SSPI_MOSI "|" D_SENSOR_SSPI_SCLK "|" D_SENSOR_SSPI_CS "|" D_SENSOR_SSPI_DC "|" - D_SENSOR_BACKLIGHT "|" D_SENSOR_OLED_RESET "|" - D_SENSOR_IRSEND "|" D_SENSOR_IRRECV "|" - D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" - D_SENSOR_DHT11 "|" D_SENSOR_AM2301 "|" D_SENSOR_SI7021 "|" D_SENSOR_DHT11 "_o|" - D_SENSOR_DS18X20 "|" D_SENSOR_DS18X20 "_o|" - D_SENSOR_WS2812 "|" - D_SENSOR_MHZ_TX "|" D_SENSOR_MHZ_RX "|" - D_SENSOR_PZEM0XX_TX "|" D_SENSOR_PZEM004_RX "|" D_SENSOR_PZEM016_RX "|" D_SENSOR_PZEM017_RX "|" - D_SENSOR_SAIR_TX "|" D_SENSOR_SAIR_RX "|" - D_SENSOR_PMS5003_TX "|" D_SENSOR_PMS5003_RX "|" - D_SENSOR_SDS0X1_TX "|" D_SENSOR_SDS0X1_RX "|" - D_SENSOR_SBR_TX "|" D_SENSOR_SBR_RX "|" - D_SENSOR_SR04_TRIG "|" D_SENSOR_SR04_ECHO "|" - D_SENSOR_SDM120_TX "|" D_SENSOR_SDM120_RX "|" - D_SENSOR_SDM630_TX "|" D_SENSOR_SDM630_RX "|" - D_SENSOR_TM1638_CLK "|" D_SENSOR_TM1638_DIO "|" D_SENSOR_TM1638_STB "|" - D_SENSOR_DFR562 "|" - D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" - D_SENSOR_TX2X_TX "|" - D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" - D_SENSOR_MGC3130_XFER "|" D_SENSOR_MGC3130_RESET "|" - D_SENSOR_RF_SENSOR "|" - D_SENSOR_AZ_TX "|" D_SENSOR_AZ_RX "|" - D_SENSOR_MAX31855_CS "|" D_SENSOR_MAX31855_CLK "|" D_SENSOR_MAX31855_DO "|" - D_SENSOR_NRG_SEL "|" D_SENSOR_NRG_SEL "_i|" D_SENSOR_NRG_CF1 "|" D_SENSOR_HLW_CF "|" D_SENSOR_HJL_CF "|" - D_SENSOR_MCP39F5_TX "|" D_SENSOR_MCP39F5_RX "|" D_SENSOR_MCP39F5_RST "|" - D_SENSOR_PN532_TX "|" D_SENSOR_PN532_RX "|" - D_SENSOR_SM16716_CLK "|" D_SENSOR_SM16716_DAT "|" D_SENSOR_SM16716_POWER "|" - D_SENSOR_MY92X1_DI "|" D_SENSOR_MY92X1_DCKI "|" - D_SENSOR_CSE7766_TX "|" D_SENSOR_CSE7766_RX "|" - D_SENSOR_ARIRFRCV "|" D_SENSOR_ARIRFSEL "|" - D_SENSOR_TXD "|" D_SENSOR_RXD "|" - D_SENSOR_ROTARY "_a|" D_SENSOR_ROTARY "_b|" - D_SENSOR_ADC_JOYSTICK "|" - D_SENSOR_MAX31865_CS "|" - D_SENSOR_HRE_CLOCK "|" D_SENSOR_HRE_DATA "|" - D_SENSOR_ADE7953_IRQ "|" - D_SENSOR_SOLAXX1_TX "|" D_SENSOR_SOLAXX1_RX "|" - D_SENSOR_ZIGBEE_TXD "|" D_SENSOR_ZIGBEE_RXD "|" - D_SENSOR_RDM6300_RX "|" - D_SENSOR_IBEACON_TX "|" D_SENSOR_IBEACON_RX "|" - D_SENSOR_A4988_DIR "|" D_SENSOR_A4988_STP "|" D_SENSOR_A4988_ENA "|" D_SENSOR_A4988_MS1 "|" D_SENSOR_A4988_MS2 "|" D_SENSOR_A4988_MS3 "|" - D_SENSOR_DDS2382_TX "|" D_SENSOR_DDS2382_RX "|" - D_SENSOR_DDSU666_TX "|" D_SENSOR_DDSU666_RX "|" - D_SENSOR_SM2135_CLK "|" D_SENSOR_SM2135_DAT "|" - D_SENSOR_DEEPSLEEP "|" D_SENSOR_EXS_ENABLE "|" - D_SENSOR_CLIENT_TX "|" D_SENSOR_CLIENT_RX "|" D_SENSOR_CLIENT_RESET "|" D_SENSOR_CLIENT_RESET "_i|" - D_SENSOR_HPMA_RX "|" D_SENSOR_HPMA_TX "|" - D_SENSOR_GPS_RX "|" D_SENSOR_GPS_TX "|" - D_SENSOR_HM10_RX "|" D_SENSOR_HM10_TX "|" - D_SENSOR_LE01MR_RX "|" D_SENSOR_LE01MR_TX "|" - D_SENSOR_CC1101_GDO0 "|" D_SENSOR_CC1101_GDO2 "|" - D_SENSOR_HRXL_RX "|" - D_SENSOR_ELECTRIQ_MOODL "|" - D_SENSOR_AS3935 "|" - D_SENSOR_ADC_INPUT "|" - D_SENSOR_ADC_TEMP "|" - D_SENSOR_ADC_LIGHT "|" - D_SENSOR_ADC_BUTTON "|" D_SENSOR_ADC_BUTTON "_i|" - D_SENSOR_ADC_RANGE "|" - D_SENSOR_ADC_CT_POWER "|" - D_GPIO_WEBCAM_PWDN "|" D_GPIO_WEBCAM_RESET "|" D_GPIO_WEBCAM_XCLK "|" - D_GPIO_WEBCAM_SIOD "|" D_GPIO_WEBCAM_SIOC "|" - D_GPIO_WEBCAM_DATA "|" - D_GPIO_WEBCAM_VSYNC "|" D_GPIO_WEBCAM_HREF "|" D_GPIO_WEBCAM_PCLK "|" - D_GPIO_WEBCAM_PSCLK "|" - D_GPIO_WEBCAM_HSD "|" - D_GPIO_WEBCAM_PSRCS "|" - D_SENSOR_BOILER_OT_RX "|" D_SENSOR_BOILER_OT_TX "|" - D_SENSOR_WINDMETER_SPEED "|" D_SENSOR_BUTTON "_tc|" - D_SENSOR_BL0940_RX "|" - D_SENSOR_TCP_TXD "|" D_SENSOR_TCP_RXD "|" - D_SENSOR_ETH_PHY_POWER "|" D_SENSOR_ETH_PHY_MDC "|" D_SENSOR_ETH_PHY_MDIO "|" - D_SENSOR_TELEINFO_RX "|" D_SENSOR_TELEINFO_ENABLE "|" - D_SENSOR_LMT01_PULSE "|" - D_SENSOR_IEM3000_TX "|" D_SENSOR_IEM3000_RX "|" - D_SENSOR_ZIGBEE_RST "|" - D_SENSOR_DYP_RX - ; - -const char kSensorNamesFixed[] PROGMEM = - D_SENSOR_USER; - -#define MAX_MAX31865_CS 6 -#define MAX_WEBCAM_DATA 8 -#define MAX_WEBCAM_HSD 3 - -const uint16_t kGpioNiceList[] PROGMEM = { - GPIO_NONE, // Not used - AGPIO(GPIO_KEY1) + MAX_KEYS, // Buttons - AGPIO(GPIO_KEY1_NP) + MAX_KEYS, - AGPIO(GPIO_KEY1_INV) + MAX_KEYS, - AGPIO(GPIO_KEY1_INV_NP) + MAX_KEYS, - AGPIO(GPIO_KEY1_TC) + MAX_KEYS, // Touch button - AGPIO(GPIO_SWT1) + MAX_SWITCHES, // User connected external switches - AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, -#ifdef ROTARY_V1 - AGPIO(GPIO_ROT1A) + MAX_ROTARIES, // Rotary A Pin - AGPIO(GPIO_ROT1B) + MAX_ROTARIES, // Rotary B Pin -#endif - AGPIO(GPIO_REL1) + MAX_RELAYS, // Relays - AGPIO(GPIO_REL1_INV) + MAX_RELAYS, - AGPIO(GPIO_LED1) + MAX_LEDS, // Leds - AGPIO(GPIO_LED1_INV) + MAX_LEDS, -#ifdef USE_COUNTER - AGPIO(GPIO_CNTR1) + MAX_COUNTERS, // Counters - AGPIO(GPIO_CNTR1_NP) + MAX_COUNTERS, -#endif - AGPIO(GPIO_PWM1) + MAX_PWMS, // RGB Red or C Cold White - AGPIO(GPIO_PWM1_INV) + MAX_PWMS, -#ifdef USE_BUZZER - AGPIO(GPIO_BUZZER), // Buzzer - AGPIO(GPIO_BUZZER_INV), // Inverted buzzer -#endif - AGPIO(GPIO_LEDLNK), // Link led - AGPIO(GPIO_LEDLNK_INV), // Inverted link led -#ifdef USE_I2C - AGPIO(GPIO_I2C_SCL), // I2C SCL - AGPIO(GPIO_I2C_SDA), // I2C SDA -#endif -#ifdef USE_SPI - AGPIO(GPIO_SPI_MISO), // SPI MISO - AGPIO(GPIO_SPI_MOSI), // SPI MOSI - AGPIO(GPIO_SPI_CLK), // SPI Clk - AGPIO(GPIO_SPI_CS), // SPI Chip Select - AGPIO(GPIO_SPI_DC), // SPI Data Direction -#endif - AGPIO(GPIO_SSPI_MISO), // Software SPI Master Input Client Output - AGPIO(GPIO_SSPI_MOSI), // Software SPI Master Output Client Input - AGPIO(GPIO_SSPI_SCLK), // Software SPI Serial Clock - AGPIO(GPIO_SSPI_CS), // Software SPI Chip Select - AGPIO(GPIO_SSPI_DC), // Software SPI Data or Command -#ifdef USE_DISPLAY - AGPIO(GPIO_BACKLIGHT), // Display backlight control - AGPIO(GPIO_OLED_RESET), // OLED Display Reset -#endif - - AGPIO(GPIO_TXD), // Serial interface - AGPIO(GPIO_RXD), // Serial interface - -#ifdef USE_DHT - AGPIO(GPIO_DHT11), // DHT11 - AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321 - AGPIO(GPIO_SI7021), // iTead SI7021 - AGPIO(GPIO_DHT11_OUT), // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321 -#endif -#ifdef USE_DS18x20 - AGPIO(GPIO_DSB), // Single wire DS18B20 or DS18S20 - AGPIO(GPIO_DSB_OUT), // Pseudo Single wire DS18B20 or DS18S20 -#endif -#ifdef USE_LMT01 - AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO -#endif - -// Light -#ifdef USE_LIGHT -#ifdef USE_WS2812 - AGPIO(GPIO_WS2812), // WS2812 Led string -#endif -#ifdef USE_ARILUX_RF - AGPIO(GPIO_ARIRFRCV), // AriLux RF Receive input - AGPIO(GPIO_ARIRFSEL), // Arilux RF Receive input selected -#endif -#ifdef USE_MY92X1 - AGPIO(GPIO_DI), // my92x1 PWM input - AGPIO(GPIO_DCKI), // my92x1 CLK input -#endif // USE_MY92X1 -#ifdef USE_SM16716 - AGPIO(GPIO_SM16716_CLK), // SM16716 CLOCK - AGPIO(GPIO_SM16716_DAT), // SM16716 DATA - AGPIO(GPIO_SM16716_SEL), // SM16716 SELECT -#endif // USE_SM16716 -#ifdef USE_SM2135 - AGPIO(GPIO_SM2135_CLK), // SM2135 CLOCK - AGPIO(GPIO_SM2135_DAT), // SM2135 DATA -#endif // USE_SM2135 -#ifdef USE_TUYA_MCU - AGPIO(GPIO_TUYA_TX), // Tuya Serial interface - AGPIO(GPIO_TUYA_RX), // Tuya Serial interface -#endif -#ifdef USE_EXS_DIMMER - AGPIO(GPIO_EXS_ENABLE), // EXS MCU Enable -#endif -#ifdef USE_ELECTRIQ_MOODL - AGPIO(GPIO_ELECTRIQ_MOODL_TX), -#endif -#endif // USE_LIGHT - -#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) - AGPIO(GPIO_IRSEND), // IR remote -#if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) - AGPIO(GPIO_IRRECV), // IR receiver -#endif -#endif - -#ifdef USE_RC_SWITCH - AGPIO(GPIO_RFSEND), // RF transmitter - AGPIO(GPIO_RFRECV), // RF receiver -#endif -#ifdef USE_RF_SENSOR - AGPIO(GPIO_RF_SENSOR), // Rf receiver with sensor decoding -#endif -#ifdef USE_SR04 - AGPIO(GPIO_SR04_TRIG), // SR04 Tri/TXgger pin - AGPIO(GPIO_SR04_ECHO), // SR04 Ech/RXo pin -#endif -#ifdef USE_TM1638 - AGPIO(GPIO_TM16CLK), // TM1638 Clock - AGPIO(GPIO_TM16DIO), // TM1638 Data I/O - AGPIO(GPIO_TM16STB), // TM1638 Strobe -#endif -#ifdef USE_HX711 - AGPIO(GPIO_HX711_SCK), // HX711 Load Cell clock - AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data -#endif - -// Energy sensors -#ifdef USE_ENERGY_SENSOR -#ifdef USE_HLW8012 - AGPIO(GPIO_NRG_SEL), // HLW8012/HLJ-01 Sel output (1 = Voltage) - AGPIO(GPIO_NRG_SEL_INV), // HLW8012/HLJ-01 Sel output (0 = Voltage) - AGPIO(GPIO_NRG_CF1), // HLW8012/HLJ-01 CF1 voltage / current - AGPIO(GPIO_HLW_CF), // HLW8012 CF power - AGPIO(GPIO_HJL_CF), // HJL-01/BL0937 CF power -#endif -#if defined(USE_I2C) && defined(USE_ADE7953) - AGPIO(GPIO_ADE7953_IRQ), // ADE7953 IRQ -#endif -#ifdef USE_CSE7766 - AGPIO(GPIO_CSE7766_TX), // CSE7766 Serial interface (S31 and Pow R2) - AGPIO(GPIO_CSE7766_RX), // CSE7766 Serial interface (S31 and Pow R2) -#endif -#ifdef USE_MCP39F501 - AGPIO(GPIO_MCP39F5_TX), // MCP39F501 Serial interface (Shelly2) - AGPIO(GPIO_MCP39F5_RX), // MCP39F501 Serial interface (Shelly2) - AGPIO(GPIO_MCP39F5_RST), // MCP39F501 Reset (Shelly2) -#endif -#if defined(USE_PZEM004T) || defined(USE_PZEM_AC) || defined(USE_PZEM_DC) - AGPIO(GPIO_PZEM0XX_TX), // PZEM0XX Serial interface -#endif -#ifdef USE_PZEM004T - AGPIO(GPIO_PZEM004_RX), // PZEM004T Serial interface -#endif -#ifdef USE_PZEM_AC - AGPIO(GPIO_PZEM016_RX), // PZEM-014,016 Serial Modbus interface -#endif -#ifdef USE_PZEM_DC - AGPIO(GPIO_PZEM017_RX), // PZEM-003,017 Serial Modbus interface -#endif -#ifdef USE_SDM120 - AGPIO(GPIO_SDM120_TX), // SDM120 Serial interface - AGPIO(GPIO_SDM120_RX), // SDM120 Serial interface -#endif -#ifdef USE_SDM630 - AGPIO(GPIO_SDM630_TX), // SDM630 Serial interface - AGPIO(GPIO_SDM630_RX), // SDM630 Serial interface -#endif -#ifdef USE_DDS2382 - AGPIO(GPIO_DDS2382_TX), // DDS2382 Serial interface - AGPIO(GPIO_DDS2382_RX), // DDS2382 Serial interface -#endif -#ifdef USE_DDSU666 - AGPIO(GPIO_DDSU666_TX), // DDSU666 Serial interface - AGPIO(GPIO_DDSU666_RX), // DDSU666 Serial interface -#endif // USE_DDSU666 -#ifdef USE_SOLAX_X1 - AGPIO(GPIO_SOLAXX1_TX), // Solax Inverter tx pin - AGPIO(GPIO_SOLAXX1_RX), // Solax Inverter rx pin -#endif // USE_SOLAX_X1 -#ifdef USE_LE01MR - AGPIO(GPIO_LE01MR_TX), // F7F LE-01MR energy meter tx pin - AGPIO(GPIO_LE01MR_RX), // F7F LE-01MR energy meter rx pin -#endif // IFDEF:USE_LE01MR -#ifdef USE_BL0940 - AGPIO(GPIO_BL0940_RX), // BL0940 Serial interface -#endif -#ifdef USE_IEM3000 - AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface - AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface -#endif -#endif // USE_ENERGY_SENSOR - -// Serial -#ifdef USE_SERIAL_BRIDGE - AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface - AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface -#endif -#ifdef USE_TCP_BRIDGE - AGPIO(GPIO_TCP_TX), // TCP Serial bridge - AGPIO(GPIO_TCP_RX), // TCP Serial bridge -#endif -#ifdef USE_ZIGBEE - AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface - AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface - AGPIO(GPIO_ZIGBEE_RST), // Zigbee reset -#endif -#ifdef USE_MHZ19 - AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface - AGPIO(GPIO_MHZ_RXD), // MH-Z19 Serial interface -#endif -#ifdef USE_SENSEAIR - AGPIO(GPIO_SAIR_TX), // SenseAir Serial interface - AGPIO(GPIO_SAIR_RX), // SenseAir Serial interface -#endif -#ifdef USE_NOVA_SDS - AGPIO(GPIO_SDS0X1_TX), // Nova Fitness SDS011 Serial interface - AGPIO(GPIO_SDS0X1_RX), // Nova Fitness SDS011 Serial interface -#endif -#ifdef USE_HPMA - AGPIO(GPIO_HPMA_TX), // Honeywell HPMA115S0 Serial interface - AGPIO(GPIO_HPMA_RX), // Honeywell HPMA115S0 Serial interface -#endif -#ifdef USE_PMS5003 - AGPIO(GPIO_PMS5003_TX), // Plantower PMS5003 Serial interface - AGPIO(GPIO_PMS5003_RX), // Plantower PMS5003 Serial interface -#endif -#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) - AGPIO(GPIO_TX2X_TXD_BLACK), // TX20/TX23 Transmission Pin -#endif -#ifdef USE_WINDMETER - AGPIO(GPIO_WINDMETER_SPEED), -#endif -#ifdef USE_MP3_PLAYER - AGPIO(GPIO_MP3_DFR562), // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface -#endif -#ifdef USE_AZ7798 - AGPIO(GPIO_AZ_TXD), // AZ-Instrument 7798 CO2 datalogger Serial interface - AGPIO(GPIO_AZ_RXD), // AZ-Instrument 7798 CO2 datalogger Serial interface -#endif -#ifdef USE_PN532_HSU - AGPIO(GPIO_PN532_TXD), // PN532 HSU Tx - AGPIO(GPIO_PN532_RXD), // PN532 HSU Rx -#endif -#ifdef USE_TASMOTA_CLIENT - AGPIO(GPIO_TASMOTACLIENT_TXD), // Tasmota Client TX - AGPIO(GPIO_TASMOTACLIENT_RXD), // Tasmota Client RX - AGPIO(GPIO_TASMOTACLIENT_RST), // Tasmota Client Reset - AGPIO(GPIO_TASMOTACLIENT_RST_INV), // Tasmota Client Reset Inverted -#endif -#ifdef USE_RDM6300 - AGPIO(GPIO_RDM6300_RX), -#endif -#ifdef USE_IBEACON - AGPIO(GPIO_IBEACON_TX), - AGPIO(GPIO_IBEACON_RX), -#endif -#ifdef USE_GPS - AGPIO(GPIO_GPS_TX), // GPS serial interface - AGPIO(GPIO_GPS_RX), // GPS serial interface -#endif -#ifdef USE_HM10 - AGPIO(GPIO_HM10_TX), // GPS serial interface - AGPIO(GPIO_HM10_RX), // GPS serial interface -#endif -#ifdef USE_OPENTHERM - AGPIO(GPIO_BOILER_OT_TX), - AGPIO(GPIO_BOILER_OT_RX), -#endif - -#ifdef USE_MGC3130 - AGPIO(GPIO_MGC3130_XFER), - AGPIO(GPIO_MGC3130_RESET), -#endif -#ifdef USE_MAX31855 - AGPIO(GPIO_MAX31855CS), // MAX31855 Serial interface - AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface - AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface -#endif -#ifdef USE_MAX31855 - AGPIO(GPIO_SSPI_MAX31865_CS1) + MAX_MAX31865_CS, -#endif -#ifdef USE_HRE - AGPIO(GPIO_HRE_CLOCK), - AGPIO(GPIO_HRE_DATA), -#endif -#ifdef USE_A4988_STEPPER - AGPIO(GPIO_A4988_DIR), // A4988 direction pin - AGPIO(GPIO_A4988_STP), // A4988 step pin - // folowing are not mandatory - AGPIO(GPIO_A4988_ENA), // A4988 enabled pin - AGPIO(GPIO_A4988_MS1), // A4988 microstep pin1 - AGPIO(GPIO_A4988_MS2), // A4988 microstep pin2 - AGPIO(GPIO_A4988_MS3), // A4988 microstep pin3 -#endif -#ifdef USE_DEEPSLEEP - AGPIO(GPIO_DEEPSLEEP), -#endif -#ifdef USE_KEELOQ - AGPIO(GPIO_CC1101_GDO0), // CC1101 pin for RX - AGPIO(GPIO_CC1101_GDO2), // CC1101 pin for RX -#endif -#ifdef USE_HRXL - AGPIO(GPIO_HRXL_RX), -#endif -#ifdef USE_DYP - AGPIO(GPIO_DYP_RX), -#endif -#ifdef USE_AS3935 - AGPIO(GPIO_AS3935), // AS3935 IRQ Pin -#endif -#ifdef USE_TELEINFO - AGPIO(GPIO_TELEINFO_RX), - AGPIO(GPIO_TELEINFO_ENABLE), -#endif -#ifdef USE_ADC - AGPIO(GPIO_ADC_INPUT) + MAX_ADCS, // Analog inputs - AGPIO(GPIO_ADC_TEMP) + MAX_ADCS, // Thermistor - AGPIO(GPIO_ADC_LIGHT) + MAX_ADCS, // Light sensor - AGPIO(GPIO_ADC_BUTTON) + MAX_ADCS, // Button - AGPIO(GPIO_ADC_BUTTON_INV) + MAX_ADCS, - AGPIO(GPIO_ADC_RANGE) + MAX_ADCS, // Range - AGPIO(GPIO_ADC_CT_POWER) + MAX_ADCS, // Current - AGPIO(GPIO_ADC_JOY) + MAX_ADCS, // Joystick -#endif -#ifdef USE_WEBCAM - AGPIO(GPIO_WEBCAM_PWDN), - AGPIO(GPIO_WEBCAM_RESET), - AGPIO(GPIO_WEBCAM_XCLK), - AGPIO(GPIO_WEBCAM_SIOD), - AGPIO(GPIO_WEBCAM_SIOC), - AGPIO(GPIO_WEBCAM_DATA) + MAX_WEBCAM_DATA, - AGPIO(GPIO_WEBCAM_VSYNC), - AGPIO(GPIO_WEBCAM_HREF), - AGPIO(GPIO_WEBCAM_PCLK), - AGPIO(GPIO_WEBCAM_PSCLK), - AGPIO(GPIO_WEBCAM_HSD) + MAX_WEBCAM_HSD, - AGPIO(GPIO_WEBCAM_PSRCS), -#endif -#ifdef USE_ETHERNET - AGPIO(GPIO_ETH_PHY_POWER), - AGPIO(GPIO_ETH_PHY_MDC), - AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet -#endif -}; - -//******************************************************************************************** - -// User selectable ADC functionality -enum UserSelectableAdc { - ADC_NONE, // Not used - ADC_INPUT, // Analog input - ADC_TEMP, // Thermistor - ADC_LIGHT, // Light sensor - ADC_BUTTON, // Button - ADC_BUTTON_INV, - ADC_RANGE, // Range - ADC_CT_POWER, // Current - ADC_JOY, // Joystick -// ADC_SWITCH, // Switch -// ADC_SWITCH_INV, - ADC_END }; - -#define MAX_GPIO_PIN 40 // Number of supported GPIO -#define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) -#define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS -#define WEMOS_MODULE 0 // Wemos module - -// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 -const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOIAIAIAIAIAIA"; - -//******************************************************************************************** - -typedef struct MYIO { - uint16_t io[MAX_GPIO_PIN]; -} myio; // 40 * 2 = 80 bytes - -typedef struct MYCFGIO { - uint16_t io[MAX_USER_PINS]; -} mycfgio; // 36 * 2 = 72 bytes - -#define GPIO_FLAG_USED 0 // Currently no flags used - -typedef union { - uint16_t data; - struct { - uint16_t spare00 : 1; - uint16_t spare01 : 1; - uint16_t spare02 : 1; - uint16_t spare03 : 1; - uint16_t spare04 : 1; - uint16_t spare05 : 1; - uint16_t spare06 : 1; - uint16_t spare07 : 1; - uint16_t spare08 : 1; - uint16_t spare09 : 1; - uint16_t spare10 : 1; - uint16_t spare11 : 1; - uint16_t spare12 : 1; - uint16_t spare13 : 1; - uint16_t spare14 : 1; - uint16_t spare15 : 1; - }; -} gpio_flag; // 2 bytes - -typedef struct MYTMPLT { - mycfgio gp; // 72 bytes - gpio_flag flag; // 2 bytes -} mytmplt; // 74 bytes - -/********************************************************************************************/ -// Supported hardware modules -enum SupportedModules { WEMOS, ESP32_CAM_AITHINKER, MAXMODULE }; - -#define USER_MODULE 255 - -const char kModuleNames[] PROGMEM = "ESP32-DevKit|ESP32 Cam AiThinker"; - -// Default module settings -const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { WEMOS, ESP32_CAM_AITHINKER }; - -const mytmplt kModules PROGMEM = -{ // WEMOS - Espressif ESP32-DevKitC - Any ESP32 device like WeMos and NodeMCU hardware (ESP32) - AGPIO(GPIO_USER), // 0 (I)O GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK - AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2 - AGPIO(GPIO_USER), // 2 IO GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0 - AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 - AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER - AGPIO(GPIO_USER), // 5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK - // 6 IO GPIO6, Flash CLK - // 7 IO GPIO7, Flash D0 - // 8 IO GPIO8, Flash D1 - AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD - AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD - // 11 IO GPIO11, Flash CMD - AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) - AGPIO(GPIO_USER), // 13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER - AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 - AGPIO(GPIO_USER), // 15 (I)O GPIO15, ADC2_CH3, TOUCH3, MTDO, HSPICS0, RTC_GPIO13, HS2_CMD, SD_CMD, EMAC_RXD3 (If driven Low, silences boot messages from normal boot. Has internal pull-up, so unconnected = High = normal output.) - AGPIO(GPIO_USER), // 16 IO GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT - AGPIO(GPIO_USER), // 17 IO GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 - AGPIO(GPIO_USER), // 18 IO GPIO18, VSPICLK, HS1_DATA7 - AGPIO(GPIO_USER), // 19 IO GPIO19, VSPIQ, U0CTS, EMAC_TXD0 - 0, // 20 - AGPIO(GPIO_USER), // 21 IO GPIO21, VSPIHD, EMAC_TX_EN - AGPIO(GPIO_USER), // 22 IO LED GPIO22, VSPIWP, U0RTS, EMAC_TXD1 - AGPIO(GPIO_USER), // 23 IO GPIO23, VSPID, HS1_STROBE - 0, // 24 - AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 - AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 - AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV - 0, // 28 - 0, // 29 - 0, // 30 - 0, // 31 - AGPIO(GPIO_USER), // 32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 - AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 - AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 - AGPIO(GPIO_USER), // 35 I NO PULLUP GPIO35, ADC1_CH7, RTC_GPIO5 - AGPIO(GPIO_USER), // 36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0 - 0, // 37 NO PULLUP - 0, // 38 NO PULLUP - AGPIO(GPIO_USER), // 39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3 - 0 // Flag -}; - -/*********************************************************************************************\ - Known templates - -{"NAME":"AITHINKER CAM","GPIO":[4992,1,1,1,1,5088,1,1,1,1,1,1,1,1,5089,5090,0,5091,5184,5152,0,5120,5024,5056,0,0,0,0,4928,1,5094,5095,5092,0,0,5093],"FLAG":0,"BASE":1} -{"NAME":"Olimex ESP32-PoE","GPIO":[1,1,1,1,1,1,0,0,5536,1,1,1,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} -{"NAME":"wESP32","GPIO":[1,1,1,1,1,1,0,0,0,1,1,1,5568,5600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} -{"NAME":"Denky (Teleinfo)","GPIO":[1,1,1,1,5664,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,1376,1,1,0,0,0,0,1,5632,1,1,1,0,0,1],"FLAG":0,"BASE":1} - -\*********************************************************************************************/ - -#endif // ESP32 - -#endif // _TASMOTA_TEMPLATE_ESP32_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index ed15c9e12..dda6c9a73 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -405,14 +405,14 @@ const char HTTP_SCRIPT_MODULE_TEMPLATE_COMPRESSED[] PROGMEM = "\x33\xBF\xAC\xF1\ #define HTTP_SCRIPT_MODULE_TEMPLATE Decompress(HTTP_SCRIPT_MODULE_TEMPLATE_COMPRESSED,HTTP_SCRIPT_MODULE_TEMPLATE_SIZE).c_str() #else const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM = -#ifdef ESP8266 - "var os;" - "function sk(s,g){" // s = value, g = id and name - "var o=os.replace(/}2/g,\"