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,\"