diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 62a21c61f..832604ba2 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -96,3 +96,4 @@ The following binary downloads have been compiled with ESP8266/Arduino library c - Add console command history (#7483, #8015) - Add quick wifi reconnect using saved AP parameters when ``SetOption56 0`` (#3189) - Add more accuracy to GPS NTP server (#8088) +- Add experimental basic support for Tasmota on ESP32 based on work by Jörg Schüler-Maroldt diff --git a/tasmota/CHANGELOG.md b/tasmota/CHANGELOG.md index f3b36fcf5..8bdb07297 100644 --- a/tasmota/CHANGELOG.md +++ b/tasmota/CHANGELOG.md @@ -1,5 +1,9 @@ ## Unreleased (development) +### 8.2.0.6 20200501 + +- Add experimental basic support for Tasmota on ESP32 based on work by Jörg Schüler-Maroldt + ### 8.2.0.5 20200425 - Breaking Change Device Groups multicast address and port (#8270) diff --git a/tasmota/settings.h b/tasmota/settings.h index f4139a748..7a7c7705c 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -362,15 +362,10 @@ struct { char ex_friendlyname[4][33]; // 3AC char ex_switch_topic[33]; // 430 #else // ESP32 -#ifndef FINAL_ESP32 - char ex_friendlyname[4][33]; // 3AC - char ex_switch_topic[33]; // 430 -#else // FINAL_ESP32 myio my_gp; // 3AC - 2 x 40 bytes (ESP32) mytmplt user_template; // 3FC - 2 x 37 bytes (ESP32) uint8_t free_esp32_446[11]; // 446 -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 char serial_delimiter; // 451 @@ -415,18 +410,7 @@ struct { uint32_t ip_address[4]; // 544 unsigned long energy_kWhtotal; // 554 -#ifdef ESP8266 char ex_mqtt_fulltopic[100]; // 558 -#else // ESP32 -#ifndef FINAL_ESP32 - myio my_gp; // 558 - 40 bytes (ESP32) - mytmplt user_template; // 580 - 37 bytes (ESP32) - - uint8_t free_esp32_5a5[23]; // 5A5 -#else // FINAL_ESP32 - char ex_mqtt_fulltopic[100]; // 558 -#endif // FINAL_ESP32 -#endif // ESP8266 - ESP32 SysBitfield2 flag2; // 5BC unsigned long pulse_counter[MAX_COUNTERS]; // 5C0 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index f490f3eeb..2548e2b14 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1386,6 +1386,13 @@ void SettingsDelta(void) #endif // ESP32 } + if (Settings.version < 0x08020006) { +#ifdef ESP32 + Settings.module = WEMOS; + ModuleDefault(WEMOS); +#endif // ESP32 + } + Settings.version = VERSION; SettingsSave(1); } diff --git a/tasmota/support.ino b/tasmota/support.ino index e4325f57c..db0d08b5e 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1085,11 +1085,7 @@ uint32_t Pin(uint32_t gpio, uint32_t index) { #ifdef ESP8266 uint16_t real_gpio = gpio + index; #else // ESP32 -#ifndef FINAL_ESP32 - uint16_t real_gpio = gpio + index; -#else // FINAL_ESP32 uint16_t real_gpio = (gpio << 5) + index; -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 for (uint32_t i = 0; i < ARRAY_SIZE(gpio_pin); i++) { if (gpio_pin[i] == real_gpio) { @@ -1172,13 +1168,8 @@ void ModuleGpios(myio *gp) uint8_t *dest = (uint8_t *)gp; uint8_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; #else // ESP32 -#ifndef FINAL_ESP32 - uint8_t *dest = (uint8_t *)gp; - uint8_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -#else // FINAL_ESP32 uint16_t *dest = (uint16_t *)gp; uint16_t src[ARRAY_SIZE(Settings.user_template.gp.io)]; -#endif #endif // ESP8266 - ESP32 memset(dest, GPIO_NONE, sizeof(myio)); @@ -1268,11 +1259,7 @@ bool ValidGPIO(uint32_t pin, uint32_t gpio) #ifdef ESP8266 return (GPIO_USER == ValidPin(pin, gpio)); // Only allow GPIO_USER pins #else // ESP32 -#ifndef FINAL_ESP32 - return (GPIO_USER == ValidPin(pin, gpio)); // Only allow GPIO_USER pins -#else // FINAL_ESP32 return (GPIO_USER == ValidPin(pin, gpio >> 5)); // Only allow GPIO_USER pins -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 } @@ -1288,11 +1275,7 @@ bool ValidAdc(void) #ifdef ESP8266 bool GetUsedInModule(uint32_t val, uint8_t *arr) #else // ESP32 -#ifndef FINAL_ESP32 -bool GetUsedInModule(uint32_t val, uint8_t *arr) -#else // FINAL_ESP32 bool GetUsedInModule(uint32_t val, uint16_t *arr) -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 { int offset = 0; diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index a446fec30..eb903a40e 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1055,19 +1055,11 @@ void CmndGpio(void) break; } #else // ESP32 -#ifndef FINAL_ESP32 - uint32_t midx = pgm_read_byte(kGpioNiceList + i); - if (midx == XdrvMailbox.payload) { - present = true; - break; - } -#else // FINAL_ESP32 uint32_t midx = pgm_read_word(kGpioNiceList + i); if ((XdrvMailbox.payload >= (midx & 0xFFE0)) && (XdrvMailbox.payload < midx)) { present = true; break; } -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 } if (present) { @@ -1097,9 +1089,6 @@ void CmndGpio(void) #ifdef ESP8266 uint32_t sensor_name_idx = sensor_type; #else // ESP32 -#ifndef FINAL_ESP32 - uint32_t sensor_name_idx = sensor_type; -#else // FINAL_ESP32 uint32_t sensor_name_idx = sensor_type >> 5; uint32_t nice_list_search = sensor_type & 0xFFE0; for (uint32_t j = 0; j < ARRAY_SIZE(kGpioNiceList); j++) { @@ -1109,7 +1098,6 @@ void CmndGpio(void) break; } } -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 const char *sensor_names = kSensorNames; if (sensor_name_idx > GPIO_FIX_START) { @@ -1140,13 +1128,8 @@ void CmndGpios(void) uint32_t midx = pgm_read_byte(kGpioNiceList + i); uint32_t ridx = midx; #else // ESP32 -#ifndef FINAL_ESP32 - uint32_t midx = pgm_read_byte(kGpioNiceList + i); - uint32_t ridx = midx; -#else // FINAL_ESP32 uint32_t ridx = pgm_read_word(kGpioNiceList + i) & 0xFFE0; uint32_t midx = ridx >> 5; -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 if ((XdrvMailbox.payload != 255) && GetUsedInModule(midx, cmodule.io)) { continue; } if (!jsflg) { diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index ca5a7559b..e0710278a 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -120,9 +120,7 @@ uint16_t seriallog_timer = 0; // Timer to disable Seriallog uint16_t syslog_timer = 0; // Timer to re-enable syslog_level #ifdef ESP32 -#ifdef FINAL_ESP32 uint16_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -#endif // FINAL_ESP32 #endif // ESP32 int16_t save_data_counter; // Counter and flag for config save to Flash @@ -140,14 +138,6 @@ uint8_t pin_gpio[GPIO_MAX]; // Pin numbers indexed by GPIO funct #else // No LEGACY_GPIO_ARRAY uint8_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number #endif // LEGACY_GPIO_ARRAY -#else // ESP32 -#ifndef FINAL_ESP32 -#ifdef LEGACY_GPIO_ARRAY -uint8_t pin_gpio[GPIO_MAX]; // Pin numbers indexed by GPIO function -#else // No LEGACY_GPIO_ARRAY -uint8_t gpio_pin[MAX_GPIO_PIN] = { 0 }; // GPIO functions indexed by pin number -#endif // LEGACY_GPIO_ARRAY -#endif // No FINAL_ESP32 #endif // ESP8266 - ESP32 uint8_t active_device = 1; // Active device in ExecuteCommandPower diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index 1cff43fd8..e18d8800a 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -55,11 +55,6 @@ extern "C" void resetPins(); //#define LEGACY_GPIO_ARRAY // Uncomment to use legacy GPIO array instead of new PIN array -//#define FINAL_ESP32 // Uncomment for ESP32 16-bits PIN array -#ifdef FINAL_ESP32 -#undef LEGACY_GPIO_ARRAY -#endif - /*********************************************************************************************\ * Mandatory defines satisfying disabled defines \*********************************************************************************************/ @@ -336,11 +331,7 @@ const char kWebColors[] PROGMEM = #ifdef ESP8266 #define AGPIO(x) (x) #else // ESP32 -#ifndef FINAL_ESP32 -#define AGPIO(x) (x) -#else // FINAL_ESP32 #define AGPIO(x) (x<<5) -#endif // FINAL_ESP32 #endif // ESP8266 - ESP32 #ifdef USE_DEVICE_GROUPS diff --git a/tasmota/tasmota_template_ESP32.h b/tasmota/tasmota_template_ESP32.h index 4dfd9dd90..09a3153d8 100644 --- a/tasmota/tasmota_template_ESP32.h +++ b/tasmota/tasmota_template_ESP32.h @@ -21,7 +21,6 @@ #define _TASMOTA_TEMPLATE_ESP32_H_ #ifdef ESP32 -#ifndef FINAL_ESP32 // Hardware has no ESP32 #undef USE_TUYA_DIMMER @@ -43,80 +42,62 @@ #undef USE_TUYA_MCU #undef USE_PS_16_DZ -// 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_KEY1, // 4 x Button usually connected to GPIO0 + GPIO_KEY1_NP, + GPIO_KEY1_INV, + GPIO_KEY1_INV_NP, + GPIO_SWT1, // 8 x User connected external switches + GPIO_SWT1_NP, + GPIO_REL1, // 8 x Relays + GPIO_REL1_INV, + GPIO_LED1, // 4 x Leds + GPIO_LED1_INV, + GPIO_CNTR1, // 4 x Counter + GPIO_CNTR1_NP, + GPIO_PWM1, // 5 x PWM + GPIO_PWM1_INV, + GPIO_BUZZER, // Buzzer + GPIO_BUZZER_INV, // Inverted buzzer + GPIO_LEDLNK, // Link led + GPIO_LEDLNK_INV, // Inverted link led + GPIO_I2C_SCL, // I2C SCL + GPIO_I2C_SDA, // I2C SDA + GPIO_SPI_MISO, // SPI MISO + GPIO_SPI_MOSI, // SPI MOSI + GPIO_SPI_CLK, // SPI Clk + GPIO_SPI_CS, // SPI Chip Select + GPIO_SPI_DC, // SPI Data Direction + GPIO_SSPI_MISO, // Software SPI Master Input Slave Output + GPIO_SSPI_MOSI, // Software SPI Master Output Slave Input + GPIO_SSPI_SCLK, // Software SPI Serial Clock + GPIO_SSPI_CS, // Software SPI Chip Select + GPIO_SSPI_DC, // Software SPI Data or Command + GPIO_BACKLIGHT, // Display backlight control + GPIO_OLED_RESET, // OLED Display Reset + GPIO_IRSEND, // IR remote + GPIO_IRRECV, // IR receiver + GPIO_RFSEND, // RF transmitter + GPIO_RFRECV, // RF receiver 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 GPIO_DSB, // Single wire DS18B20 or DS18S20 - GPIO_I2C_SCL, // I2C SCL - GPIO_I2C_SDA, // I2C SDA + GPIO_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 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_PZEM016_RX, // PZEM-014,016 Serial Modbus interface + GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus 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_TX, // Plantower PMS5003 Serial interface GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface + GPIO_SDS0X1_TX, // Nova Fitness SDS011 Serial interface GPIO_SDS0X1_RX, // Nova Fitness SDS011 Serial interface GPIO_SBR_TX, // Serial Bridge Serial interface GPIO_SBR_RX, // Serial Bridge Serial interface @@ -129,54 +110,20 @@ enum UserSelectablePins { 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 Slave Output - GPIO_SSPI_MOSI, // Software SPI Master Output Slave 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 @@ -204,12 +151,7 @@ enum UserSelectablePins { 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 @@ -239,87 +181,89 @@ enum UserSelectablePins { 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_HRXL_RX, // Data from MaxBotix HRXL sonar range sensor GPIO_ELECTRIQ_MOODL_TX, // ElectriQ iQ-wifiMOODL Serial TX GPIO_AS3935, - GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface + ADC0_INPUT, // Analog input + ADC0_TEMP, // Thermistor + ADC0_LIGHT, // Light sensor + ADC0_BUTTON, // Button + ADC0_BUTTON_INV, + ADC0_RANGE, // Range + ADC0_CT_POWER, // Current 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 = 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_DHT11 "|" D_SENSOR_AM2301 "|" D_SENSOR_SI7021 "|" - D_SENSOR_DS18X20 "|" + 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_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_PZEM0XX_TX "|" D_SENSOR_PZEM004_RX "|" D_SENSOR_PZEM016_RX "|" D_SENSOR_PZEM017_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_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_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_DFR562 "|" 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_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 "|" @@ -332,443 +276,372 @@ const char kSensorNames[] PROGMEM = D_SENSOR_SLAVE_TX "|" D_SENSOR_SLAVE_RX "|" D_SENSOR_SLAVE_RESET "|" D_SENSOR_SLAVE_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_AS3935 "|" + D_ANALOG_INPUT "|" + D_TEMPERATURE "|" D_LIGHT "|" + D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|" + D_RANGE "|" + D_CT_POWER "|" ; 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, - 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, +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_SWT1) + MAX_SWITCHES, // User connected external switches + AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, + 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 - GPIO_CNTR1, // Counters - GPIO_CNTR1_NP, - GPIO_CNTR2, - GPIO_CNTR2_NP, - GPIO_CNTR3, - GPIO_CNTR3_NP, - GPIO_CNTR4, - GPIO_CNTR4_NP, + 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 - GPIO_BUZZER, // Buzzer - GPIO_BUZZER_INV, // Inverted buzzer + AGPIO(GPIO_BUZZER), // Buzzer + AGPIO(GPIO_BUZZER_INV), // Inverted buzzer #endif - GPIO_TXD, // Serial interface - GPIO_RXD, // Serial interface + AGPIO(GPIO_LEDLNK), // Link led + AGPIO(GPIO_LEDLNK_INV), // Inverted link led #ifdef USE_I2C - GPIO_I2C_SCL, // I2C SCL - GPIO_I2C_SDA, // I2C SDA + AGPIO(GPIO_I2C_SCL), // I2C SCL + AGPIO(GPIO_I2C_SDA), // I2C SDA #endif #ifdef USE_SPI - GPIO_SPI_CS, // SPI Chip Select - GPIO_SPI_DC, // SPI Data Direction - GPIO_SSPI_MISO, // Software SPI Master Input Slave Output - GPIO_SSPI_MOSI, // Software SPI Master Output Slave Input - GPIO_SSPI_SCLK, // Software SPI Serial Clock - GPIO_SSPI_CS, // Software SPI Chip Select - GPIO_SSPI_DC, // Software SPI Data or Command + 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 + AGPIO(GPIO_SSPI_MISO), // Software SPI Master Input Slave Output + AGPIO(GPIO_SSPI_MOSI), // Software SPI Master Output Slave 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 #endif #ifdef USE_DISPLAY - GPIO_BACKLIGHT, // Display backlight control - GPIO_OLED_RESET, // OLED Display Reset + 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 - 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 + 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 - GPIO_DSB, // Single wire DS18B20 or DS18S20 - GPIO_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 + AGPIO(GPIO_DSB), // Single wire DS18B20 or DS18S20 + AGPIO(GPIO_DSB_OUT), // Pseudo Single wire DS18B20 or DS18S20 #endif // Light #ifdef USE_LIGHT #ifdef USE_WS2812 - GPIO_WS2812, // WS2812 Led string + AGPIO(GPIO_WS2812), // WS2812 Led string #endif #ifdef USE_ARILUX_RF - GPIO_ARIRFRCV, // AriLux RF Receive input - GPIO_ARIRFSEL, // Arilux RF Receive input selected + AGPIO(GPIO_ARIRFRCV), // AriLux RF Receive input + AGPIO(GPIO_ARIRFSEL), // Arilux RF Receive input selected #endif #ifdef USE_MY92X1 - GPIO_DI, // my92x1 PWM input - GPIO_DCKI, // my92x1 CLK input + AGPIO(GPIO_DI), // my92x1 PWM input + AGPIO(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 + AGPIO(GPIO_SM16716_CLK), // SM16716 CLOCK + AGPIO(GPIO_SM16716_DAT), // SM16716 DATA + AGPIO(GPIO_SM16716_SEL), // SM16716 SELECT #endif // USE_SM16716 #ifdef USE_SM2135 - GPIO_SM2135_CLK, // SM2135 CLOCK - GPIO_SM2135_DAT, // SM2135 DATA + AGPIO(GPIO_SM2135_CLK), // SM2135 CLOCK + AGPIO(GPIO_SM2135_DAT), // SM2135 DATA #endif // USE_SM2135 #ifdef USE_TUYA_MCU - GPIO_TUYA_TX, // Tuya Serial interface - GPIO_TUYA_RX, // Tuya Serial interface + AGPIO(GPIO_TUYA_TX), // Tuya Serial interface + AGPIO(GPIO_TUYA_RX), // Tuya Serial interface #endif #ifdef USE_EXS_DIMMER - GPIO_EXS_ENABLE, // EXS MCU Enable + AGPIO(GPIO_EXS_ENABLE), // EXS MCU Enable #endif #ifdef USE_ELECTRIQ_MOODL - GPIO_ELECTRIQ_MOODL_TX, + AGPIO(GPIO_ELECTRIQ_MOODL_TX), #endif #endif // USE_LIGHT #if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL) - GPIO_IRSEND, // IR remote + AGPIO(GPIO_IRSEND), // IR remote #if defined(USE_IR_RECEIVE) || defined(USE_IR_REMOTE_FULL) - GPIO_IRRECV, // IR receiver + AGPIO(GPIO_IRRECV), // IR receiver #endif #endif #ifdef USE_RC_SWITCH - GPIO_RFSEND, // RF transmitter - GPIO_RFRECV, // RF receiver + AGPIO(GPIO_RFSEND), // RF transmitter + AGPIO(GPIO_RFRECV), // RF receiver #endif #ifdef USE_RF_SENSOR - GPIO_RF_SENSOR, // Rf receiver with sensor decoding + AGPIO(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 + AGPIO(GPIO_SR04_TRIG), // SR04 Tri/TXgger pin + AGPIO(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 + AGPIO(GPIO_TM16CLK), // TM1638 Clock + AGPIO(GPIO_TM16DIO), // TM1638 Data I/O + AGPIO(GPIO_TM16STB), // TM1638 Strobe #endif #ifdef USE_HX711 - GPIO_HX711_SCK, // HX711 Load Cell clock - GPIO_HX711_DAT, // HX711 Load Cell data + 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 - 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 + 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) - GPIO_ADE7953_IRQ, // ADE7953 IRQ + AGPIO(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) + 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 - GPIO_MCP39F5_TX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RX, // MCP39F501 Serial interface (Shelly2) - GPIO_MCP39F5_RST, // MCP39F501 Reset (Shelly2) + 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) - GPIO_PZEM0XX_TX, // PZEM0XX Serial interface + AGPIO(GPIO_PZEM0XX_TX), // PZEM0XX Serial interface #endif #ifdef USE_PZEM004T - GPIO_PZEM004_RX, // PZEM004T Serial interface + AGPIO(GPIO_PZEM004_RX), // PZEM004T Serial interface #endif #ifdef USE_PZEM_AC - GPIO_PZEM016_RX, // PZEM-014,016 Serial Modbus interface + AGPIO(GPIO_PZEM016_RX), // PZEM-014,016 Serial Modbus interface #endif #ifdef USE_PZEM_DC - GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus interface + AGPIO(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 + AGPIO(GPIO_SDM120_TX), // SDM120 Serial interface + AGPIO(GPIO_SDM120_RX), // SDM120 Serial interface #endif #ifdef USE_SDM630 - GPIO_SDM630_TX, // SDM630 Serial interface - GPIO_SDM630_RX, // SDM630 Serial interface + AGPIO(GPIO_SDM630_TX), // SDM630 Serial interface + AGPIO(GPIO_SDM630_RX), // SDM630 Serial interface #endif #ifdef USE_DDS2382 - GPIO_DDS2382_TX, // DDS2382 Serial interface - GPIO_DDS2382_RX, // DDS2382 Serial interface + AGPIO(GPIO_DDS2382_TX), // DDS2382 Serial interface + AGPIO(GPIO_DDS2382_RX), // DDS2382 Serial interface #endif #ifdef USE_DDSU666 - GPIO_DDSU666_TX, // DDSU666 Serial interface - GPIO_DDSU666_RX, // DDSU666 Serial interface + AGPIO(GPIO_DDSU666_TX), // DDSU666 Serial interface + AGPIO(GPIO_DDSU666_RX), // DDSU666 Serial interface #endif // USE_DDSU666 #ifdef USE_SOLAX_X1 - GPIO_SOLAXX1_TX, // Solax Inverter tx pin - GPIO_SOLAXX1_RX, // Solax Inverter rx pin + AGPIO(GPIO_SOLAXX1_TX), // Solax Inverter tx pin + AGPIO(GPIO_SOLAXX1_RX), // Solax Inverter rx pin #endif // USE_SOLAX_X1 #ifdef USE_LE01MR - GPIO_LE01MR_RX, // F7F LE-01MR energy meter rx pin - GPIO_LE01MR_TX, // F7F LE-01MR energy meter tx pin + AGPIO(GPIO_LE01MR_RX), // F7F LE-01MR energy meter rx pin + AGPIO(GPIO_LE01MR_TX), // F7F LE-01MR energy meter tx pin #endif // IFDEF:USE_LE01MR #endif // USE_ENERGY_SENSOR // Serial #ifdef USE_SERIAL_BRIDGE - GPIO_SBR_TX, // Serial Bridge Serial interface - GPIO_SBR_RX, // Serial Bridge Serial interface + AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface + AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface #endif #ifdef USE_ZIGBEE - GPIO_ZIGBEE_TX, // Zigbee Serial interface - GPIO_ZIGBEE_RX, // Zigbee Serial interface + AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface + AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface #endif #ifdef USE_MHZ19 - GPIO_MHZ_TXD, // MH-Z19 Serial interface - GPIO_MHZ_RXD, // MH-Z19 Serial interface + AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface + AGPIO(GPIO_MHZ_RXD), // MH-Z19 Serial interface #endif #ifdef USE_SENSEAIR - GPIO_SAIR_TX, // SenseAir Serial interface - GPIO_SAIR_RX, // SenseAir Serial interface + AGPIO(GPIO_SAIR_TX), // SenseAir Serial interface + AGPIO(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 + AGPIO(GPIO_SDS0X1_TX), // Nova Fitness SDS011 Serial interface + AGPIO(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 + AGPIO(GPIO_HPMA_TX), // Honeywell HPMA115S0 Serial interface + AGPIO(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 + 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) - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin + AGPIO(GPIO_TX2X_TXD_BLACK), // TX20/TX23 Transmission Pin #endif #ifdef USE_MP3_PLAYER - GPIO_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player Serial interface + AGPIO(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 + 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 - GPIO_PN532_TXD, // PN532 HSU Tx - GPIO_PN532_RXD, // PN532 HSU Rx + AGPIO(GPIO_PN532_TXD), // PN532 HSU Tx + AGPIO(GPIO_PN532_RXD), // PN532 HSU Rx #endif #ifdef USE_TASMOTA_SLAVE - GPIO_TASMOTASLAVE_TXD, // Tasmota Slave TX - GPIO_TASMOTASLAVE_RXD, // Tasmota Slave RX - GPIO_TASMOTASLAVE_RST, // Tasmota Slave Reset - GPIO_TASMOTASLAVE_RST_INV, // Tasmota Slave Reset Inverted + AGPIO(GPIO_TASMOTASLAVE_TXD), // Tasmota Slave TX + AGPIO(GPIO_TASMOTASLAVE_RXD), // Tasmota Slave RX + AGPIO(GPIO_TASMOTASLAVE_RST), // Tasmota Slave Reset + AGPIO(GPIO_TASMOTASLAVE_RST_INV), // Tasmota Slave Reset Inverted #endif #ifdef USE_RDM6300 - GPIO_RDM6300_RX, + AGPIO(GPIO_RDM6300_RX), #endif #ifdef USE_IBEACON - GPIO_IBEACON_RX, - GPIO_IBEACON_TX, + AGPIO(GPIO_IBEACON_RX), + AGPIO(GPIO_IBEACON_TX), #endif #ifdef USE_GPS - GPIO_GPS_RX, // GPS serial interface - GPIO_GPS_TX, // GPS serial interface + AGPIO(GPIO_GPS_RX), // GPS serial interface + AGPIO(GPIO_GPS_TX), // GPS serial interface #endif #ifdef USE_HM10 - GPIO_HM10_RX, // GPS serial interface - GPIO_HM10_TX, // GPS serial interface + AGPIO(GPIO_HM10_RX), // GPS serial interface + AGPIO(GPIO_HM10_TX), // GPS serial interface #endif #ifdef USE_MGC3130 - GPIO_MGC3130_XFER, - GPIO_MGC3130_RESET, + AGPIO(GPIO_MGC3130_XFER), + AGPIO(GPIO_MGC3130_RESET), #endif #ifdef USE_MAX31855 - GPIO_MAX31855CS, // MAX31855 Serial interface - GPIO_MAX31855CLK, // MAX31855 Serial interface - GPIO_MAX31855DO, // MAX31855 Serial interface + AGPIO(GPIO_MAX31855CS), // MAX31855 Serial interface + AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface + AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface #endif #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 + AGPIO(GPIO_ROT1A), // Rotary switch1 A Pin + AGPIO(GPIO_ROT1B), // Rotary switch1 B Pin + AGPIO(GPIO_ROT2A), // Rotary switch2 A Pin + AGPIO(GPIO_ROT2B), // Rotary switch2 B Pin #endif #ifdef USE_HRE - GPIO_HRE_CLOCK, - GPIO_HRE_DATA, + AGPIO(GPIO_HRE_CLOCK), + AGPIO(GPIO_HRE_DATA), #endif #ifdef USE_A4988_STEPPER - GPIO_A4988_DIR, // A4988 direction pin - GPIO_A4988_STP, // A4988 step pin + AGPIO(GPIO_A4988_DIR), // A4988 direction pin + AGPIO(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 + 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 - GPIO_DEEPSLEEP, + AGPIO(GPIO_DEEPSLEEP), #endif #ifdef USE_KEELOQ - GPIO_CC1101_GDO0, // CC1101 pin for RX - GPIO_CC1101_GDO2, // CC1101 pin for RX + AGPIO(GPIO_CC1101_GDO0), // CC1101 pin for RX + AGPIO(GPIO_CC1101_GDO2), // CC1101 pin for RX #endif #ifdef USE_HRXL - GPIO_HRXL_RX, + AGPIO(GPIO_HRXL_RX), #endif #ifdef USE_AS3935 - GPIO_AS3935, + AGPIO(GPIO_AS3935), #endif +/* +#ifndef USE_ADC_VCC + AGPIO(ADC0_INPUT), // Analog input + AGPIO(ADC0_TEMP), // Thermistor + AGPIO(ADC0_LIGHT), // Light sensor + AGPIO(ADC0_BUTTON), // Button + AGPIO(ADC0_BUTTON_INV), + AGPIO(ADC0_RANGE), // Range + AGPIO(ADC0_CT_POWER), // Current +#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|" - ; - -/********************************************************************************************/ - -// esp32 has more pins -#define USER_MODULE 255 #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 ADC0_PIN 33 // Pin number of ADC0 #define WEMOS_MODULE 0 // Wemos module // 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOA6A7A0IoIoA3"; -/********************************************************************************************/ +//******************************************************************************************** typedef struct MYIO { - uint8_t io[MAX_GPIO_PIN]; -} myio; + uint16_t io[MAX_GPIO_PIN]; +} myio; // 40 * 2 = 80 bytes typedef struct MYCFGIO { - uint8_t io[MAX_GPIO_PIN - MIN_FLASH_PINS]; -} mycfgio; + uint16_t io[MAX_USER_PINS]; +} mycfgio; // 36 * 2 = 72 bytes -#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 +#define GPIO_FLAG_USED 0 // Currently no flags used typedef union { - uint8_t data; + uint16_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; + 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; +} gpio_flag; // 2 bytes typedef struct MYTMPLT { - mycfgio gp; - gpio_flag flag; -} mytmplt; + mycfgio gp; // 72 bytes + gpio_flag flag; // 2 bytes +} mytmplt; // 74 bytes /********************************************************************************************/ // Supported hardware modules - enum SupportedModules { WEMOS, ESP32_CAM_AITHINKER, MAXMODULE}; @@ -785,54 +658,50 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { }; const mytmplt kModules PROGMEM = -{ // WEMOS - Espressif ESP32-DevKitC - Any ESP32 device like WeMos and NodeMCU hardware (ESP32) - GPIO_USER, //0 (I)O GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1, EMAC_TX_CLK - GPIO_USER, //1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2 - GPIO_USER, //2 IO GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP, HS2_DATA0, SD_DATA0 - GPIO_USER, //3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 - GPIO_USER, //4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER - 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 - GPIO_USER, //9 IO GPIO9, Flash D2, U1RXD - GPIO_USER, //10 IO GPIO10, Flash D3, U1TXD - //11 IO GPIO11, Flash CMD - 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.) - GPIO_USER, //13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER - GPIO_USER, //14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 - 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.) - GPIO_USER, //16 IO GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT - GPIO_USER, //17 IO GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 - GPIO_USER, //18 IO GPIO18, VSPICLK, HS1_DATA7 - GPIO_USER, //19 IO GPIO19, VSPIQ, U0CTS, EMAC_TXD0 - 0, //20 - GPIO_USER, //21 IO GPIO21, VSPIHD, EMAC_TX_EN - GPIO_USER, //22 IO LED GPIO22, VSPIWP, U0RTS, EMAC_TXD1 - GPIO_USER, //23 IO GPIO23, VSPID, HS1_STROBE - 0, //24 - GPIO_USER, //25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 - GPIO_USER, //26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 - GPIO_USER, //27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV - 0, //28 - 0, //29 - 0, //30 - 0, //31 - GPIO_USER, //32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 - GPIO_USER, //33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 - GPIO_USER, //34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 - GPIO_USER, //35 I NO PULLUP GPIO35, ADC1_CH7, RTC_GPIO5 - GPIO_USER, //36 I NO PULLUP GPIO36, SENSOR_VP, ADC_H, ADC1_CH0, RTC_GPIO0 - 0, //37 NO PULLUP - 0, //38 NO PULLUP - GPIO_USER, //39 I NO PULLUP GPIO39, SENSOR_VN, ADC1_CH3, ADC_H, RTC_GPIO3 - 0 // Flag +{ // 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 }; -#else // FINAL_ESP32 -#include "tasmota_template_ESP32_final.h" -#endif // FINAL_ESP32 - #endif // ESP32 #endif // _TASMOTA_TEMPLATE_ESP32_H_ diff --git a/tasmota/tasmota_template_ESP32_final.h b/tasmota/tasmota_template_ESP32_final.h deleted file mode 100644 index 2dc36fb98..000000000 --- a/tasmota/tasmota_template_ESP32_final.h +++ /dev/null @@ -1,707 +0,0 @@ -/* - tasmota_template_ESP32_final.h - 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_FINAL_H_ -#define _TASMOTA_TEMPLATE_ESP32_FINAL_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_ADC_VCC // Needs to be ported -#undef USE_DEEPSLEEP -#undef USE_MY92X1 -#undef USE_TUYA_MCU -#undef USE_PS_16_DZ - -enum UserSelectablePins { - GPIO_NONE, // Not used - GPIO_KEY1, // 4 x Button usually connected to GPIO0 - GPIO_KEY1_NP, - GPIO_KEY1_INV, - GPIO_KEY1_INV_NP, - GPIO_SWT1, // 8 x User connected external switches - GPIO_SWT1_NP, - GPIO_REL1, // 8 x Relays - GPIO_REL1_INV, - GPIO_LED1, // 4 x Leds - GPIO_LED1_INV, - GPIO_CNTR1, // 4 x Counter - GPIO_CNTR1_NP, - GPIO_PWM1, // 5 x PWM - GPIO_PWM1_INV, - GPIO_BUZZER, // Buzzer - GPIO_BUZZER_INV, // Inverted buzzer - GPIO_LEDLNK, // Link led - GPIO_LEDLNK_INV, // Inverted link led - GPIO_I2C_SCL, // I2C SCL - GPIO_I2C_SDA, // I2C SDA - GPIO_SPI_MISO, // SPI MISO - GPIO_SPI_MOSI, // SPI MOSI - GPIO_SPI_CLK, // SPI Clk - GPIO_SPI_CS, // SPI Chip Select - GPIO_SPI_DC, // SPI Data Direction - GPIO_SSPI_MISO, // Software SPI Master Input Slave Output - GPIO_SSPI_MOSI, // Software SPI Master Output Slave Input - GPIO_SSPI_SCLK, // Software SPI Serial Clock - GPIO_SSPI_CS, // Software SPI Chip Select - GPIO_SSPI_DC, // Software SPI Data or Command - GPIO_BACKLIGHT, // Display backlight control - GPIO_OLED_RESET, // OLED Display Reset - GPIO_IRSEND, // IR remote - GPIO_IRRECV, // IR receiver - GPIO_RFSEND, // RF transmitter - GPIO_RFRECV, // RF receiver - 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 - GPIO_DSB, // Single wire DS18B20 or DS18S20 - GPIO_DSB_OUT, // Pseudo Single wire DS18B20 or DS18S20 - GPIO_WS2812, // WS2812 Led string - 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_PZEM016_RX, // PZEM-014,016 Serial Modbus interface - GPIO_PZEM017_RX, // PZEM-003,017 Serial Modbus interface - GPIO_SAIR_TX, // SenseAir Serial interface - GPIO_SAIR_RX, // SenseAir Serial interface - GPIO_PMS5003_TX, // Plantower PMS5003 Serial interface - GPIO_PMS5003_RX, // Plantower PMS5003 Serial interface - GPIO_SDS0X1_TX, // Nova Fitness SDS011 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_MP3_DFR562, // RB-DFR-562, DFPlayer Mini MP3 Player - GPIO_HX711_SCK, // HX711 Load Cell clock - GPIO_HX711_DAT, // HX711 Load Cell data - GPIO_TX2X_TXD_BLACK, // TX20/TX23 Transmission Pin - GPIO_TUYA_TX, // Tuya Serial interface - GPIO_TUYA_RX, // Tuya Serial interface - GPIO_MGC3130_XFER, // MGC3130 Transfer - GPIO_MGC3130_RESET, // MGC3130 Reset - 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_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_ARIRFSEL, // Arilux RF Receive input selected - 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_TASMOTASLAVE_TXD, // Slave TX - GPIO_TASMOTASLAVE_RXD, // Slave RX - GPIO_TASMOTASLAVE_RST, // Slave Reset Pin - GPIO_TASMOTASLAVE_RST_INV, // Slave 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_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, - ADC0_INPUT, // Analog input - ADC0_TEMP, // Thermistor - ADC0_LIGHT, // Light sensor - ADC0_BUTTON, // Button - ADC0_BUTTON_INV, - ADC0_RANGE, // Range - ADC0_CT_POWER, // Current - 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_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_ARIRFSEL "|" - 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_SLAVE_TX "|" D_SENSOR_SLAVE_RX "|" D_SENSOR_SLAVE_RESET "|" D_SENSOR_SLAVE_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_ANALOG_INPUT "|" - D_TEMPERATURE "|" D_LIGHT "|" - D_SENSOR_BUTTON "|" D_SENSOR_BUTTON "i|" - D_RANGE "|" - D_CT_POWER "|" - ; - -const char kSensorNamesFixed[] PROGMEM = - D_SENSOR_USER; - -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_SWT1) + MAX_SWITCHES, // User connected external switches - AGPIO(GPIO_SWT1_NP) + MAX_SWITCHES, - 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 - AGPIO(GPIO_SSPI_MISO), // Software SPI Master Input Slave Output - AGPIO(GPIO_SSPI_MOSI), // Software SPI Master Output Slave 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 -#endif -#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 - -// 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_RX), // F7F LE-01MR energy meter rx pin - AGPIO(GPIO_LE01MR_TX), // F7F LE-01MR energy meter tx pin -#endif // IFDEF:USE_LE01MR -#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_ZIGBEE - AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface - AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface -#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_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_SLAVE - AGPIO(GPIO_TASMOTASLAVE_TXD), // Tasmota Slave TX - AGPIO(GPIO_TASMOTASLAVE_RXD), // Tasmota Slave RX - AGPIO(GPIO_TASMOTASLAVE_RST), // Tasmota Slave Reset - AGPIO(GPIO_TASMOTASLAVE_RST_INV), // Tasmota Slave Reset Inverted -#endif -#ifdef USE_RDM6300 - AGPIO(GPIO_RDM6300_RX), -#endif -#ifdef USE_IBEACON - AGPIO(GPIO_IBEACON_RX), - AGPIO(GPIO_IBEACON_TX), -#endif -#ifdef USE_GPS - AGPIO(GPIO_GPS_RX), // GPS serial interface - AGPIO(GPIO_GPS_TX), // GPS serial interface -#endif -#ifdef USE_HM10 - AGPIO(GPIO_HM10_RX), // GPS serial interface - AGPIO(GPIO_HM10_TX), // GPS serial interface -#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 ROTARY_V1 - AGPIO(GPIO_ROT1A), // Rotary switch1 A Pin - AGPIO(GPIO_ROT1B), // Rotary switch1 B Pin - AGPIO(GPIO_ROT2A), // Rotary switch2 A Pin - AGPIO(GPIO_ROT2B), // Rotary switch2 B Pin -#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_AS3935 - AGPIO(GPIO_AS3935), -#endif -/* -#ifndef USE_ADC_VCC - AGPIO(ADC0_INPUT), // Analog input - AGPIO(ADC0_TEMP), // Thermistor - AGPIO(ADC0_LIGHT), // Light sensor - AGPIO(ADC0_BUTTON), // Button - AGPIO(ADC0_BUTTON_INV), - AGPIO(ADC0_RANGE), // Range - AGPIO(ADC0_CT_POWER), // Current -#endif -*/ -}; - -//******************************************************************************************** - -#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 = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOA6A7A0IoIoA3"; - -//******************************************************************************************** - -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 -}; - -#endif // ESP32 - -#endif // _TASMOTA_TEMPLATE_ESP32_FINAL_H_ diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index c753484d1..610798621 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,7 +20,7 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x08020005; +const uint32_t VERSION = 0x08020006; // Lowest compatible version const uint32_t VERSION_COMPATIBLE = 0x07010006; diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 0ead68da3..d22b07b5c 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -239,14 +239,6 @@ const char HTTP_SCRIPT_MODULE_TEMPLATE[] PROGMEM = "eb('g'+g).value=s;" "}"; #else // ESP32 -#ifndef FINAL_ESP32 - "var os;" - "function sk(s,g){" // s = value, g = id and name - "var o=os.replace(/}2/g,\"