From 972ad82a37ac16cead6189acf3bbeb7f4df041db Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Thu, 12 Feb 2026 20:06:25 +0100
Subject: [PATCH] Add support for second SPI bus on ethernet. Part 2 (#24433)
---
tasmota/include/tasmota_template.h | 7482 ++++++++++++++--------------
1 file changed, 3741 insertions(+), 3741 deletions(-)
diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h
index e8bcde86e..ab602d36f 100644
--- a/tasmota/include/tasmota_template.h
+++ b/tasmota/include/tasmota_template.h
@@ -1,3741 +1,3741 @@
-/*
- tasmota_template.h - template settings for Tasmota
-
- Copyright (C) 2021 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_H_
-#define _TASMOTA_TEMPLATE_H_
-
-// 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, 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_TM1638CLK, GPIO_TM1638DIO, GPIO_TM1638STB, // 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, GPIO_A4988_MS1, // A4988 interface
- GPIO_OUTPUT_HI, GPIO_OUTPUT_LO, // Fixed output state
- 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_MIEL_HVAC_TX, GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC
- GPIO_WE517_TX, GPIO_WE517_RX, // ORNO WE517 Serial interface
- GPIO_AS608_TX, GPIO_AS608_RX, // Serial interface AS608 / R503
- GPIO_SHELLY_DIMMER_BOOT0, GPIO_SHELLY_DIMMER_RST_INV,
- GPIO_RC522_RST, // RC522 reset
- GPIO_P9813_CLK, GPIO_P9813_DAT, // P9813 Clock and Data
- GPIO_OPTION_A, // Specific device options to be served in code
- GPIO_FTC532, // FTC532 touch ctrlr serial input
- GPIO_RC522_CS,
- GPIO_NRF24_CS, GPIO_NRF24_DC,
- GPIO_ILI9341_CS, GPIO_ILI9341_DC,
- GPIO_ILI9488_CS,
- GPIO_EPAPER29_CS,
- GPIO_EPAPER42_CS,
- GPIO_SSD1351_CS,
- GPIO_RA8876_CS,
- GPIO_ST7789_CS, GPIO_ST7789_DC,
- GPIO_SSD1331_CS, GPIO_SSD1331_DC,
- GPIO_SDCARD_CS,
- GPIO_ROT1A_NP, GPIO_ROT1B_NP, // Rotary switch
- GPIO_ADC_PH, // Analog PH Sensor
- GPIO_BS814_CLK, GPIO_BS814_DAT, // Holtek BS814A2 touch ctrlr
- GPIO_WIEGAND_D0, GPIO_WIEGAND_D1, // Wiegand Data lines
- GPIO_NEOPOOL_TX, GPIO_NEOPOOL_RX, // Sugar Valley RS485 interface
- GPIO_SDM72_TX, GPIO_SDM72_RX, // SDM72 Serial interface
- GPIO_TM1637CLK, GPIO_TM1637DIO, // TM1637 interface
- GPIO_PROJECTOR_CTRL_TX, GPIO_PROJECTOR_CTRL_RX, // LCD/DLP Projector Serial Control
- GPIO_SSD1351_DC,
- GPIO_XPT2046_CS, // XPT2046 SPI Chip Select
- GPIO_CSE7761_TX, GPIO_CSE7761_RX, // CSE7761 Serial interface (Dual R3)
- GPIO_VL53LXX_XSHUT1, // VL53LXX_XSHUT (the max number of sensors is VL53LXX_MAX_SENSORS)- Used when connecting multiple VL53LXX
- GPIO_MAX7219CLK, GPIO_MAX7219DIN, GPIO_MAX7219CS, // MAX7219 interface
- GPIO_TFMINIPLUS_TX, GPIO_TFMINIPLUS_RX, // TFmini Plus ToF sensor
- GPIO_ZEROCROSS,
-#ifdef ESP32
- GPIO_HALLEFFECT,
- GPIO_EPD_DATA, // Base connection EPD driver
-#endif
- GPIO_INPUT,
-#ifdef ESP32
- GPIO_KEY1_PD, GPIO_KEY1_INV_PD, GPIO_SWT1_PD,
-#endif
- GPIO_I2S_DOUT, GPIO_I2S_BCLK, GPIO_I2S_WS, GPIO_I2S_DIN,
- GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN, // Spare since 20240603
- GPIO_INTERRUPT,
- GPIO_MCP2515_CS, // MCP2515 Chip Select
- GPIO_HRG15_TX, GPIO_HRG15_RX, // Hydreon RG-15 rain sensor serial interface
- GPIO_VINDRIKTNING_RX, // IKEA VINDRIKTNING Serial interface
- GPIO_BL0939_RX, // BL0939 Serial interface (Dual R3 v2)
- GPIO_BL0942_RX, // BL0942 Serial interface
- GPIO_HM330X_SET, // HM330X SET pin (sleep when low)
- GPIO_HEARTBEAT, GPIO_HEARTBEAT_INV,
- GPIO_SHIFT595_SRCLK, GPIO_SHIFT595_RCLK, GPIO_SHIFT595_OE, GPIO_SHIFT595_SER, // 74x595 Shift register
- GPIO_SOLAXX1_RTS, // Solax Inverter Serial interface
- GPIO_OPTION_E, // Emulated module
- GPIO_SDM230_TX, GPIO_SDM230_RX, // SDM230 Serial interface
- GPIO_ADC_MQ, // Analog MQ Sensor
- GPIO_CM11_TXD, GPIO_CM11_RXD, // CM11 Serial interface
- GPIO_BL6523_TX, GPIO_BL6523_RX, // BL6523 based Watt meter Serial interface
- GPIO_ADE7880_IRQ, // ADE7880 IRQ
- GPIO_RESET, // Generic reset
- GPIO_MS01, // Sonoff MS01 Moisture Sensor 1wire interface
- GPIO_SDIO_CMD, GPIO_SDIO_CLK, GPIO_SDIO_D0, GPIO_SDIO_D1, GPIO_SDIO_D2, GPIO_SDIO_D3, // SD Card SDIO interface, including 1-bit and 4-bit modes
- GPIO_FLOWRATEMETER_IN, // Flowrate Meter
- GPIO_BP5758D_CLK, GPIO_BP5758D_DAT, // BP5758D PWM controller
- GPIO_SM2335_CLK, GPIO_SM2335_DAT, // SM2335 PWM controller
- GPIO_MP3_DFR562_BUSY, // RB-DFR-562, DFPlayer Mini MP3 Player busy flag
- GPIO_TM1621_CS, GPIO_TM1621_WR, GPIO_TM1621_RD, GPIO_TM1621_DAT, // Sonoff POWR3xxD and THR3xxD LCD display
- GPIO_REL1_BI, GPIO_REL1_BI_INV, // 8 x Relays bistable
- GPIO_I2S_MCLK,
- GPIO_MBR_TX, GPIO_MBR_RX, // Modbus Bridge Serial interface
- GPIO_ADE7953_RST, // ADE7953 Reset
- GPIO_NRG_MBS_TX, GPIO_NRG_MBS_RX, // Generic Energy Modbus device
- GPIO_ADE7953_CS, // ADE7953 SPI Chip Select
- GPIO_DALI_RX, GPIO_DALI_TX, // DALI
- GPIO_BP1658CJ_CLK, GPIO_BP1658CJ_DAT,// BP1658CJ
- GPIO_DINGTIAN_CLK, GPIO_DINGTIAN_SDI, GPIO_DINGTIAN_Q7, GPIO_DINGTIAN_PL, GPIO_DINGTIAN_RCK, // Dingtian relay board - 595's & 165's pins
- GPIO_LD2410_TX, GPIO_LD2410_RX, // HLK-LD2410
- GPIO_MBR_TX_ENA, GPIO_NRG_MBS_TX_ENA, // Modbus Bridge Serial Transmit Enable
- GPIO_ME007_TRIG, GPIO_ME007_RX, // ME007 Serial/Trigger interface
- GPIO_TUYAMCUBR_TX, GPIO_TUYAMCUBR_RX, // TuyaMCU Bridge
- GPIO_BIOPDU_PZEM0XX_TX, GPIO_BIOPDU_PZEM016_RX, GPIO_BIOPDU_BIT, // Biomine BioPDU 625x12
- GPIO_MCP23XXX_INT, GPIO_MCP23SXX_CS, // MCP23xxx Int and SPI Chip select
- GPIO_PCF8574_INT, // PCF8574 interrupt
- GPIO_LOX_O2_RX, // LOX-O2 RX
- GPIO_GM861_TX, GPIO_GM861_RX, // GM861 Serial interface
- GPIO_DINGTIAN_OE, // New version of Dingtian relay board where PL is not shared with OE
- GPIO_HDMI_CEC, // Support for HDMI CEC
- GPIO_HC8_RXD, // HC8 Serial interface
- GPIO_I2S_DAC, // Audio DAC support for ESP32 and ESP32S2
- GPIO_MAGIC_SWITCH, // MagicSwitch as in Sonoff BasicR4
- GPIO_PIPSOLAR_TX, GPIO_PIPSOLAR_RX, // pipsolar inverter
- GPIO_LORA_CS, GPIO_LORA_RST, GPIO_LORA_BUSY, GPIO_LORA_DI0, GPIO_LORA_DI1, GPIO_LORA_DI2, GPIO_LORA_DI3, GPIO_LORA_DI4, GPIO_LORA_DI5, // LoRa SPI
- GPIO_TS_SPI_CS, GPIO_TS_RST, GPIO_TS_IRQ, // SPI for Universal Touch Screen
- GPIO_RN2XX3_TX, GPIO_RN2XX3_RX, GPIO_RN2XX3_RST, // RN2XX3 LoRaWan node Serial interface
- GPIO_TCP_TX_EN, // TCP to serial bridge, EN pin
- GPIO_ASR650X_TX, GPIO_ASR650X_RX, // ASR650X LoRaWan node Serial interface
- GPIO_WOOLIIS_RX, // Wooliis Battery capacity monitor Serial RX
- GPIO_ADC_VOLTAGE, GPIO_ADC_CURRENT, // Analog Voltage and Current
- GPIO_BL0906_RX, // BL0906 Serial interface
- GPIO_DALI_RX_INV, GPIO_DALI_TX_INV, // DALI
- GPIO_LD2410S_TX, GPIO_LD2410S_RX, // HLK-LD2410S
- GPIO_I2C_SER_TX, GPIO_I2C_SER_RX, // I2C via Serial using SC18IM704 protocol (xdrv74)
- GPIO_TM1640CLK, GPIO_TM1640DIN, // TM1640 (16 x seven-segment LED controler)
- GPIO_TWAI_TX, GPIO_TWAI_RX, GPIO_TWAI_BO, GPIO_TWAI_CLK, // ESP32 TWAI serial interface
- GPIO_C8_CO2_5K_TX, GPIO_C8_CO2_5K_RX, // C8-CO2-5K CO2 Sensor
- GPIO_V9240_TX, GPIO_V9240_RX, // V9240 serial interface
- GPIO_LD2402_TX, GPIO_LD2402_RX, // HLK-LD2402
-#ifdef ESP32
- GPIO_HSDIO_CMD, GPIO_HSDIO_CLK, GPIO_HSDIO_RST, GPIO_HSDIO_D0, GPIO_HSDIO_D1, GPIO_HSDIO_D2, GPIO_HSDIO_D3, // Hosted MCU SDIO interface, including 1-bit and 4-bit modes
-#endif
- GPIO_VID6608_F, GPIO_VID6608_CW, // VID6608
- GPIO_MKSKYBLU_TX, GPIO_MKSKYBLU_RX, // MakeSkyBlue solar charge controller
- GPIO_SENSOR_END };
-
-// Error as warning to rethink GPIO usage with max 2045
-static_assert(GPIO_SENSOR_END < 2000, "Too many UserSelectablePins");
-
-enum ProgramSelectablePins {
- GPIO_FIX_START = 2046,
- GPIO_USER, // User configurable needs to be 2047
- GPIO_MAX };
-
-#define MAX_OPTIONS_A 9 // Increase if more bits are used from GpioOptionABits
-
-typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
- uint32_t data; // Allow bit manipulation using SetOption
- struct { // GPIO Option_A1 .. Option_A32
- uint32_t pwm1_input : 1; // bit 0 (v9.2.0.1) - Option_A1 - (Light) Change PWM1 to input on power off and no fade running (1)
- uint32_t dummy_energy : 1; // bit 1 (v9.3.1.2) - Option_A2 - (Energy) Enable dummy values
- uint32_t udisplay_driver : 1; // bit 2 (v9.3.1.2) - Option_A3 - (Display) Universal display driver
- uint32_t enable_ccloader : 1; // bit 3 (v9.4.0.5) - Option_A4 - (Zigbee) Enable CCLoader using Zigbee Rx/Tx/Rst Gpios
- uint32_t rotary_mi_desk : 1; // bit 4 (v9.5.0.5) - Option_A5 - (Rotary) Enable Mi Desk emulation
- uint32_t linkind_support : 1; // bit 5 (v10.1.0.4) - Option_A6 - (Light) LinkInd support
- uint32_t shelly_pro : 1; // bit 6 (v12.2.0.1) - Option_A7 - (Device) Shelly Pro
- uint32_t ifan04_h : 1; // bit 7 (v14.1.0.4) - Option_A8 - (Device) Sonoff ifan04-H
- uint32_t berry_energy : 1; // bit 8 (v14.2.0.4) - Option_A9 - (Energy) Enable Berry energy driver
- uint32_t spare09 : 1; // bit 9
- uint32_t spare10 : 1; // bit 10
- uint32_t spare11 : 1; // bit 11
- uint32_t spare12 : 1; // bit 12
- uint32_t spare13 : 1; // bit 13
- uint32_t spare14 : 1; // bit 14
- uint32_t spare15 : 1; // bit 15
- uint32_t spare16 : 1; // bit 16
- uint32_t spare17 : 1; // bit 17
- uint32_t spare18 : 1; // bit 18
- uint32_t spare19 : 1; // bit 19
- uint32_t spare20 : 1; // bit 20
- uint32_t spare21 : 1; // bit 21
- uint32_t spare22 : 1; // bit 22
- uint32_t spare23 : 1; // bit 23
- uint32_t spare24 : 1; // bit 24
- uint32_t spare25 : 1; // bit 25
- uint32_t spare26 : 1; // bit 26
- uint32_t spare27 : 1; // bit 27
- uint32_t spare28 : 1; // bit 28
- uint32_t spare29 : 1; // bit 29
- uint32_t spare30 : 1; // bit 30
- uint32_t spare31 : 1; // bit 31
- };
-} GpioOptionABits;
-
-#ifdef ESP32
-enum SupportedEmulationModules {
- SONOFF_BASIC, SONOFF_RF, SONOFF_SV, SONOFF_TH, SONOFF_DUAL, SONOFF_POW, SONOFF_4CH, SONOFF_S2X, SLAMPHER, SONOFF_TOUCH,
- SONOFF_LED, CH1, CH4, MOTOR, ELECTRODRAGON, EXS_RELAY, WION, WEMOS_DUMMY, SONOFF_DEV, H801,
- SONOFF_SC, SONOFF_BN, SONOFF_4CHPRO, HUAFAN_SS, SONOFF_BRIDGE, SONOFF_B1, AILIGHT, SONOFF_T11, SONOFF_T12, SONOFF_T13,
- SUPLA1, WITTY, YUNSHAN, MAGICHOME, LUANIHVIO, KMC_70011, ARILUX_LC01, ARILUX_LC11, SONOFF_DUAL_R2, ARILUX_LC06,
- SONOFF_S31, ZENGGE_ZF_WF017, SONOFF_POW_R2, SONOFF_IFAN02, BLITZWOLF_BWSHP, SHELLY1, SHELLY2, PHILIPS, NEO_COOLCAM, ESP_SWITCH,
- OBI, TECKIN, APLIC_WDP303075, TUYA_DIMMER, GOSUND, ARMTRONIX_DIMMERS, SK03_TUYA, PS_16_DZ, TECKIN_US, MANZOKU_EU_4,
- OBI2, YTF_IR_BRIDGE, DIGOO, KA10, ZX2820, MI_DESK_LAMP, SP10, WAGA, SYF05, SONOFF_L1,
- SONOFF_IFAN03, EXS_DIMMER, PWM_DIMMER, SONOFF_D1, SONOFF_ZB_BRIDGE,
- MAXMODULE_EMULATION };
-
-#define MAX_OPTIONS_E 1 // Increase if more emulated modules are supported from kModuleEmulationList
-
-const uint8_t kModuleEmulationList[] PROGMEM = {
- PWM_DIMMER // (v10.1.0.4) - Option_E1 - (Light) USE_PWM_DIMMER support
-};
-#endif // ESP32
-
-// 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_DISP_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_OUTPUT_HI "|" D_SENSOR_OUTPUT_LO "|"
- 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 "|"
- D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX "|"
- D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX "|"
- D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX "|"
- D_SENSOR_SHELLY_DIMMER_BOOT0 "|" D_SENSOR_SHELLY_DIMMER_RST_INV "|"
- D_SENSOR_RC522_RST "|"
- D_SENSOR_P9813_CLK "|" D_SENSOR_P9813_DAT "|"
- D_SENSOR_OPTION " A|"
- D_SENSOR_FTC532 "|"
- D_SENSOR_RC522_CS "|"
- D_SENSOR_NRF24_CS "|" D_SENSOR_NRF24_DC "|"
- D_SENSOR_ILI9341_CS "|" D_SENSOR_ILI9341_DC "|"
- D_SENSOR_ILI9488_CS "|"
- D_SENSOR_EPAPER29_CS "|"
- D_SENSOR_EPAPER42_CS "|"
- D_SENSOR_SSD1351_CS "|"
- D_SENSOR_RA8876_CS "|"
- D_SENSOR_ST7789_CS "|" D_SENSOR_ST7789_DC "|"
- D_SENSOR_SSD1331_CS "|" D_SENSOR_SSD1331_DC "|"
- D_SENSOR_SDCARD_CS "|"
- D_SENSOR_ROTARY " A_n|" D_SENSOR_ROTARY " B_n|"
- D_SENSOR_ADC_PH "|"
- D_SENSOR_BS814_CLK "|" D_SENSOR_BS814_DAT "|"
- D_SENSOR_WIEGAND_D0 "|" D_SENSOR_WIEGAND_D1 "|"
- D_SENSOR_NEOPOOL_TX "|" D_SENSOR_NEOPOOL_RX "|"
- D_SENSOR_SDM72_TX "|" D_SENSOR_SDM72_RX "|"
- D_SENSOR_TM1637_CLK "|" D_SENSOR_TM1637_DIO "|"
- D_SENSOR_PROJECTOR_CTRL_TX "|" D_SENSOR_PROJECTOR_CTRL_RX "|"
- D_SENSOR_SSD1351_DC "|"
- D_SENSOR_XPT2046_CS "|"
- D_SENSOR_CSE7761_TX "|" D_SENSOR_CSE7761_RX "|"
- D_SENSOR_VL53LXX_XSHUT "|"
- D_SENSOR_MAX7219_CLK "|" D_SENSOR_MAX7219_DIN "|" D_SENSOR_MAX7219_CS "|"
- D_SENSOR_TFMINIPLUS_TX "|" D_SENSOR_TFMINIPLUS_RX "|"
- D_SENSOR_ZEROCROSS "|"
-#ifdef ESP32
- D_SENSOR_HALLEFFECT "|"
- D_SENSOR_EPD_DATA "|"
-#endif
- D_SENSOR_INPUT "|"
-#ifdef ESP32
- D_SENSOR_BUTTON "_d|" D_SENSOR_BUTTON "_id|" D_SENSOR_SWITCH "_d|"
-#endif
- D_SENSOR_I2S_DOUT "|" D_SENSOR_I2S_BCLK "|" D_SENSOR_I2S_WS "|" D_SENSOR_I2S_DIN "|"
- D_SENSOR_I2S_BCLK_IN "|" D_SENSOR_I2S_WS_IN "|"
- D_SENSOR_INTERRUPT "|"
- D_SENSOR_MCP2515_CS "|"
- D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX "|"
- D_SENSOR_VINDRIKTNING_RX "|"
- D_SENSOR_BL0939_RX "|"
- D_SENSOR_BL0942_RX "|"
- D_SENSOR_HM330X_SET "|"
- D_SENSOR_HEARTBEAT "|" D_SENSOR_HEARTBEAT "_i|"
- D_GPIO_SHIFT595_SRCLK "|" D_GPIO_SHIFT595_RCLK "|" D_GPIO_SHIFT595_OE "|" D_GPIO_SHIFT595_SER "|"
- D_SENSOR_SOLAXX1_RTS "|"
- D_SENSOR_OPTION " E|"
- D_SENSOR_SDM230_TX "|" D_SENSOR_SDM230_RX "|"
- D_SENSOR_ADC_MQ "|"
- D_SENSOR_CM11_TX "|" D_SENSOR_CM11_RX "|"
- D_SENSOR_BL6523_TX "|" D_SENSOR_BL6523_RX "|"
- D_SENSOR_ADE7880_IRQ "|"
- D_SENSOR_RESET "|"
- D_SENSOR_MS01 "|"
- D_SENSOR_SDIO_CMD "|" D_SENSOR_SDIO_CLK "|" D_SENSOR_SDIO_D0 "|" D_SENSOR_SDIO_D1 "|" D_SENSOR_SDIO_D2 "|" D_SENSOR_SDIO_D3 "|"
- D_SENSOR_FLOWRATEMETER "|"
- D_SENSOR_BP5758D_CLK "|" D_SENSOR_BP5758D_DAT "|"
- D_SENSOR_SM2335_CLK "|" D_SENSOR_SM2335_DAT "|"
- D_SENSOR_DFR562_BUSY "|"
- D_GPIO_TM1621_CS "|" D_GPIO_TM1621_WR "|" D_GPIO_TM1621_RD "|" D_GPIO_TM1621_DAT "|"
- D_SENSOR_RELAY "_b|" D_SENSOR_RELAY "_bi|"
- D_SENSOR_I2S_MCLK "|"
- D_SENSOR_MBR_TX "|" D_SENSOR_MBR_RX "|"
- D_SENSOR_ADE7953_RST "|"
- D_SENSOR_NRG_MBS_TX "|" D_SENSOR_NRG_MBS_RX "|"
- D_SENSOR_ADE7953_CS "|"
- D_SENSOR_DALI_RX "|" D_SENSOR_DALI_TX "|"
- D_SENSOR_BP1658CJ_CLK "|" D_SENSOR_BP1658CJ_DAT "|"
- D_GPIO_DINGTIAN_CLK "|" D_GPIO_DINGTIAN_SDI "|" D_GPIO_DINGTIAN_Q7 "|" D_GPIO_DINGTIAN_PL "|" D_GPIO_DINGTIAN_RCK "|"
- D_SENSOR_LD2410_TX "|" D_SENSOR_LD2410_RX "|"
- D_SENSOR_MBR_TX_ENA "|" D_SENSOR_NRG_MBS_TX_ENA "|"
- D_SENSOR_ME007_TRIG "|" D_SENSOR_ME007_RX "|"
- D_SENSOR_TUYAMCUBR_TX "|" D_SENSOR_TUYAMCUBR_RX "|"
- D_SENSOR_BIOPDU_PZEM0XX_TX "|" D_SENSOR_BIOPDU_PZEM016_RX "|" D_SENSOR_BIOPDU_BIT "|"
- D_SENSOR_MCP23XXX_INT "|" D_SENSOR_MCP23SXX_CS "|"
- D_SENSOR_PCF8574_INT "|"
- D_SENSOR_LOX_O2_RX "|"
- D_SENSOR_GM861_TX "|" D_SENSOR_GM861_RX "|"
- D_GPIO_DINGTIAN_OE "|"
- D_SENSOR_HDMI_CEC "|"
- D_SENSOR_HC8_RX "|"
- D_SENSOR_I2S_DAC "|"
- D_GPIO_MAGIC_SWITCH "|"
- D_SENSOR_PIPSOLAR_TX "|" D_SENSOR_PIPSOLAR_RX "|"
- D_GPIO_LORA_CS "|" D_GPIO_LORA_RST "|" D_GPIO_LORA_BUSY "|" D_GPIO_LORA_DI "0|" D_GPIO_LORA_DI "1|" D_GPIO_LORA_DI "2|" D_GPIO_LORA_DI "3|" D_GPIO_LORA_DI "4|" D_GPIO_LORA_DI "5|"
- D_GPIO_TS_SPI_CS "|" D_GPIO_TS_RST "|" D_GPIO_TS_IRQ "|"
- D_GPIO_RN2XX3_TX "|" D_GPIO_RN2XX3_RX "|" D_GPIO_RN2XX3_RST "|"
- D_SENSOR_TCP_TXD_EN "|"
- D_GPIO_ASR650X_TX "|" D_GPIO_ASR650X_RX "|"
- D_SENSOR_WOOLIIS_RX "|"
- D_SENSOR_ADC_VOLTAGE "|" D_SENSOR_ADC_CURRENT "|"
- D_SENSOR_BL0906_RX "|"
- D_SENSOR_DALI_RX "_i|" D_SENSOR_DALI_TX "_i|"
- D_SENSOR_LD2410S_TX "|" D_SENSOR_LD2410S_RX "|"
- D_SENSOR_I2C_SER_TX "|" D_SENSOR_I2C_SER_RX "|"
- D_SENSOR_TM1640_CLK "|" D_SENSOR_TM1640_DIN "|"
- D_SENSOR_TWAI_TX "|" D_SENSOR_TWAI_RX "|" D_SENSOR_TWAI_BO "|" D_SENSOR_TWAI_CLK "|"
- D_SENSOR_C8_CO2_5K_TX "|" D_SENSOR_C8_CO2_5K_RX "|"
- D_SENSOR_V9240_TX "|" D_SENSOR_V9240_RX "|"
- D_SENSOR_LD2402_TX "|" D_SENSOR_LD2402_RX "|"
-#ifdef ESP32
- D_SENSOR_HSDIO_CMD "|" D_SENSOR_HSDIO_CLK "|" D_SENSOR_HSDIO_RST "|" D_SENSOR_HSDIO_D0 "|" D_SENSOR_HSDIO_D1 "|" D_SENSOR_HSDIO_D2 "|" D_SENSOR_HSDIO_D3 "|"
-#endif
- D_VID6608_F "|" D_VID6608_CW "|"
- D_SENSOR_MKSKYBLU_TX "|" D_SENSOR_MKSKYBLU_RX "|"
-;
-
-const char kSensorNamesFixed[] PROGMEM =
- D_SENSOR_USER;
-
-// Max number of GPIOs
-#define MAX_I2C 1 // Display no index if one bus
-#ifdef USE_I2C_BUS2
-#undef MAX_I2C
-#define MAX_I2C 2
-#endif
-#define MAX_MAX31855S 6
-#define MAX_MAX31865S 6
-#define MAX_MCP23XXX 6
-#define MAX_FLOWRATEMETER 2
-#define MAX_A4988_MSS 3
-#define MAX_WEBCAM_DATA 8
-#define MAX_WEBCAM_HSD 3
-#define MAX_SM2135_DAT 10
-#define MAX_SM2335_DAT 16
-#define MAX_DSB 4
-#define MAX_BP1658CJ_DAT 16
-#define MAX_DINGTIAN_SHIFT 4
-#define MAX_MAGIC_SWITCH_MODES 2
-#define MAX_BL0906_RX 6 // Model number of phases, 2 (EM2), 6 (EM6)
-#define MAX_BL0942_RX 8 // Baudrates 1/5 (4800), 2/6 (9600), 3/7 (19200), 4/8 (38400), Support Positive values only 1..4, Support also negative values 5..8
-#define MAX_CSE7761 2 // Model 1/2 (DUALR3), 2/2 (POWCT)
-#define MAX_TWAI SOC_TWAI_CONTROLLER_NUM
-#define MAX_GPS_RX 3 // Baudrates 1 (9600), 2 (19200), 3 (38400)
-#ifdef ESP32
-#define MAX_MKSKYBLU_IF 8 // MakeSkyBlue solar charger: ESP32-NRG supports up to 8 phases
-#else
-#define MAX_MKSKYBLU_IF 3 // MakeSkyBlue solar charger: ESP82xx-NRG supports up to 3 phases
-#endif
-
-const uint16_t kGpioNiceList[] PROGMEM = {
- GPIO_NONE, // Not used
- AGPIO(GPIO_OPTION_A) + AGMAX(MAX_OPTIONS_A), // Device specific options
-#ifdef ESP32
- AGPIO(GPIO_OPTION_E) + AGMAX(MAX_OPTIONS_E), // Device module emulation
-#endif
- AGPIO(GPIO_KEY1) + AGMAX(MAX_KEYS), // Buttons
- AGPIO(GPIO_KEY1_NP) + AGMAX(MAX_KEYS),
-#ifdef ESP32
- AGPIO(GPIO_KEY1_PD) + AGMAX(MAX_KEYS),
-#endif
- AGPIO(GPIO_KEY1_INV) + AGMAX(MAX_KEYS),
- AGPIO(GPIO_KEY1_INV_NP) + AGMAX(MAX_KEYS),
-#ifdef ESP32
- AGPIO(GPIO_KEY1_INV_PD) + AGMAX(MAX_KEYS),
-#if defined(SOC_TOUCH_VERSION_1) || defined(SOC_TOUCH_VERSION_2)
- AGPIO(GPIO_KEY1_TC) + AGMAX(MAX_KEYS), // Touch button
-#endif // ESP32 SOC_TOUCH_VERSION_1 or SOC_TOUCH_VERSION_2
-#endif
- AGPIO(GPIO_SWT1) + AGMAX(MAX_SWITCHES), // User connected external switches
- AGPIO(GPIO_SWT1_NP) + AGMAX(MAX_SWITCHES),
-#ifdef ESP32
- AGPIO(GPIO_SWT1_PD) + AGMAX(MAX_SWITCHES),
-#endif
-#ifdef ROTARY_V1
- AGPIO(GPIO_ROT1A) + AGMAX(MAX_ROTARIES), // Rotary A Pin
- AGPIO(GPIO_ROT1B) + AGMAX(MAX_ROTARIES), // Rotary B Pin
- AGPIO(GPIO_ROT1A_NP) + AGMAX(MAX_ROTARIES), // Rotary A Pin No Pullup
- AGPIO(GPIO_ROT1B_NP) + AGMAX(MAX_ROTARIES), // Rotary B Pin No Pullup
-#endif
- AGPIO(GPIO_REL1) + AGMAX(MAX_RELAYS), // Relays
- AGPIO(GPIO_REL1_INV) + AGMAX(MAX_RELAYS),
- AGPIO(GPIO_REL1_BI) + AGMAX(MAX_RELAYS), // Bistable (Latching) two coil relays
- AGPIO(GPIO_REL1_BI_INV) + AGMAX(MAX_RELAYS),
- AGPIO(GPIO_LED1) + AGMAX(MAX_LEDS), // Leds
- AGPIO(GPIO_LED1_INV) + AGMAX(MAX_LEDS),
-#ifdef USE_COUNTER
- AGPIO(GPIO_CNTR1) + AGMAX(MAX_COUNTERS), // Counters
- AGPIO(GPIO_CNTR1_NP) + AGMAX(MAX_COUNTERS),
-#endif
- AGPIO(GPIO_PWM1) + AGMAX(MAX_PWMS), // RGB Red or C Cold White
- AGPIO(GPIO_PWM1_INV) + AGMAX(MAX_PWMS), // or extended PWM for ESP32
-#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_BERRY
- AGPIO(GPIO_INPUT) + AGMAX(MAX_SWITCHES), // Pure digital input to be read via Berry
- AGPIO(GPIO_INTERRUPT) + AGMAX(MAX_SWITCHES), // Interrupt pins to be catched by Berry
-#endif
- AGPIO(GPIO_OUTPUT_HI), // Fixed output high
- AGPIO(GPIO_OUTPUT_LO), // Fixed output low
- AGPIO(GPIO_HEARTBEAT), // Every second pulsed high
- AGPIO(GPIO_HEARTBEAT_INV), // Every second pulsed low
- AGPIO(GPIO_RESET), // Generic reset
-#ifdef USE_FTC532
- AGPIO(GPIO_FTC532), // FTC532 touch input
-#endif
-#ifdef USE_BS814A2
- AGPIO(GPIO_BS814_CLK), // Holtek BS814A2 touch ctrlr
- AGPIO(GPIO_BS814_DAT),
-#endif
-
-/*-------------------------------------------------------------------------------------------*\
- * Protocol specifics
-\*-------------------------------------------------------------------------------------------*/
-
-#ifdef USE_I2C
- AGPIO(GPIO_I2C_SCL) + AGMAX(MAX_I2C), // I2C SCL
- AGPIO(GPIO_I2C_SDA) + AGMAX(MAX_I2C), // I2C SDA
-#ifdef USE_PCF8574
- AGPIO(GPIO_PCF8574_INT), // PCF8574 Interrupt
-#endif // USE_PCF8574
-#ifdef USE_I2C_SERIAL
- AGPIO(GPIO_I2C_SER_TX) + AGMAX(MAX_I2C), // I2C via Serial TX
- AGPIO(GPIO_I2C_SER_RX) + AGMAX(MAX_I2C), // I2C via Serial RX
-#endif // USE_I2C_SERIAL
-#endif
-
-#if defined(USE_I2S_AUDIO) || defined (USE_I2S)
- AGPIO(GPIO_I2S_MCLK) + AGMAX(MAX_I2S), // I2S master clock
- AGPIO(GPIO_I2S_BCLK) + AGMAX(MAX_I2S), // I2S bit clock
- AGPIO(GPIO_I2S_DOUT) + AGMAX(MAX_I2S), // I2S Out Data
- AGPIO(GPIO_I2S_DAC) + AGMAX(2), // I2S DAC Output
- AGPIO(GPIO_I2S_WS) + AGMAX(MAX_I2S), // I2S word select
- AGPIO(GPIO_I2S_DIN) + AGMAX(MAX_I2S), // I2S IN Data
-#endif
-
-#ifdef USE_SPI
- AGPIO(GPIO_SPI_MISO) + AGMAX(MAX_SPI), // SPI MISO
- AGPIO(GPIO_SPI_MOSI) + AGMAX(MAX_SPI), // SPI MOSI
- AGPIO(GPIO_SPI_CLK) + AGMAX(MAX_SPI), // SPI Clk
- AGPIO(GPIO_SPI_CS) + AGMAX(MAX_SPI), // SPI Chip Select
- AGPIO(GPIO_SPI_DC) + AGMAX(MAX_SPI), // SPI Data Direction
-#ifdef USE_NRF24
- AGPIO(GPIO_NRF24_CS),
- AGPIO(GPIO_NRF24_DC),
-#endif
-#ifdef USE_RC522
- AGPIO(GPIO_RC522_CS), // RC522 Rfid Chip Select
- AGPIO(GPIO_RC522_RST), // RC522 Rfid Reset
-#endif
-#ifdef USE_SDCARD
- AGPIO(GPIO_SDCARD_CS) + AGMAX(MAX_SPI), // SDCard in SPI mode
-#endif // USE_SDCARD
-#if defined(USE_MCP2515) || defined(USE_CANSNIFFER)
- AGPIO(GPIO_MCP2515_CS),
-#endif // USE_MCP2515
-#ifdef USE_MCP23XXX_DRV
- AGPIO(GPIO_MCP23SXX_CS) + AGMAX(MAX_MCP23XXX),
-#endif // USE_MCP23XXX_DRV
-#ifdef USE_SPI_LORA
- AGPIO(GPIO_LORA_CS),
- AGPIO(GPIO_LORA_RST),
- AGPIO(GPIO_LORA_BUSY),
- AGPIO(GPIO_LORA_DI0),
- AGPIO(GPIO_LORA_DI1),
- AGPIO(GPIO_LORA_DI2),
- AGPIO(GPIO_LORA_DI3),
- AGPIO(GPIO_LORA_DI4),
- AGPIO(GPIO_LORA_DI5),
-#endif // USE_SPI_LORA
-#endif // USE_SPI
-
-#if defined(USE_SDCARD) && defined(ESP32)
- AGPIO(GPIO_SDIO_CMD), // SDCard in SDIO mode
- AGPIO(GPIO_SDIO_CLK),
- AGPIO(GPIO_SDIO_D0),
- AGPIO(GPIO_SDIO_D1), // (opt) if in 4-bit mode, DAT1-3 are needed
- AGPIO(GPIO_SDIO_D2),
- AGPIO(GPIO_SDIO_D3),
-#endif // USE_SDCARD
-
- 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
-
-#if defined(USE_DISPLAY) || defined(USE_LVGL)
-#ifdef USE_UNIVERSAL_TOUCH
- AGPIO(GPIO_TS_SPI_CS), // Touch CS
- AGPIO(GPIO_TS_RST), // Touch Reset
- AGPIO(GPIO_TS_IRQ), // Touch IRQ
-#endif // USE_UNIVERSAL_TOUCH
-// REMOVED
-// #ifdef USE_DISPLAY_ILI9341
-// AGPIO(GPIO_ILI9341_CS),
-// AGPIO(GPIO_ILI9341_DC),
-// #endif // USE_DISPLAY_ILI9341
-
-#ifdef USE_XPT2046
- AGPIO(GPIO_XPT2046_CS), // XPT2046 SPI Chip Select
-#endif
-
-#ifdef USE_DISPLAY_ILI9488
- AGPIO(GPIO_ILI9488_CS),
-#endif // USE_DISPLAY_ILI9488
-#ifdef USE_DISPLAY_EPAPER_29
- AGPIO(GPIO_EPAPER29_CS),
-#endif // USE_DISPLAY_EPAPER_29
-#ifdef USE_DISPLAY_EPAPER_42
- AGPIO(GPIO_EPAPER42_CS),
-#endif // USE_DISPLAY_EPAPER_42
-// REMOVED
-// #ifdef USE_DISPLAY_SSD1351
-// AGPIO(GPIO_SSD1351_CS),
-// AGPIO(GPIO_SSD1351_DC),
-// #endif // USE_DISPLAY_SSD1351
-#ifdef USE_DISPLAY_RA8876
- AGPIO(GPIO_RA8876_CS),
-#endif // USE_DISPLAY_RA8876
-// REMOVED
-// #ifdef USE_DISPLAY_ST7789
-// AGPIO(GPIO_ST7789_CS),
-// AGPIO(GPIO_ST7789_DC),
-// #endif // USE_DISPLAY_ST7789
-// REMOVED
-// #ifdef USE_DISPLAY_SSD1331
-// AGPIO(GPIO_SSD1331_CS),
-// AGPIO(GPIO_SSD1331_DC),
-// #endif // USE_DISPLAY_SSD1331
-#ifdef USE_DISPLAY_MAX7219_MATRIX
- #undef USE_DISPLAY_MAX7219
- #undef USE_DISPLAY_TM1637
- AGPIO(GPIO_MAX7219CLK),
- AGPIO(GPIO_MAX7219DIN),
- AGPIO(GPIO_MAX7219CS),
-#endif // USE_DISPLAY_MAX7219_MATRIX
-#ifdef USE_DISPLAY_MAX7219
- AGPIO(GPIO_MAX7219CLK),
- AGPIO(GPIO_MAX7219DIN),
- AGPIO(GPIO_MAX7219CS),
-#endif // USE_DISPLAY_MAX7219
-#ifdef USE_DISPLAY_TM1637
- AGPIO(GPIO_TM1637CLK),
- AGPIO(GPIO_TM1637DIO),
- AGPIO(GPIO_TM1638CLK),
- AGPIO(GPIO_TM1638DIO),
- AGPIO(GPIO_TM1638STB),
-#endif // USE_DISPLAY_TM1637
-#ifdef USE_DISPLAY_TM1640
- AGPIO(GPIO_TM1640CLK),
- AGPIO(GPIO_TM1640DIN),
-#endif // USE_DISPLAY_TM1640
- AGPIO(GPIO_BACKLIGHT), // Display backlight control
- AGPIO(GPIO_OLED_RESET), // OLED Display Reset
-#ifdef ESP32
- AGPIO(GPIO_EPD_DATA), // Base connection EPD driver
-#endif
-#endif // USE_DISPLAY
-
-#ifdef USE_DISPLAY_TM1621_SONOFF
-// Initial support outside display driver
- AGPIO(GPIO_TM1621_CS),
- AGPIO(GPIO_TM1621_WR),
- AGPIO(GPIO_TM1621_RD),
- AGPIO(GPIO_TM1621_DAT),
-#endif // USE_DISPLAY_TM1621_SONOFF
-
-#ifdef USE_MAX31865
- AGPIO(GPIO_SSPI_MAX31865_CS1) + AGMAX(MAX_MAX31865S),
-#endif
-
-#ifdef USE_MCP23XXX_DRV
- AGPIO(GPIO_MCP23XXX_INT) + AGMAX(MAX_MCP23XXX),
-#endif
-
-#ifdef USE_HDMI_CEC
- AGPIO(GPIO_HDMI_CEC), // HDMI CEC bus
-#endif
-
- AGPIO(GPIO_TXD), // Serial interface
- AGPIO(GPIO_RXD), // Serial interface
-
-/*-------------------------------------------------------------------------------------------*\
- * Single wire sensors
-\*-------------------------------------------------------------------------------------------*/
-
-#ifdef USE_DHT
- AGPIO(GPIO_DHT11), // DHT11
- AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321
- AGPIO(GPIO_SI7021), // iTead SI7021
- AGPIO(GPIO_MS01), // Sonoff MS01
- AGPIO(GPIO_DHT11_OUT), // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321
-#endif
-#ifdef USE_DS18x20
- AGPIO(GPIO_DSB) + AGMAX(MAX_DSB), // Single wire DS18B20 or DS18S20
- AGPIO(GPIO_DSB_OUT) + AGMAX(MAX_DSB), // Pseudo Single wire DS18B20 or DS18S20
-#endif // USE_DS18x20
-#ifdef USE_LMT01
- AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO
-#endif
-
-/*-------------------------------------------------------------------------------------------*\
- * Light
-\*-------------------------------------------------------------------------------------------*/
-
-#ifdef USE_LIGHT
-#ifdef USE_WS2812
-#if (USE_WS2812_HARDWARE == NEO_HW_P9813)
- AGPIO(GPIO_P9813_CLK), // P9813 CLOCK
- AGPIO(GPIO_P9813_DAT), // P9813 DATA
-#else
- AGPIO(GPIO_WS2812) + AGMAX(MAX_RMT), // WS2812 Led string, using RMT on ESP32
-#endif // NEO_HW_P9813
-#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) + AGMAX(MAX_SM2135_DAT), // SM2135 DATA
-#endif // USE_SM2135
-#ifdef USE_SM2335
- AGPIO(GPIO_SM2335_CLK), // SM2335 CLOCK
- AGPIO(GPIO_SM2335_DAT) + AGMAX(MAX_SM2335_DAT), // SM2335 DATA
-#endif // USE_SM2335
-#ifdef USE_BP1658CJ
- AGPIO(GPIO_BP1658CJ_CLK), // BP1658CJ CLOCK
- AGPIO(GPIO_BP1658CJ_DAT) + AGMAX(MAX_BP1658CJ_DAT), // BP1658CJ DATA
-#endif // USE_BP1658CJ
-#ifdef USE_BP5758D
- AGPIO(GPIO_BP5758D_CLK), // BP5758D CLOCK
- AGPIO(GPIO_BP5758D_DAT), // BP5758D DATA
-#endif // USE_BP5758D
-#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
-#ifdef USE_SHELLY_DIMMER
- AGPIO(GPIO_SHELLY_DIMMER_BOOT0),
- AGPIO(GPIO_SHELLY_DIMMER_RST_INV),
-#endif
-#endif // USE_LIGHT
-
-#ifdef USE_DALI
- AGPIO(GPIO_DALI_TX), // DALI TX
- AGPIO(GPIO_DALI_TX_INV), // DALI TX inverted
- AGPIO(GPIO_DALI_RX), // DALI RX
- AGPIO(GPIO_DALI_RX_INV), // DALI RX inverted
-#endif // USE_DALI
-
-/*-------------------------------------------------------------------------------------------*\
- * Transmission sensors
-\*-------------------------------------------------------------------------------------------*/
-
-#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL)
- AGPIO(GPIO_IRSEND) + AGMAX(MAX_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) + AGMAX(MAX_SR04), // SR04 Tri/TXgger pin
- AGPIO(GPIO_SR04_ECHO) + AGMAX(MAX_SR04), // SR04 Ech/RXo pin
-#endif
-#ifdef USE_ME007
- AGPIO(GPIO_ME007_TRIG), // ME007 Trigger pin (xsns_23_me007.ino)
- AGPIO(GPIO_ME007_RX), // ME007 Rx pin (xsns_23_me007.ino)
-#endif
-#ifdef USE_TM1638
- AGPIO(GPIO_TM1638CLK), // TM1638 Clock
- AGPIO(GPIO_TM1638DIO), // TM1638 Data I/O
- AGPIO(GPIO_TM1638STB), // TM1638 Strobe
-#endif
-#ifdef USE_HX711
- AGPIO(GPIO_HX711_SCK), // HX711 Load Cell clock
- AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data
-#endif
-#ifdef USE_TFMINIPLUS
- AGPIO(GPIO_TFMINIPLUS_TX), // TFmini Plus TX pin
- AGPIO(GPIO_TFMINIPLUS_RX), // TFmini Plus RX pin
-#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_ADE7880)
- AGPIO(GPIO_ADE7880_IRQ) + AGMAX(2), // ADE7880 IRQ - (1 = IRQ1, 2 = IRQ2)
-#endif
-#ifdef USE_ADE7953
-#if defined(USE_I2C) || defined(USE_SPI)
- AGPIO(GPIO_ADE7953_IRQ) + AGMAX(6), // ADE7953 IRQ - (1 = Shelly 2.5, 2 = Shelly EM, 3 = Shelly Plus 2PM, 4 = Shelly Pro 1PM, 5 = Shelly Pro 2PM, 6 = Shelly Pro 4PM)
- AGPIO(GPIO_ADE7953_RST), // ADE7953 Reset
-#ifdef USE_SPI
- AGPIO(GPIO_ADE7953_CS) + AGMAX(2), // ADE7953 SPI Chip Select (1 = CS1 (1PM, 2PM), 2 = CS2 (2PM))
-#endif // USE_SPI
-#endif // USE_I2C or USE_SPI
-#endif // USE_ADE7953
-#ifdef USE_CSE7761
- AGPIO(GPIO_CSE7761_TX), // CSE7761 Serial interface (Dual R3)
- AGPIO(GPIO_CSE7761_RX) + AGMAX(MAX_CSE7761), // CSE7761 Serial interface (1 = Dual R3, 2 = POWCT)
-#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
- AGPIO(GPIO_NRG_MBS_TX_ENA), // Generic Energy Modbus Transmit Enable
-#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_MODBUS_ENERGY
- AGPIO(GPIO_NRG_MBS_TX), // Generic Energy Modbus device
- AGPIO(GPIO_NRG_MBS_RX),
-#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
- AGPIO(GPIO_SOLAXX1_RTS), // Solax Inverter RTS 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 // USE_LE01MR
-#ifdef ESP32
-#ifdef USE_BL0906
- AGPIO(GPIO_BL0906_RX) + AGMAX(MAX_BL0906_RX), // BL0906 Serial interface (Athom EM6)
-#endif // USE_BL0906
-#endif // ESP32
-#if defined(USE_BL0940) || defined(USE_BL09XX)
- AGPIO(GPIO_BL0939_RX), // BL0939 Serial interface (Dual R3 v2)
- AGPIO(GPIO_BL0940_RX), // BL0940 Serial interface
- AGPIO(GPIO_BL0942_RX) + AGMAX(MAX_BL0942_RX), // BL0942 Serial interface
-#endif
-#ifdef USE_IEM3000
- AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface
- AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface
-#endif
-#ifdef USE_WE517
- AGPIO(GPIO_WE517_TX), // WE517 Serial interface
- AGPIO(GPIO_WE517_RX), // WE517 Serial interface
-#endif
-#ifdef USE_SDM72
- AGPIO(GPIO_SDM72_TX), // SDM72 Serial interface
- AGPIO(GPIO_SDM72_RX), // SDM72 Serial interface
-#endif
- AGPIO(GPIO_ZEROCROSS),
-#ifdef USE_SDM230
- AGPIO(GPIO_SDM230_TX), // SDM230 Serial interface
- AGPIO(GPIO_SDM230_RX), // SDM230 Serial interface
-#endif
-#ifdef USE_BL6523
- AGPIO(GPIO_BL6523_TX), // BL6523 based Watt meter Serial interface
- AGPIO(GPIO_BL6523_RX), // BL6523 based Watt meter Serial interface
-#endif
-#ifdef USE_V9240
- AGPIO(GPIO_V9240_TX), // Serial V9240 interface
- AGPIO(GPIO_V9240_RX), // Serial V9240 interface
-#endif
-#ifdef USE_MAKE_SKY_BLUE
- AGPIO(GPIO_MKSKYBLU_TX) + AGMAX(MAX_MKSKYBLU_IF),
- AGPIO(GPIO_MKSKYBLU_RX) + AGMAX(MAX_MKSKYBLU_IF),
-#endif
-#endif // USE_ENERGY_SENSOR
-
-/*-------------------------------------------------------------------------------------------*\
- * Serial sensors
-\*-------------------------------------------------------------------------------------------*/
-
-#ifdef USE_SERIAL_BRIDGE
- AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface
- AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface
-#endif
-#ifdef USE_MODBUS_BRIDGE
- AGPIO(GPIO_MBR_TX_ENA), // Modbus Bridge Serial interface
- AGPIO(GPIO_MBR_TX), // Modbus Bridge Serial interface
- AGPIO(GPIO_MBR_RX), // Modbus Bridge Serial interface
-#endif
-#ifdef USE_TCP_BRIDGE
- AGPIO(GPIO_TCP_TX), // TCP Serial bridge
- AGPIO(GPIO_TCP_RX), // TCP Serial bridge
- AGPIO(GPIO_TCP_TX_EN), // TCP Serial bridge EN
-#endif
-#ifdef USE_ZIGBEE
- AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface
- AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface
- AGPIO(GPIO_ZIGBEE_RST) + AGMAX(2), // Zigbee reset, pin 1 is reset, pin 2 is bootloader mode
-#endif
-#ifdef USE_MHZ19
- AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface
- AGPIO(GPIO_MHZ_RXD), // MH-Z19 Serial interface
-#endif
-#ifdef USE_HC8
- AGPIO(GPIO_HC8_RXD), // HC8 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
-#ifdef USE_VINDRIKTNING
- AGPIO(GPIO_VINDRIKTNING_RX), // Ikea Vindriktning
-#endif
-#ifdef USE_HM330X
- AGPIO(GPIO_HM330X_SET), // HM330X Sleep pin (active low)
-#endif
-#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) || defined(USE_WS2300_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
- AGPIO(GPIO_MP3_DFR562_BUSY), // RB-DFR-562, DFPlayer Mini MP3 Player optional Busy flag
- #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) + AGMAX(MAX_GPS_RX), // GPS serial interface
-#endif
-#ifdef USE_HM10
- AGPIO(GPIO_HM10_TX), // HM10 serial interface
- AGPIO(GPIO_HM10_RX), // HM10 serial interface
-#endif
-#ifdef USE_OPENTHERM
- AGPIO(GPIO_BOILER_OT_TX),
- AGPIO(GPIO_BOILER_OT_RX),
-#endif
-#ifdef USE_AS608
- AGPIO(GPIO_AS608_TX),
- AGPIO(GPIO_AS608_RX),
-#endif
-#ifdef USE_GM861
- AGPIO(GPIO_GM861_TX),
- AGPIO(GPIO_GM861_RX),
-#endif
-#ifdef USE_HRG15
- AGPIO(GPIO_HRG15_TX),
- AGPIO(GPIO_HRG15_RX),
-#endif
-#ifdef USE_CM110x
- AGPIO(GPIO_CM11_TXD), // CM110x Serial interface
- AGPIO(GPIO_CM11_RXD), // CM110x Serial interface
-#endif
-#ifdef USE_LD2402
- AGPIO(GPIO_LD2402_TX), // HLK-LD2402 Serial interface
- AGPIO(GPIO_LD2402_RX), // HLK-LD2402 Serial interface
-#endif
-#ifdef USE_LD2410
- AGPIO(GPIO_LD2410_TX), // HLK-LD2410 Serial interface
- AGPIO(GPIO_LD2410_RX), // HLK-LD2410 Serial interface
-#endif
-#ifdef USE_LD2410S
- AGPIO(GPIO_LD2410S_TX), // HLK-LD2410S Serial interface
- AGPIO(GPIO_LD2410S_RX), // HLK-LD2410S Serial interface
-#endif
-#ifdef USE_LOX_O2
- AGPIO(GPIO_LOX_O2_RX), // LuminOx Oxygen Sensor LOX-O2 Serial interface
-#endif
-#ifdef USE_LORAWAN_RN2XX3
- AGPIO(GPIO_RN2XX3_TX),
- AGPIO(GPIO_RN2XX3_RX),
- AGPIO(GPIO_RN2XX3_RST), // RN2XX3 LoRaWan node Serial interface
-#endif
-#ifdef USE_LORAWAN_ASR650X
- AGPIO(GPIO_ASR650X_TX),
- AGPIO(GPIO_ASR650X_RX), // ASR650X LoRaWan node Serial interface
-#endif
-#ifdef USE_WOOLIIS
- AGPIO(GPIO_WOOLIIS_RX), // Wooliis Battery capacity monitor Serial interface
-#endif
-#ifdef USE_C8_CO2_5K
- AGPIO(GPIO_C8_CO2_5K_TX), // SC8-CO2-5K Serial interface
- AGPIO(GPIO_C8_CO2_5K_RX), // SC8-CO2-5K Serial interface
-#endif
-
-#ifdef ESP32
-#ifdef USE_ESP32_TWAI
-#if SOC_TWAI_SUPPORTED
- AGPIO(GPIO_TWAI_TX) + AGMAX(MAX_TWAI), // ESP32 TWAI serial interface
- AGPIO(GPIO_TWAI_RX) + AGMAX(MAX_TWAI),
- AGPIO(GPIO_TWAI_BO) + AGMAX(MAX_TWAI),
- AGPIO(GPIO_TWAI_CLK) + AGMAX(MAX_TWAI),
-#endif
-#endif
-#endif
-
-/*-------------------------------------------------------------------------------------------*\
- * Other sensors
-\*-------------------------------------------------------------------------------------------*/
-
-#ifdef USE_MGC3130
- AGPIO(GPIO_MGC3130_XFER),
- AGPIO(GPIO_MGC3130_RESET),
-#endif
-#ifdef USE_MAX31855
- AGPIO(GPIO_MAX31855CS) + AGMAX(MAX_MAX31855S), // MAX31855 Serial interface
- AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface
- AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface
-#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) + AGMAX(MAX_A4988_MSS), // A4988 microstep pin1 to 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_MIEL_HVAC
- AGPIO(GPIO_MIEL_HVAC_TX), // Mitsubishi Electric HVAC TX pin
- AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin
-#endif
-#ifdef USE_TUYAMCUBR
- AGPIO(GPIO_TUYAMCUBR_TX),
- AGPIO(GPIO_TUYAMCUBR_RX),
-#endif
-#ifdef USE_WIEGAND
- AGPIO(GPIO_WIEGAND_D0), // Data line D0 of Wiegand devices
- AGPIO(GPIO_WIEGAND_D1), // Data line D1 of Wiegand devices
-#endif
-#ifdef USE_NEOPOOL
- AGPIO(GPIO_NEOPOOL_TX), // Sugar Valley RS485 Interface
- AGPIO(GPIO_NEOPOOL_RX), // Sugar Valley RS485 Interface
-#endif
-#ifdef USE_PROJECTOR_CTRL
- AGPIO(GPIO_PROJECTOR_CTRL_TX), // LCD/DLP Projector Serial Control
- AGPIO(GPIO_PROJECTOR_CTRL_RX), // LCD/DLP Projector Serial Control
-#endif
-#if defined(USE_VL53L0X) or defined (USE_VL53L1X)
- AGPIO(GPIO_VL53LXX_XSHUT1) + AGMAX(VL53LXX_MAX_SENSORS), // When using multiple VL53LXX.
-#endif
-#ifdef USE_FLOWRATEMETER
- AGPIO(GPIO_FLOWRATEMETER_IN) + AGMAX(MAX_FLOWRATEMETER), // Flow meter Pin
-#endif
-
-#ifdef USE_SHIFT595
- AGPIO(GPIO_SHIFT595_SRCLK), // 74x595 shift register
- AGPIO(GPIO_SHIFT595_RCLK),
- AGPIO(GPIO_SHIFT595_OE),
- AGPIO(GPIO_SHIFT595_SER),
-#endif
-
-#if defined (ESP32) && defined(USE_DINGTIAN_RELAY)
- AGPIO(GPIO_DINGTIAN_CLK) + AGMAX(MAX_DINGTIAN_SHIFT), // Dingtian Relay board - 8,16,24 or 32 relays & inputs
- AGPIO(GPIO_DINGTIAN_SDI),
- AGPIO(GPIO_DINGTIAN_Q7),
- AGPIO(GPIO_DINGTIAN_PL),
- AGPIO(GPIO_DINGTIAN_OE),
- AGPIO(GPIO_DINGTIAN_RCK),
-#endif
-
-#ifdef USE_MAGIC_SWITCH
- AGPIO(GPIO_MAGIC_SWITCH) + AGMAX(MAX_MAGIC_SWITCH_MODES),
-#endif
-
-#ifdef USE_PIPSOLAR
- AGPIO(GPIO_PIPSOLAR_TX), // pipsolar inverter Serial interface
- AGPIO(GPIO_PIPSOLAR_RX), // pipsolar inverter Serial interface
-#endif
-
-/*-------------------------------------------------------------------------------------------*\
- * ESP32 specifics
-\*-------------------------------------------------------------------------------------------*/
-
-#ifdef ESP32
-#if CONFIG_IDF_TARGET_ESP32
- AGPIO(GPIO_HALLEFFECT) + AGMAX(2), // Hall effect sensor connected to GPIO36 and 39
-#endif // CONFIG_IDF_TARGET_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) + AGMAX(MAX_WEBCAM_DATA),
- AGPIO(GPIO_WEBCAM_VSYNC),
- AGPIO(GPIO_WEBCAM_HREF),
- AGPIO(GPIO_WEBCAM_PCLK),
- AGPIO(GPIO_WEBCAM_PSCLK),
- AGPIO(GPIO_WEBCAM_HSD) + AGMAX(MAX_WEBCAM_HSD),
- AGPIO(GPIO_WEBCAM_PSRCS),
-#endif // USE_WEBCAM
-#ifdef USE_ETHERNET
- AGPIO(GPIO_ETH_PHY_POWER),
- AGPIO(GPIO_ETH_PHY_MDC),
- AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet
-#endif // USE_ETHERNET
-#ifdef USE_BIOPDU
- AGPIO(GPIO_BIOPDU_PZEM0XX_TX), // Biomine BioPDU pins
- AGPIO(GPIO_BIOPDU_PZEM016_RX),
- AGPIO(GPIO_BIOPDU_BIT) + AGMAX(3),
-#endif
-#ifdef CONFIG_ESP_WIFI_REMOTE_ENABLED
- AGPIO(GPIO_HSDIO_CMD), // Hosted MCU SDIO interface, including 1-bit and 4-bit modes
- AGPIO(GPIO_HSDIO_CLK),
- AGPIO(GPIO_HSDIO_RST),
- AGPIO(GPIO_HSDIO_D0),
- AGPIO(GPIO_HSDIO_D1),
- AGPIO(GPIO_HSDIO_D2),
- AGPIO(GPIO_HSDIO_D3),
-#endif // CONFIG_ESP_WIFI_REMOTE_ENABLED
-
-/*-------------------------------------------------------------------------------------------*\
- * ESP32 multiple Analog / Digital converter inputs
-\*-------------------------------------------------------------------------------------------*/
-
- AGPIO(GPIO_ADC_INPUT) + AGMAX(MAX_ADCS), // Analog inputs
- AGPIO(GPIO_ADC_TEMP) + AGMAX(MAX_ADCS), // Thermistor
- AGPIO(GPIO_ADC_LIGHT) + AGMAX(MAX_ADCS), // Light sensor
- AGPIO(GPIO_ADC_BUTTON) + AGMAX(MAX_KEYS), // Button
- AGPIO(GPIO_ADC_BUTTON_INV) + AGMAX(MAX_KEYS),
- AGPIO(GPIO_ADC_RANGE) + AGMAX(MAX_ADCS), // Range
- AGPIO(GPIO_ADC_CT_POWER) + AGMAX(MAX_ADCS), // Current
- AGPIO(GPIO_ADC_JOY) + AGMAX(MAX_ADCS), // Joystick
- AGPIO(GPIO_ADC_PH) + AGMAX(MAX_ADCS), // Analog PH Sensor
- AGPIO(GPIO_ADC_MQ) + AGMAX(MAX_ADCS), // Analog MQ Sensor
- AGPIO(GPIO_ADC_VOLTAGE) + AGMAX(MAX_ADCS), // Voltage
- AGPIO(GPIO_ADC_CURRENT) + AGMAX(MAX_ADCS), // Current
-#endif // ESP32
-
-
-#ifdef USE_VID6608
- AGPIO(GPIO_VID6608_F) + AGMAX(4), // VID6608 step interface (max 4 motors)
- AGPIO(GPIO_VID6608_CW) + AGMAX(4), // VID6608 direction interface (max 4 motors)
-#endif
-
-};
-
-/*-------------------------------------------------------------------------------------------*\
- * ESP8266 single Analog / Digital converter input
-\*-------------------------------------------------------------------------------------------*/
-
-#ifdef ESP8266
-const uint16_t kAdcNiceList[] PROGMEM = {
- GPIO_NONE, // Not used
- AGPIO(GPIO_ADC_INPUT), // Analog inputs
- AGPIO(GPIO_ADC_TEMP), // Thermistor
- AGPIO(GPIO_ADC_LIGHT), // Light sensor
- AGPIO(GPIO_ADC_BUTTON) + AGMAX(MAX_KEYS), // Button
- AGPIO(GPIO_ADC_BUTTON_INV) + AGMAX(MAX_KEYS),
- AGPIO(GPIO_ADC_RANGE), // Range
- AGPIO(GPIO_ADC_CT_POWER), // Current
- AGPIO(GPIO_ADC_JOY), // Joystick
- AGPIO(GPIO_ADC_PH), // Analog PH Sensor
- AGPIO(GPIO_ADC_MQ), // Analog MQ Sensor
- AGPIO(GPIO_ADC_VOLTAGE), // Voltage
- AGPIO(GPIO_ADC_CURRENT), // Current
-};
-#endif // ESP8266
-
-/*********************************************************************************************\
- * ATTENTION: No user changeable features beyond this point - do not add templates !!!
-\*********************************************************************************************/
-
-#define GPIO_ANY 32 // Any GPIO
-
-#ifdef ESP8266
-
-#define MAX_GPI8_PIN 17 // Number of supported GPIO (0..16)
-#define FLASH_PINS 6 // Number of flash chip pins
-
-#define MAX_GPIO_PIN 18 // Number of supported GPIO (0..16 + ADC0)
-#define ADC0_PIN 17 // Pin number of 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
-
-#endif // ESP8266
-
-#ifdef ESP32
-#if CONFIG_IDF_TARGET_ESP32C2
-
-/* ****************************************
- * ESP32C2
- * ****************************************/
-#define MAX_GPIO_PIN 21 // Number of supported GPIO
-#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO11 to 17)
-#define MAX_USER_PINS 21 // MAX_GPIO_PIN - MIN_FLASH_PINS
-#define WEMOS_MODULE 0 // Wemos module
-
-// 0 1 2 3 4 5 6 7 8 91011121314151617181920
-const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOIOIOIOIOIOIOFLFLFLFLFLFLFLIORXTX";
-
-#elif CONFIG_IDF_TARGET_ESP32C3
-
-/* ****************************************
- * ESP32C3
- * ****************************************/
-#define MAX_GPIO_PIN 22 // Number of supported GPIO
-#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO11 to 17)
-#define MAX_USER_PINS 22 // MAX_GPIO_PIN - MIN_FLASH_PINS
-#define WEMOS_MODULE 0 // Wemos module
-
-// 0 1 2 3 4 5 6 7 8 9101112131415161718192021
-const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOIOIOIOIOIOFLFLFLFLFLFLFLIOIORXTX";
-
-#elif CONFIG_IDF_TARGET_ESP32C5 // ESP32-C5
-/* ****************************************
- * ESP32C5
- * ****************************************/
-#define MAX_GPIO_PIN 29 // Number of supported GPIO
-#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO16-22 SPI0/1)
-#define MAX_USER_PINS 29 // MAX_GPIO_PIN - MIN_FLASH_PINS
-#define WEMOS_MODULE 0 // Wemos module
-
-// 0 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829
-const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOIOIOIOIOIOIOIOFLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIO";
-
-#elif CONFIG_IDF_TARGET_ESP32C6
-
-/* ****************************************
- * ESP32C6
- * ****************************************/
-#define MAX_GPIO_PIN 31 // Number of supported GPIO
-#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO24 to 30)
-#define MAX_USER_PINS 31 // MAX_GPIO_PIN - MIN_FLASH_PINS
-#define WEMOS_MODULE 0 // Wemos module
-
-// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930
-const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOAOIOIOIOIOIOIOIOIOIOTXRXIOIOIOIOIOIOFLFLFLFLFLFLFL";
-
-#elif CONFIG_IDF_TARGET_ESP32S2
-
-/* ****************************************
- * ESP32S2
- * ****************************************/
-#define MAX_GPIO_PIN 47 // Number of supported GPIO
-#define MIN_FLASH_PINS 11 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI)
-#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 910111213141516171819202122232425262728293031323334353637383940414243444546
-const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOIO--------FLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOI ";
-
-#elif CONFIG_IDF_TARGET_ESP32S3
-/* ****************************************
- * ESP32S3
- * GPIOs 0..21 + 33..48
- * - 22..25 are not used
- * - 26..32 are used for SPI Flash
- * - 33..37 are used by PSRAM
- * ****************************************/
-#define MAX_GPIO_PIN 49 // Number of supported GPIO, 0..48
-#define MIN_FLASH_PINS 11 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI)
-#define MAX_USER_PINS 38 // MAX_GPIO_PIN - MIN_FLASH_PINS
-#define WEMOS_MODULE 0 // Wemos module
-
-// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748
-const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOIO--------FLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIO";
-
-#elif CONFIG_IDF_TARGET_ESP32P4
-/* ****************************************
- * ESP32P4
- * GPIOs 0..54
- * - 34..38 strapping pins
- * ****************************************/
-#define MAX_GPIO_PIN 55 // Number of supported GPIO, 0..55
-#define MIN_FLASH_PINS 00 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI)
-#define MAX_USER_PINS 55 // MAX_GPIO_PIN - MIN_FLASH_PINS
-#define WEMOS_MODULE 0 // Wemos module
-
-// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
-const char PINS_WEMOS[] PROGMEM = "IOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOAOAOAOAOAOAOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOAOAOAOAO";
-
-#else // not CONFIG_IDF_TARGET_ESP32C2/C3/C6 nor CONFIG_IDF_TARGET_ESP32S2 - ESP32
-
-/* ****************************************
- * ESP32 - including Pico
- *
- * The initial template was 0-5 9-10 12-39
- * New template covers 0-27 32-39
- * However to maintain backwards compatibility, the following mapping occures
- * Template GPIO | Phyiscal GPIO
- * 28 | 6
- * 29 | 7
- * 30 | 8
- * 31 | 11
- * ****************************************/
-// Conversion table
-#define ESP32_TEMPLATE_TO_PHY \
- 0, 1, 2, 3, 4, 5, \
- 9, 10, \
- 12, 13, 14, 15, 16, 17, 18, 19, \
- 20, 21, 22, 23, 24, 25, 26, 27, \
- 6, 7, 8, 11, /* 28-31 */ \
- 32, 33, 34, 35, 36, 37, 38, 39
-
-#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 = "IOTXIORXIOIOFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIO--------AOAOIAIAIAIAIAIA";
-
-#endif // ESP32/S2/C2/C3/C6/P4 selection
-#endif // ESP32
-
-/********************************************************************************************\
- * !!! Changes in below type sizes impact Settings layout - Add fill bytes in Settings !!!
-\********************************************************************************************/
-
-typedef struct MYIO {
- uint16_t io[MAX_GPIO_PIN];
-} myio; // ESP8266: 18*2 = 36 bytes / ESP32: 40*2 = 80 bytes / ESP32-C3: 22*2 = 44 bytes / ESP32-S2: 47*2 = 94 bytes / ESP32-S3: 49*2 = 98 bytes
-
-typedef struct MYCFGIO {
- uint16_t io[MAX_USER_PINS];
-} mycfgio; // ESP8266: 14*2 = 28 bytes / ESP32: 36*2 = 72 bytes / ESP32-C3: 22*2 = 44 bytes / ESP32-S2: 36*2 = 72 bytes / ESP32-S3: 33*2 = 66 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 / 44 / 72 bytes
- gpio_flag flag; // 2 bytes
-} mytmplt; // 30 / 74 / 46 / 74 bytes
-
-//********************************************************************************************
-
-#ifdef ESP8266
-#include "include/tasmota_template_legacy.h"
-
-/********************************************************************************************\
- * ESP8266 Module Templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported ESP8266 hardware modules
-enum SupportedModulesESP8266 {
- SONOFF_BASIC, SONOFF_RF, SONOFF_SV, SONOFF_TH, SONOFF_DUAL, SONOFF_POW, SONOFF_4CH, SONOFF_S2X, SLAMPHER, SONOFF_TOUCH,
- SONOFF_LED, CH1, CH4, MOTOR, ELECTRODRAGON, EXS_RELAY, WION, WEMOS, SONOFF_DEV, H801,
- SONOFF_SC, SONOFF_BN, SONOFF_4CHPRO, HUAFAN_SS, SONOFF_BRIDGE, SONOFF_B1, AILIGHT, SONOFF_T11, SONOFF_T12, SONOFF_T13,
- SUPLA1, WITTY, YUNSHAN, MAGICHOME, LUANIHVIO, KMC_70011, ARILUX_LC01, ARILUX_LC11, SONOFF_DUAL_R2, ARILUX_LC06,
- SONOFF_S31, ZENGGE_ZF_WF017, SONOFF_POW_R2, SONOFF_IFAN02, BLITZWOLF_BWSHP, SHELLY1, SHELLY2, PHILIPS, NEO_COOLCAM, ESP_SWITCH,
- OBI, TECKIN, APLIC_WDP303075, TUYA_DIMMER, GOSUND, ARMTRONIX_DIMMERS, SK03_TUYA, PS_16_DZ, TECKIN_US, MANZOKU_EU_4,
- OBI2, YTF_IR_BRIDGE, DIGOO, KA10, ZX2820, MI_DESK_LAMP, SP10, WAGA, SYF05, SONOFF_L1,
- SONOFF_IFAN03, EXS_DIMMER, PWM_DIMMER, SONOFF_D1, SONOFF_ZB_BRIDGE,
- MAXMODULE };
-
-const char kModuleNames[] PROGMEM =
- "Sonoff Basic|Sonoff RF|Sonoff SV|Sonoff TH|Sonoff Dual|Sonoff Pow|Sonoff 4CH|Sonoff S2X|Slampher|Sonoff Touch|"
- "Sonoff LED|1 Channel|4 Channel|Motor C/AC|ElectroDragon|EXS Relay(s)|WiOn|Generic|Sonoff Dev|H801|"
- "Sonoff SC|Sonoff BN-SZ|Sonoff 4CH Pro|Huafan SS|Sonoff Bridge|Sonoff B1|AiLight|Sonoff T1 1CH|Sonoff T1 2CH|Sonoff T1 3CH|"
- "Supla Espablo|Witty Cloud|Yunshan Relay|MagicHome|Luani HVIO|KMC 70011|Arilux LC01|Arilux LC11|Sonoff Dual R2|Arilux LC06|"
- "Sonoff S31|Zengge WF017|Sonoff Pow R2|Sonoff iFan02|BlitzWolf SHP|Shelly 1|Shelly 2|Xiaomi Philips|Neo Coolcam|ESP Switch|"
- "OBI Socket|Teckin|AplicWDP303075|Tuya MCU|Gosund SP1 v23|ARMTR Dimmer|SK03 Outdoor|PS-16-DZ|Teckin US|Manzoku strip|"
- "OBI Socket 2|YTF IR Bridge|Digoo DG-SP202|KA10|Luminea ZX2820|Mi Desk Lamp|SP10|WAGA CHCZ02MB|SYF05|Sonoff L1|"
- "Sonoff iFan03|EXS Dimmer|PWM Dimmer|Sonoff D1|Sonoff ZbBridge"
- ;
-
-const uint8_t kModuleNiceList[] PROGMEM = {
- SONOFF_BASIC, // Sonoff Relay Devices
- SONOFF_RF,
- SONOFF_TH,
- SONOFF_DUAL,
- SONOFF_DUAL_R2,
- SONOFF_POW,
- SONOFF_POW_R2,
- SONOFF_4CH,
- SONOFF_4CHPRO,
- SONOFF_S31, // Sonoff Socket Relay Devices with Energy Monitoring
- SONOFF_S2X, // Sonoff Socket Relay Devices
- SONOFF_TOUCH, // Sonoff Switch Devices
- SONOFF_T11,
- SONOFF_T12,
- SONOFF_T13,
-#ifdef USE_SONOFF_D1
- SONOFF_D1, // Sonoff D1
-#endif
- SONOFF_LED, // Sonoff Light Devices
- SONOFF_BN,
-#ifdef USE_SONOFF_L1
- SONOFF_L1,
-#endif
- SONOFF_B1, // Sonoff Light Bulbs
- SLAMPHER,
-#ifdef USE_SONOFF_SC
- SONOFF_SC, // Sonoff Environmemtal Sensor
-#endif
-#ifdef USE_SONOFF_IFAN
- SONOFF_IFAN02, // Sonoff Fan
- SONOFF_IFAN03,
-#endif
-#ifdef USE_SONOFF_RF
- SONOFF_BRIDGE, // Sonoff Bridge
-#endif
-#ifdef USE_ZIGBEE_EZSP
- SONOFF_ZB_BRIDGE,
-#endif
- SONOFF_SV, // Sonoff Development Devices
- SONOFF_DEV,
- CH1, // Relay Devices
- CH4,
- MOTOR,
- ELECTRODRAGON,
- EXS_RELAY,
- SUPLA1,
- LUANIHVIO,
- YUNSHAN,
- WION,
- SHELLY1,
- SHELLY2,
- BLITZWOLF_BWSHP, // Socket Relay Devices with Energy Monitoring
- TECKIN,
- TECKIN_US,
- APLIC_WDP303075,
- GOSUND,
- ZX2820,
- SK03_TUYA,
- DIGOO,
- KA10,
- SP10,
- WAGA,
- NEO_COOLCAM, // Socket Relay Devices
- OBI,
- OBI2,
- MANZOKU_EU_4,
- ESP_SWITCH, // Switch Devices
-#ifdef USE_TUYA_MCU
- TUYA_DIMMER, // Dimmer Devices
-#endif
-#ifdef USE_ARMTRONIX_DIMMERS
- ARMTRONIX_DIMMERS,
-#endif
-#ifdef USE_PS_16_DZ
- PS_16_DZ,
-#endif
-#ifdef USE_EXS_DIMMER
- EXS_DIMMER,
-#endif
-#ifdef USE_PWM_DIMMER
- PWM_DIMMER,
-#endif
- H801, // Light Devices
- MAGICHOME,
- ARILUX_LC01,
- ARILUX_LC06,
- ARILUX_LC11,
- ZENGGE_ZF_WF017,
- HUAFAN_SS,
-#ifdef ROTARY_V1
- MI_DESK_LAMP,
-#endif
- KMC_70011,
- AILIGHT, // Light Bulbs
- PHILIPS,
- SYF05,
- YTF_IR_BRIDGE,
- WITTY, // Development Devices
- WEMOS
-};
-
-enum SupportedTemplates8285 {
- TMP_SONOFF_BASIC, TMP_SONOFF_SV, TMP_SONOFF_DUAL, TMP_SONOFF_POW, TMP_SONOFF_LED, TMP_ELECTRODRAGON,
- TMP_EXS_RELAY, TMP_WION, TMP_SONOFF_DEV, TMP_H801, TMP_SONOFF_SC, TMP_SONOFF_BN, TMP_HUAFAN_SS, TMP_SONOFF_BRIDGE,
- TMP_SONOFF_B1, TMP_AILIGHT, TMP_SONOFF_T11, TMP_SUPLA1, TMP_WITTY, TMP_YUNSHAN, TMP_MAGICHOME,
- TMP_LUANIHVIO, TMP_KMC_70011, TMP_ARILUX_LC01, TMP_ARILUX_LC11, TMP_ARILUX_LC06, TMP_ZENGGE_ZF_WF017,
- TMP_SONOFF_POW_R2, TMP_BLITZWOLF_BWSHP, TMP_SHELLY1, TMP_SHELLY2, TMP_PHILIPS, TMP_NEO_COOLCAM, TMP_ESP_SWITCH, TMP_OBI,
- TMP_TECKIN, TMP_APLIC_WDP303075, TMP_TUYA_DIMMER, TMP_GOSUND, TMP_ARMTRONIX_DIMMERS, TMP_SK03_TUYA, TMP_PS_16_DZ,
- TMP_TECKIN_US, TMP_MANZOKU_EU_4, TMP_OBI2, TMP_YTF_IR_BRIDGE, TMP_DIGOO, TMP_KA10, TMP_ZX2820, TMP_MI_DESK_LAMP, TMP_SP10,
- TMP_WAGA, TMP_SYF05, TMP_EXS_DIMMER, TMP_PWM_DIMMER, TMP_SONOFF_ZB_BRIDGE,
- TMP_MAXMODULE_8285 };
-
-enum SupportedTemplates8266 {
- TMP_WEMOS = TMP_MAXMODULE_8285, TMP_SONOFF_4CH, TMP_SONOFF_T12, TMP_SONOFF_T13, TMP_SONOFF_DUAL_R2, TMP_SONOFF_IFAN03,
- TMP_MAXMODULE_8266 };
-
-const uint8_t kModuleTemplateList[MAXMODULE] PROGMEM = {
- TMP_SONOFF_BASIC,
- TMP_SONOFF_BASIC, // SONOFF_RF
- TMP_SONOFF_SV,
- TMP_SONOFF_BASIC, // SONOFF_TH
- TMP_SONOFF_DUAL,
- TMP_SONOFF_POW,
- TMP_SONOFF_4CH,
- TMP_SONOFF_BASIC, // SONOFF_S2X
- TMP_SONOFF_BASIC, // SLAMPHER
- TMP_SONOFF_T11, // SONOFF_TOUCH
- TMP_SONOFF_LED,
- TMP_SONOFF_BASIC, // CH1
- TMP_SONOFF_DUAL, // CH4
- TMP_SONOFF_BASIC, // MOTOR
- TMP_ELECTRODRAGON,
- TMP_EXS_RELAY,
- TMP_WION,
- TMP_WEMOS,
- TMP_SONOFF_DEV,
- TMP_H801,
- TMP_SONOFF_SC,
- TMP_SONOFF_BN,
- TMP_SONOFF_4CH, // SONOFF_4CHPRO
- TMP_HUAFAN_SS,
- TMP_SONOFF_BRIDGE,
- TMP_SONOFF_B1,
- TMP_AILIGHT,
- TMP_SONOFF_T11,
- TMP_SONOFF_T12,
- TMP_SONOFF_T13,
- TMP_SUPLA1,
- TMP_WITTY,
- TMP_YUNSHAN,
- TMP_MAGICHOME,
- TMP_LUANIHVIO,
- TMP_KMC_70011,
- TMP_ARILUX_LC01,
- TMP_ARILUX_LC11,
- TMP_SONOFF_DUAL_R2,
- TMP_ARILUX_LC06,
- TMP_SONOFF_POW_R2, // SONOFF_S31
- TMP_ZENGGE_ZF_WF017,
- TMP_SONOFF_POW_R2,
- TMP_SONOFF_4CH, // SONOFF_IFAN02
- TMP_BLITZWOLF_BWSHP,
- TMP_SHELLY1,
- TMP_SHELLY2,
- TMP_PHILIPS,
- TMP_NEO_COOLCAM,
- TMP_ESP_SWITCH,
- TMP_OBI,
- TMP_TECKIN,
- TMP_APLIC_WDP303075,
- TMP_TUYA_DIMMER,
- TMP_GOSUND,
- TMP_ARMTRONIX_DIMMERS,
- TMP_SK03_TUYA,
- TMP_PS_16_DZ,
- TMP_TECKIN_US,
- TMP_MANZOKU_EU_4,
- TMP_OBI2,
- TMP_YTF_IR_BRIDGE,
- TMP_DIGOO,
- TMP_KA10,
- TMP_ZX2820,
- TMP_MI_DESK_LAMP,
- TMP_SP10,
- TMP_WAGA,
- TMP_SYF05,
- TMP_SONOFF_DUAL, // SONOFF_L1
- TMP_SONOFF_IFAN03,
- TMP_EXS_DIMMER,
- TMP_PWM_DIMMER,
- TMP_SONOFF_DUAL, // SONOFF_D1
- TMP_SONOFF_ZB_BRIDGE,
- };
-
-/*********************************************************************************************\
- * Templates with 12 usable pins (ESP8266)
-\*********************************************************************************************/
-
-const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = {
- { // SONOFF_BASIC - Sonoff Basic (ESP8266)
- 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)
- // 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)
- 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)
- GPI8_KEY1, // GPIO00 Button
- GPI8_USER, // GPIO01 Serial RXD and Optional sensor
- 0,
- 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)
- 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,
- GPI8_USER // ADC0 Analog input
- },
- { // SONOFF_DUAL - Sonoff Dual (ESP8266)
- GPI8_USER, // GPIO00 Pad
- GPI8_TXD, // GPIO01 Relay control
- 0,
- GPI8_RXD, // GPIO03 Relay control
- GPI8_USER, // GPIO04 Optional sensor
- 0,
- // 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)
- 0,
- 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)
- GPI8_KEY1, // GPIO00 Button
- 0, 0, 0, 0,
- 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)
- 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)
- GPI8_KEY1, // GPIO00 Button
- 0, 0, 0,
- 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)
- 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)
- 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)
- 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
- 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)
- 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
- GPI8_USER, // GPIO00 Optional sensor (pm clock)
- 0,
- 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)
- // 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)
- GPI8_USER, // GPIO12 Optional sensor (pm data)
- GPI8_KEY1, // GPIO13 Button
- 0,
- GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On)
- 0, 0
- },
- { // SONOFF_DEV - Sonoff Dev (ESP8266)
- GPI8_KEY1, // GPIO00 E-FW Button
- GPI8_USER, // GPIO01 TX Serial RXD and Optional sensor
- 0, // GPIO02
- 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)
- GPI8_USER, // GPIO12
- GPI8_USER, // GPIO13 BLUE LED
- GPI8_USER, // GPIO14 Optional sensor
- 0, // GPIO15
- 0, // GPIO16
- GPI8_USER // ADC0 A0 Analog input
- },
- { // H801 - Lixada H801 Wifi (ESP8266)
- 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)
- GPI8_PWM3, // GPIO12 Blue
- GPI8_PWM2, // GPIO13 Green
- GPI8_PWM4, // GPIO14 W1 - PWM4
- GPI8_PWM1, // GPIO15 Red
- 0, 0
- },
- { // SONOFF_SC - onoff SC (ESP8266)
- 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)
- // 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)
- 0,
- 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)
- 0, 0, 0, 0, 0, 0,
- // 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)
- 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
- GPI8_LEDLNK_INV, // GPIO00 Blue Led (0 = On, 1 = Off) - Link status
- 0, 0,
- 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)
- 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)
- 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)
- 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)
- 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)
- // 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)
- GPI8_DI, // GPIO12 my9231 DI
- 0,
- GPI8_DCKI, // GPIO14 my9231 DCKI
- 0, 0, 0
- },
- { // AILIGHT - Ai-Thinker RGBW led (ESP8266 - my9291)
- 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)
- // 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)
- 0,
- GPI8_DI, // GPIO13 my9291 DI
- 0,
- GPI8_DCKI, // GPIO15 my9291 DCKI
- 0, 0
- },
- { // SONOFF_T11 - Sonoff T1 1CH (ESP8285)
- 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)
- // 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)
- 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
- GPI8_USER, // GPIO01 Serial RXD and Optional sensor
-#ifdef USE_DS18x20
- GPI8_DSB, // GPIO02 DS18B20 sensor
-#else
- GPI8_USER, // GPIO02 Optional sensor
-#endif
- 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)
- GPI8_USER, // GPIO12 Optional sensor
- GPI8_REL2, // GPIO13 Relay 2 (0 = Off, 1 = On)
- GPI8_USER, // GPIO14 Optional sensor
- 0,
- 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
- 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)
- 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
- 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)
- // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
- // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
- // GPIO11 (SD_CMD Flash)
- 0, 0, 0, 0, 0, 0
- },
- { // 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,
- 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)
- 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
- 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)
- 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,
- GPI8_USER // ADC0 A0 Analog input
- },
- { // KMC_70011 - KMC 70011
- // https://www.amazon.com/KMC-Timing-Monitoring-Network-125V-240V/dp/B06XRX2GTQ
- GPI8_KEY1, // GPIO00 Button
- 0, 0, 0,
- 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)
- 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)
- 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)
- 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)
- 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)
- 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
- 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)
- // 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)
- 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
- GPI8_KEY1, // GPIO00 Optional Button
- 0,
- GPI8_USER, // GPIO02 Empty pad
- 0,
- GPI8_USER, // GPIO04 W2 - PWM5
- 0,
- // 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)
- 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)
- GPI8_KEY1, // GPIO00 Button
- GPI8_CSE7766_TX, // GPIO01 Serial RXD 4800 baud 8E1 CSE7766 energy sensor
- 0,
- GPI8_CSE7766_RX, // GPIO03 Serial TXD
- 0, 0,
- // 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)
- 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)
- // https://www.banggood.com/BlitzWolf-BW-SHP2-Smart-WIFI-Socket-EU-Plug-220V-16A-Work-with-Amazon-Alexa-Google-Assistant-p-1292899.html
- // 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
- 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,
- 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)
- 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/
- 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,
- 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)
- // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
- // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
- // GPIO11 (SD_CMD Flash)
- 0, 0, 0, 0, 0, 0
- },
- { // SHELLY2 - Shelly2 (ESP8266 - 2MB) - https://shelly.cloud/shelly2/
- 0,
- GPI8_MCP39F5_TX, // GPIO01 MCP39F501 Serial input
- 0,
- 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)
- GPI8_SWT1, // GPIO12
- 0,
- GPI8_SWT2, // GPIO14
- GPI8_MCP39F5_RST, // GPIO15 MCP39F501 Reset
- 0,
- 0
- },
- { // PHILIPS - Xiaomi Philips bulb (ESP8266)
- 0, 0, 0, 0, 0, 0,
- // 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)
- GPI8_PWM2, // GPIO12 cold/warm light
- 0, 0,
- 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,
- 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)
- // 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)
- 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
- 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)
- 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
- GPI8_USER, // GPIO00
- GPI8_USER, // GPIO01 Serial RXD
- 0,
- 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)
- GPI8_LED3, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05)
- GPI8_USER, // GPIO13
- GPI8_KEY1, // GPIO14 Button
- 0,
- GPI8_USER, // GPIO16
- GPI8_USER // ADC0 A0 Analog input
- },
- { // TECKIN - https://www.amazon.de/gp/product/B07D5V139R
- 0,
- GPI8_KEY1, // GPIO01 Serial TXD and Button
- 0,
- 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)
- 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,
- 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)
- 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
- 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)
- GPI8_USER,
- GPI8_USER,
- GPI8_USER, // GPIO14 Green Led
- GPI8_USER,
- GPI8_USER,
- 0
- },
- { // GOSUND - https://www.amazon.de/gp/product/B0777BWS1P
- 0,
- GPI8_LEDLNK_INV, // GPIO01 Serial RXD and LED1 (blue) inv - Link status
- 0,
- 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)
- 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/
- 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)
- 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
- GPI8_KEY1, // GPIO00 Button
- 0, 0, 0,
- 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)
- 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
- 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)
- 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
- GPI8_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status
- 0,
- GPI8_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status
- 0,
- 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)
- 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
- // https://www.amazon.de/Steckdosenleiste-AOFO-Mehrfachsteckdose-ĂƒÅ“berspannungsschutz-Sprachsteuerung/dp/B07GBSD11P/
- // https://www.amazon.de/Steckdosenleiste-Geekbes-USB-Anschluss-Kompatibel-gesteuert/dp/B078W23BW9/
- 0, // GPIO00
- 0, // GPIO01 Serial RXD
- 0,
- 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)
- GPI8_REL3, // GPIO12 Relay 3
- GPI8_REL4, // GPIO13 Relay 4
- GPI8_USER, // GPIO14
- 0,
- GPI8_USER, // GPIO16
- 0
- },
- { // OBI2 - OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko-2-stueck-weiss/p/4077673
- 0, // GPIO00
- 0, // GPIO01 Serial RXD
- 0,
- 0, // GPIO03 Serial TXD
- 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)
- 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
- 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)
- // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
- // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
- // GPIO11 (SD_CMD Flash)
- 0, // GPIO12
- 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
- GPI8_KEY1, // GPIO00 Button1
- 0, // GPIO01 Serial RXD
- 0, // GPIO02
- 0, // GPIO03 Serial TXD
- 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)
- 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
- GPI8_LEDLNK_INV, // GPIO01 Blue LED - Link status
- 0, // GPIO02
- 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)
- 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
- GPI8_KEY1, // GPIO00 Button
- 0, 0, 0,
- 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)
- 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,
- GPI8_KEY1, // GPIO02 Button
- 0,
- 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)
- 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
- GPI8_PWM1, // GPIO01 Nightlight
- 0, // GPIO02
- 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)
- 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
- GPI8_LED1_INV, // GPIO00 Red LED
- 0, // GPIO01 Serial RXD
- 0, // GPIO02
- GPI8_NRG_SEL_INV, // GPIO03 HJL-01 Sel output (1 = Voltage)
- 0, // GPIO04
- 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)
- 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 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
- GPI8_USER, // GPIO00 N.C.
- 0, // GPIO01 Serial RXD
- GPI8_USER, // GPIO02 N.C.
- 0, // GPIO03 Serial TXD
- 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)
- 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
- 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,
- 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)
- GPI8_USER, // GPIO12
- GPI8_EXS_ENABLE, // GPIO13 EXS MCU Enable
- GPI8_USER, // GPIO14
- 0, // GPIO15
- 0, 0
- },
- { // PWM_DIMMER - Support for Martin Jerry/acenx/Tessan/NTONPOWER SD0x PWM
- // dimmer switches. The brightness of the load for these dimmers is
- // controlled by a PWM GPIO pin. There are typically power, up & down
- // buttons and 4 LED's. Examples are:
- // https://www.amazon.com/dp/B07FXYSVR1
- // https://www.amazon.com/dp/B07V26Q3VD
- // https://www.amazon.com/dp/B07K67D43J
- // https://www.amazon.com/dp/B07TTGFWFM
- GPI8_KEY3, // GPIO00 Up button
- GPI8_KEY2, // GPIO01 Down button
- 0, // GPIO02
- 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)
- 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)
- GPI8_LED1_INV, // GPIO00 Green Led (0 = On, 1 = Off) - Traffic between ESP and EFR
- GPI8_ZIGBEE_TX, // GPIO01 Zigbee Serial control
- 0, // GPIO02
- 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)
- // 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)
- 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
- GPI8_KEY1, // GPIO16 Button
- 0
- }
-};
-
-/*********************************************************************************************\
- * Templates with 14 usable pins (ESP8285)
-\*********************************************************************************************/
-
-const mytmplt8285 kModules8285[TMP_MAXMODULE_8266 - TMP_WEMOS] PROGMEM = {
- { // WEMOS - Any ESP8266/ESP8285 device like WeMos and NodeMCU hardware (ESP8266)
- 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)
- GPI8_USER, // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
- GPI8_USER, // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
- // GPIO11 (SD_CMD Flash)
- 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)
- 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)
- GPI8_KEY2, // GPIO09 Button 2
- GPI8_KEY3, // GPIO10 Button 3
- // GPIO11 (SD_CMD Flash)
- 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)
- 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,
- 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)
- GPI8_KEY2, // GPIO09 Button 2
- 0, // GPIO10
- // GPIO11 (SD_CMD Flash)
- 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)
- 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)
- GPI8_KEY2, // GPIO09 Button 2
- GPI8_KEY3, // GPIO10 Button 3
- // GPIO11 (SD_CMD Flash)
- 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)
- GPI8_USER, // GPIO00 Button 0 on header (0 = On, 1 = Off)
- GPI8_USER, // GPIO01 Serial RXD and Optional sensor
- 0,
- GPI8_USER, // GPIO03 Serial TXD and Optional sensor
- 0,
- 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)
- GPI8_USER, // GPIO09 Button 1 on header (0 = On, 1 = Off)
- GPI8_KEY1, // GPIO10 Button on casing
- // GPIO11 (SD_CMD Flash)
- 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)
- 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
- 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)
- 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)
- 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
-
-#ifdef ESP32
-#if CONFIG_IDF_TARGET_ESP32C2
-/********************************************************************************************\
- * ESP32-C2 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported hardware modules
-enum SupportedModulesESP32C2 {
- WEMOS, // not really correct, a placeholder for now
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32C2|"
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32C2 !!!
-const mytmplt kModules[] PROGMEM = {
- { // Generic ESP32C2 device
- AGPIO(GPIO_USER), // 0 IO GPIO0, ADC1_CH0, RTC
- AGPIO(GPIO_USER), // 1 IO GPIO1, ADC1_CH1, RTC
- AGPIO(GPIO_USER), // 2 IO GPIO2, ADC1_CH2, RTC
- AGPIO(GPIO_USER), // 3 IO GPIO3, ADC1_CH3, RTC
- AGPIO(GPIO_USER), // 4 IO GPIO4, ADC1_CH4, RTC
- AGPIO(GPIO_USER), // 5 IO GPIO5, RTC
- AGPIO(GPIO_USER), // 6 IO GPIO6,
- AGPIO(GPIO_USER), // 7 IO GPIO7,
- AGPIO(GPIO_USER), // 8 IO GPIO8, Strapping
- AGPIO(GPIO_USER), // 9 IO GPIO9, Strapping
- AGPIO(GPIO_USER), // 10 IO GPIO10
- 0, // 11 IO GPIO11, output power supply for flash
- 0, // 12 IO GPIO12, SPIHD - Free if flash DIO/DOUT
- 0, // 13 IO GPIO13, SPIWP - Free if flash DIO/DOUT
- 0, // 14 IO GPIO14, SPICS0
- 0, // 15 IO GPIO15, SPICLK
- 0, // 16 IO GPIO16, SPID
- 0, // 17 IO GPIO17, SPIQ
- AGPIO(GPIO_USER), // 18 IO GPIO18,
- AGPIO(GPIO_USER), // 19 IO RXD0 GPIO19, U0RXD
- AGPIO(GPIO_USER), // 20 IO TXD0 GPIO20, U0TXD
- 0 // Flag
- },
-};
-
-/*********************************************************************************************\
- Known templates
-\*********************************************************************************************/
-
-#elif CONFIG_IDF_TARGET_ESP32C3
-/********************************************************************************************\
- * ESP32-C3 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported hardware modules
-enum SupportedModulesESP32C3 {
- WEMOS,
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32C3|"
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32C3 !!!
-const mytmplt kModules[] PROGMEM = {
- { // Generic ESP32C3 device
- AGPIO(GPIO_USER), // 0 IO GPIO0, ADC1_CH0, XTAL_32K_P
- AGPIO(GPIO_USER), // 1 IO GPIO1, ADC1_CH1, XTAL_32K_N
- AGPIO(GPIO_USER), // 2 IO GPIO2, ADC1_CH2, FSPIQ
- AGPIO(GPIO_USER), // 3 IO GPIO3, ADC1_CH3
- AGPIO(GPIO_USER), // 4 IO GPIO4, ADC1_CH4, FSPIHD, MTMS
- AGPIO(GPIO_USER), // 5 IO GPIO5, ADC2_CH0, FSPIWP, MTDI
- AGPIO(GPIO_USER), // 6 IO GPIO6, FSPICLK, MTCK
- AGPIO(GPIO_USER), // 7 IO GPIO7, FSPID, MTDO
- AGPIO(GPIO_USER), // 8 IO GPIO8
- AGPIO(GPIO_USER), // 9 IO GPIO9
- AGPIO(GPIO_USER), // 10 IO GPIO10
- 0, // 11 IO GPIO11, output power supply for flash
- 0, // 12 IO GPIO12, SPIHD - Free if flash DIO/DOUT
- 0, // 13 IO GPIO13, SPIWP - Free if flash DIO/DOUT
- 0, // 14 IO GPIO14, SPICS0
- 0, // 15 IO GPIO15, SPICLK
- 0, // 16 IO GPIO16, SPID
- 0, // 17 IO GPIO17, SPIQ
- AGPIO(GPIO_USER), // 18 IO GPIO18, USB_D
- AGPIO(GPIO_USER), // 19 IO GPIO19, USB_D+
- AGPIO(GPIO_USER), // 20 IO RXD0 GPIO20, U0RXD
- AGPIO(GPIO_USER), // 21 IO TXD0 GPIO21, U0TXD
- 0 // Flag
- },
-};
-
-/*********************************************************************************************\
- Known templates
-\*********************************************************************************************/
-
-#elif CONFIG_IDF_TARGET_ESP32C5
-/********************************************************************************************\
- * ESP32-C5 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported hardware modules
-enum SupportedModulesESP32C5 {
- WEMOS,
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32C5|"
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32C5 !!!
-const mytmplt kModules[] PROGMEM = {
- { // Generic ESP32C5 device
- AGPIO(GPIO_USER), // 0 IO GPIO0
- AGPIO(GPIO_USER), // 1 AO GPIO1, ADC1_CH0
- AGPIO(GPIO_USER), // 2 AO GPIO2, ADC1_CH1
- AGPIO(GPIO_USER), // 3 AO GPIO3, ADC1_CH2
- AGPIO(GPIO_USER), // 4 AO GPIO4, ADC1_CH3
- AGPIO(GPIO_USER), // 5 AO GPIO5, ADC1_CH4
- AGPIO(GPIO_USER), // 6 AO GPIO6, ADC1_CH5
- AGPIO(GPIO_USER), // 7 AO GPIO7, ADC1_CH6
- AGPIO(GPIO_USER), // 8 IO GPIO8
- AGPIO(GPIO_USER), // 9 IO GPIO9
- AGPIO(GPIO_USER), // 10 IO GPIO10
- AGPIO(GPIO_USER), // 11 IO GPIO11
- AGPIO(GPIO_USER), // 12 IO GPIO12
- AGPIO(GPIO_USER), // 13 IO GPIO13
- AGPIO(GPIO_USER), // 14 IO GPIO14
- AGPIO(GPIO_USER), // 15 IO GPIO15
- AGPIO(GPIO_USER), // 16 IO GPIO16
- AGPIO(GPIO_USER), // 17 IO GPIO17
- AGPIO(GPIO_USER), // 18 IO GPIO18
- AGPIO(GPIO_USER), // 19 IO GPIO19
- AGPIO(GPIO_USER), // 20 IO GPIO20
- AGPIO(GPIO_USER), // 21 IO GPIO21
- AGPIO(GPIO_USER), // 22 IO GPIO22
- AGPIO(GPIO_USER), // 23 IO GPIO23
- 0, // 24 FL GPIO24, Flash
- 0, // 25 FL GPIO25, Flash
- 0, // 26 FL GPIO26, Flash
- 0 // Flag
- },
-};
-
-/*********************************************************************************************\
- Known templates
-\*********************************************************************************************/
-
-#elif CONFIG_IDF_TARGET_ESP32C6
-/********************************************************************************************\
- * ESP32-C6 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported hardware modules
-enum SupportedModulesESP32C6 {
- WEMOS, // not really correct, a placeholder for now
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32C6|"
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32C6 !!!
-const mytmplt kModules[] PROGMEM = {
- { // Generic ESP32C6 device
- AGPIO(GPIO_USER), // 0 IO GPIO0, ADC1_CH0, LP_GPIO0
- AGPIO(GPIO_USER), // 1 IO GPIO1, ADC1_CH1, LP_GPIO1
- AGPIO(GPIO_USER), // 2 IO GPIO2, ADC1_CH2, LP_GPIO2
- AGPIO(GPIO_USER), // 3 IO GPIO3, ADC1_CH3, LP_GPIO3
- AGPIO(GPIO_USER), // 4 IO GPIO4, ADC1_CH4, LP_GPIO4, Strapping
- AGPIO(GPIO_USER), // 5 IO GPIO5, ADC1_CH5, LP_GPIO5, Strapping
- AGPIO(GPIO_USER), // 6 IO GPIO6, ADC1_CH6, LP_GPIO6
- AGPIO(GPIO_USER), // 7 IO GPIO7, LP_GPIO7
- AGPIO(GPIO_USER), // 8 IO GPIO8, Strapping
- AGPIO(GPIO_USER), // 9 IO GPIO9, Strapping
- AGPIO(GPIO_USER), // 10 IO GPIO10 (QFN40 only)
- AGPIO(GPIO_USER), // 11 IO GPIO11 (QFN40 only)
- AGPIO(GPIO_USER), // 12 IO GPIO12, USB-JTAG
- AGPIO(GPIO_USER), // 13 IO GPIO13, USB-JTAG
- AGPIO(GPIO_USER), // 14 IO GPIO14 (QFN32 only)
- AGPIO(GPIO_USER), // 15 IO GPIO15, Strapping
- AGPIO(GPIO_USER), // 16 IO TXD0 GPIO16, U0TXD
- AGPIO(GPIO_USER), // 17 IO RXD0 GPIO17, U0RXD
- AGPIO(GPIO_USER), // 18 IO GPIO18, SDIO_CMD
- AGPIO(GPIO_USER), // 19 IO GPIO19, SDIO_CLK
- AGPIO(GPIO_USER), // 20 IO GPIO20, SDIO_DATA0
- AGPIO(GPIO_USER), // 21 IO GPIO21, SDIO_DATA1
- AGPIO(GPIO_USER), // 22 IO GPIO22, SDIO_DATA2
- AGPIO(GPIO_USER), // 23 IO GPIO23, SDIO_DATA3
- 0, // 24 IO GPIO24, SPICS1, PSRAM
- 0, // 25 IO GPIO25, SPIQ
- 0, // 26 IO GPIO26, SPIWP - Free if flash DIO/DOUT
- 0, // 27 IO GPIO27, SPIVDD
- 0, // 28 IO GPIO28, SPIHD - Free if flash DIO/DOUT
- 0, // 29 IO GPIO29, SPICLK
- 0, // 30 IO GPIO30, SPID
- 0 // Flag
- },
-};
-
-/*********************************************************************************************\
- Known templates
-\*********************************************************************************************/
-#elif CONFIG_IDF_TARGET_ESP32P4
-/********************************************************************************************\
- * ESP32-P4 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-#define WT32_ETH01 4 //TODO: Why needed?
-
-// Supported hardware modules
-enum SupportedModulesESP32P4 {
- WEMOS, // not really correct, a placeholder for now
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32P4|"
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32P4 !!!
-const mytmplt kModules[] PROGMEM = {
- { // Generic ESP32P4 device
- AGPIO(GPIO_USER), // 0 IO GPIO0, LP_GPIO0
- AGPIO(GPIO_USER), // 1 IO GPIO1, LP_GPIO1
- AGPIO(GPIO_USER), // 2 IO GPIO2, TOUCH0, LP_GPIO2
- AGPIO(GPIO_USER), // 3 IO GPIO3, TOUCH1, LP_GPIO3
- AGPIO(GPIO_USER), // 4 IO GPIO4, TOUCH2, LP_GPIO4
- AGPIO(GPIO_USER), // 5 IO GPIO5, TOUCH3, LP_GPIO5
- AGPIO(GPIO_USER), // 6 IO GPIO6, TOUCH4, LP_GPIO6
- AGPIO(GPIO_USER), // 7 IO GPIO7, TOUCH5, LP_GPIO7
- AGPIO(GPIO_USER), // 8 IO GPIO8, TOUCH6, LP_GPIO8
- AGPIO(GPIO_USER), // 9 IO GPIO9, TOUCH7, LP_GPIO9
- AGPIO(GPIO_USER), // 10 IO GPIO10, TOUCH8, LP_GPIO10
- AGPIO(GPIO_USER), // 11 IO GPIO11, TOUCH9, LP_GPIO11
- AGPIO(GPIO_USER), // 12 IO GPIO12, TOUCH10, LP_GPIO12
- AGPIO(GPIO_USER), // 13 IO GPIO13, TOUCH11, LP_GPIO13
- AGPIO(GPIO_USER), // 14 IO GPIO14, TOUCH12, LP_GPIO14, SDIO2_D0 ESPHosted (ESP32C6 GPIO20)
- AGPIO(GPIO_USER), // 15 IO GPIO15, TOUCH13, LP_GPIO15, SDIO2_D1 ESPHosted (ESP32C6 GPIO21)
- AGPIO(GPIO_USER), // 16 IO GPIO16, ADC1_CH0, SDIO2_D2 ESPHosted (ESP32C6 GPIO22)
- AGPIO(GPIO_USER), // 17 IO GPIO17, ADC1_CH1, SDIO2_D3 ESPHosted (ESP32C6 GPIO23)
- AGPIO(GPIO_USER), // 18 IO GPIO18, ADC1_CH2, SDIO2_CLK ESPHosted (ESP32C6 GPIO19)
- AGPIO(GPIO_USER), // 19 IO GPIO19, ADC1_CH3, SDIO2_CMD ESPHosted (ESP32C6 GPIO18)
- AGPIO(GPIO_USER), // 20 IO GPIO20, ADC1_CH4
- AGPIO(GPIO_USER), // 21 IO GPIO21, ADC1_CH5
- AGPIO(GPIO_USER), // 22 IO GPIO22, ADC1_CH6
- AGPIO(GPIO_USER), // 23 IO GPIO23, ADC1_CH7
- AGPIO(GPIO_USER), // 24 IO GPIO24
- AGPIO(GPIO_USER), // 25 IO GPIO25
- AGPIO(GPIO_USER), // 26 IO GPIO26
- AGPIO(GPIO_USER), // 27 IO GPIO27
- AGPIO(GPIO_USER), // 28 IO GPIO28
- AGPIO(GPIO_USER), // 29 IO GPIO29
- AGPIO(GPIO_USER), // 30 IO GPIO30
- AGPIO(GPIO_USER), // 31 IO GPIO31
- AGPIO(GPIO_USER), // 32 IO GPIO32
- AGPIO(GPIO_USER), // 33 IO GPIO33
- AGPIO(GPIO_USER), // 34 IO GPIO34, Strapping pin
- AGPIO(GPIO_USER), // 35 IO GPIO35, Strapping pin
- AGPIO(GPIO_USER), // 36 IO GPIO36, Strapping pin
- AGPIO(GPIO_USER), // 37 IO GPIO37, Strapping pin
- AGPIO(GPIO_USER), // 38 IO GPIO38, Strapping pin
- AGPIO(GPIO_USER), // 39 IO GPIO39
- AGPIO(GPIO_USER), // 40 IO GPIO40
- AGPIO(GPIO_USER), // 41 IO GPIO41
- AGPIO(GPIO_USER), // 42 IO GPIO42
- AGPIO(GPIO_USER), // 43 IO GPIO43
- AGPIO(GPIO_USER), // 44 IO GPIO44
- AGPIO(GPIO_USER), // 45 IO GPIO45
- AGPIO(GPIO_USER), // 46 IO GPIO46
- AGPIO(GPIO_USER), // 47 IO GPIO47
- AGPIO(GPIO_USER), // 48 IO GPIO48
- AGPIO(GPIO_USER), // 49 IO GPIO49, ADC1_CH8
- AGPIO(GPIO_USER), // 50 IO GPIO50, ADC1_CH9
- AGPIO(GPIO_USER), // 51 IO GPIO51, ADC1_CH10, ANA_CMPR_CH0 reference voltage
- AGPIO(GPIO_USER), // 52 IO GPIO52, ADC1_CH11, ANA_CMPR_CH0 input (non-inverting)
- AGPIO(GPIO_USER), // 53 IO GPIO53, ADC1_CH12, ANA_CMPR_CH1 reference voltage
- AGPIO(GPIO_USER), // 54 IO GPIO54, ADC1_CH13, ANA_CMPR_CH1 input (non-inverting)
- 0 // Flag
- },
-};
-
-/*********************************************************************************************\
- Known templates
-\*********************************************************************************************/
-
-#elif CONFIG_IDF_TARGET_ESP32S2
-/********************************************************************************************\
- * ESP32-S2 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported hardware modules
-enum SupportedModulesESP32S2 {
- WEMOS,
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32S2|"
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32S2 !!!
-const mytmplt kModules[] PROGMEM = {
- { // Generic ESP32C3 device
- AGPIO(GPIO_USER), // 0 IO GPIO0, RTC_GPIO0, Strapping
- AGPIO(GPIO_USER), // 1 AO GPIO1, ADC1_CH0, RTC_GPIO1
- AGPIO(GPIO_USER), // 2 AO GPIO2, ADC1_CH1, RTC_GPIO2
- AGPIO(GPIO_USER), // 3 AO GPIO3, ADC1_CH2, RTC_GPIO3
- AGPIO(GPIO_USER), // 4 AO GPIO4, ADC1_CH3, RTC_GPIO4
- AGPIO(GPIO_USER), // 5 AO GPIO5, ADC1_CH4, RTC_GPIO5
- AGPIO(GPIO_USER), // 6 AO GPIO6, ADC1_CH5, RTC_GPIO6
- AGPIO(GPIO_USER), // 7 AO GPIO7, ADC1_CH6, RTC_GPIO7
- AGPIO(GPIO_USER), // 8 AO GPIO8, ADC1_CH7, RTC_GPIO8
- AGPIO(GPIO_USER), // 9 AO GPIO9, ADC1_CH8, RTC_GPIO9
- AGPIO(GPIO_USER), // 10 AO GPIO10, ADC1_CH9, RTC_GPIO10
- AGPIO(GPIO_USER), // 11 AO GPIO11, ADC2_CH0, RTC_GPIO11
- AGPIO(GPIO_USER), // 12 AO GPIO12, ADC2_CH1, RTC_GPIO12
- AGPIO(GPIO_USER), // 13 AO GPIO13, ADC2_CH2, RTC_GPIO13
- AGPIO(GPIO_USER), // 14 AO GPIO14, ADC2_CH3, RTC_GPIO14
- AGPIO(GPIO_USER), // 15 AO GPIO15, ADC2_CH4, RTC_GPIO15, XTAL_32K_P
- AGPIO(GPIO_USER), // 16 AO GPIO16, ADC2_CH5, RTC_GPIO16, XTAL_32K_N
- AGPIO(GPIO_USER), // 17 AO GPIO17, ADC2_CH6, RTC_GPIO17, DAC_1
- AGPIO(GPIO_USER), // 18 AO GPIO18, ADC2_CH7, RTC_GPIO18, DAC_2
- AGPIO(GPIO_USER), // 19 AO GPIO19, ADC2_CH8, RTC_GPIO19
- AGPIO(GPIO_USER), // 20 AO GPIO20, ADC2_CH9, RTC_GPIO20
- AGPIO(GPIO_USER), // 21 IO GPIO21, RTC_GPIO21
- // 22 -- Unused
- // 23 -- Unused
- // 24 -- Unused
- // 25 -- Unused
- // 26 FL SPICS1, PSRAM
- // 27 FL SPIHD
- // 28 FL SPIWP
- // 29 FL SPICS0
- // 30 FL SPICLK
- // 31 FL SPIQ
- // 32 FL SPID
- AGPIO(GPIO_USER), // 33 IO GPIO33
- AGPIO(GPIO_USER), // 34 IO GPIO34
- AGPIO(GPIO_USER), // 35 IO GPIO35
- AGPIO(GPIO_USER), // 36 IO GPIO36
- AGPIO(GPIO_USER), // 37 IO GPIO37
- AGPIO(GPIO_USER), // 38 IO GPIO38
- AGPIO(GPIO_USER), // 39 IO GPIO39, JTAG MTCK
- AGPIO(GPIO_USER), // 40 IO GPIO40, JTAG MTDO
- AGPIO(GPIO_USER), // 41 IO GPIO41, JTAG MTDI
- AGPIO(GPIO_USER), // 42 IO GPIO42, JTAG MTMS
- AGPIO(GPIO_USER), // 43 IO GPIO43, U0TXD
- AGPIO(GPIO_USER), // 44 IO GPIO44, U0RXD
- AGPIO(GPIO_USER), // 45 IO GPIO45, Strapping
- AGPIO(GPIO_USER), // 46 I GPIO46, Input only, Strapping
- 0 // Flag
- },
-};
-
-/*********************************************************************************************\
- Known templates
-\*********************************************************************************************/
-
-#elif CONFIG_IDF_TARGET_ESP32S3
-/********************************************************************************************\
- * ESP32-S3 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported hardware modules
-enum SupportedModulesESP32S3 {
- WEMOS,
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32S3|"
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32S2 !!!
-const mytmplt kModules[] PROGMEM = {
- { // Generic ESP32C3 device
- AGPIO(GPIO_USER), // 0 IO RTC_GPIO0, GPIO0, Strapping
- AGPIO(GPIO_USER), // 1 AO RTC_GPIO1, GPIO1, TOUCH1, ADC1_CH0
- AGPIO(GPIO_USER), // 2 AO RTC_GPIO2, GPIO2, TOUCH2, ADC1_CH1
- AGPIO(GPIO_USER), // 3 AO RTC_GPIO3, GPIO3, TOUCH3, ADC1_CH2, Strapping
- AGPIO(GPIO_USER), // 4 AO RTC_GPIO4, GPIO4, TOUCH4, ADC1_CH3
- AGPIO(GPIO_USER), // 5 AO RTC_GPIO5, GPIO5, TOUCH5, ADC1_CH4
- AGPIO(GPIO_USER), // 6 AO RTC_GPIO6, GPIO6, TOUCH6, ADC1_CH5
- AGPIO(GPIO_USER), // 7 AO RTC_GPIO7, GPIO7, TOUCH7, ADC1_CH6
- AGPIO(GPIO_USER), // 8 AO RTC_GPIO8, GPIO8, TOUCH8, ADC1_CH7, SUBSPICS1
- AGPIO(GPIO_USER), // 9 AO RTC_GPIO9, GPIO9, TOUCH9, ADC1_CH8, SUBSPIHD, FSPIHD
- AGPIO(GPIO_USER), // 10 AO RTC_GPIO10, GPIO10, TOUCH10, ADC1_CH9, FSPIIO4, SUBSPICS0, FSPICS0
- AGPIO(GPIO_USER), // 11 AO RTC_GPIO11, GPIO11, TOUCH11, ADC2_CH0, FSPIIO5, SUBSPID, FSPID
- AGPIO(GPIO_USER), // 12 AO RTC_GPIO12, GPIO12, TOUCH12, ADC2_CH1, FSPIIO6, SUBSPICLK, FSPICLK
- AGPIO(GPIO_USER), // 13 AO RTC_GPIO13, GPIO13, TOUCH13, ADC2_CH2, FSPIIO7, SUBSPIQ, FSPIQ
- AGPIO(GPIO_USER), // 14 AO RTC_GPIO14, GPIO14, TOUCH14, ADC2_CH3, FSPIDQS, SUBSPIWP, FSPIWP
- AGPIO(GPIO_USER), // 15 AO RTC_GPIO15, GPIO15, U0RTS, ADC2_CH4, XTAL_32K_P
- AGPIO(GPIO_USER), // 16 AO RTC_GPIO16, GPIO16, U0CTS, ADC2_CH5, XTAL_32K_N
- AGPIO(GPIO_USER), // 17 AO RTC_GPIO17, GPIO17, U1TXD, ADC2_CH6
- AGPIO(GPIO_USER), // 18 AO RTC_GPIO18, GPIO18, U1RXD, ADC2_CH7, CLK_OUT3
- AGPIO(GPIO_USER), // 19 AO RTC_GPIO19, GPIO19, U1RTS, ADC2_CH8, CLK_OUT2, USB_DÂ
- AGPIO(GPIO_USER), // 20 AO RTC_GPIO20, GPIO20, U1CTS, ADC2_CH9, CLK_OUT1, USB_D+
- AGPIO(GPIO_USER), // 21 IO RTC_GPIO21, GPIO21
- // 22 -- Unused
- // 23 -- Unused
- // 24 -- Unused
- // 25 -- Unused
- // 26 FL SPICS1, GPIO26
- // 27 FL SPIHD, GPIO27
- // 28 FL SPIWP, GPIO28
- // 29 FL SPICS0, GPIO29
- // 30 FL SPICLK, GPIO30
- // 31 FL SPIQ, GPIO31
- // 32 FL SPID, GPIO32
- AGPIO(GPIO_NONE), // 33 IO SPIIO4, GPIO33, FSPIHD, SUBSPIHD
- AGPIO(GPIO_NONE), // 34 IO SPIIO5, GPIO34, FSPICS0, SUBSPICS0
- AGPIO(GPIO_NONE), // 35 IO SPIIO6, GPIO35, FSPID, SUBSPID
- AGPIO(GPIO_NONE), // 36 IO SPIIO7, GPIO36, FSPICLK, SUBSPICLK
- AGPIO(GPIO_NONE), // 37 IO SPIDQS, GPIO37, FSPIQ, SUBSPIQ
- AGPIO(GPIO_USER), // 38 IO GPIO38, FSPIWP, SUBSPIWP
- AGPIO(GPIO_USER), // 39 IO MTCK, GPIO39, CLK_OUT3, SUBSPICS1
- AGPIO(GPIO_USER), // 40 IO MTDO, GPIO40, CLK_OUT2
- AGPIO(GPIO_USER), // 41 IO MTDI, GPIO41, CLK_OUT1
- AGPIO(GPIO_USER), // 42 IO MTMS, GPIO42
- AGPIO(GPIO_USER), // 43 IO U0TXD, GPIO43, CLK_OUT1
- AGPIO(GPIO_USER), // 44 IO U0RXD, GPIO44, CLK_OUT2
- AGPIO(GPIO_USER), // 45 IO GPIO45, Strapping
- AGPIO(GPIO_USER), // 46 IO GPIO46, Strapping
- AGPIO(GPIO_USER), // 47 IO SPICLK_P_DIFF, GPIO47, SUBSPICLK_P_DIFF
- AGPIO(GPIO_USER), // 48 IO SPICLK_N_DIFF, GPIO48, SUBSPICLK_N_DIFF
- 0 // Flag
- },
-};
-
-/*********************************************************************************************\
- Known templates
-\*********************************************************************************************/
-
-#else // not CONFIG_IDF_TARGET_ESP32C2/C3/C6 nor CONFIG_IDF_TARGET_ESP32S2 - ESP32
-/********************************************************************************************\
- * ESP32 Module templates
-\********************************************************************************************/
-
-#define USER_MODULE 255
-
-// Supported hardware modules
-enum SupportedModulesESP32 {
- WEMOS,
- ESP32_CAM_AITHINKER,
- ODROID_GO,
- ESP32_SOLO,
- WT32_ETH01,
- MAXMODULE };
-
-// Default module settings
-const uint8_t kModuleNiceList[] PROGMEM = {
- WEMOS,
-#ifdef USE_WEBCAM
- ESP32_CAM_AITHINKER,
-#endif // USE_WEBCAM
-#ifdef USE_ODROID_GO
- ODROID_GO,
-#endif // USE_ODROID_GO
-#ifdef USE_ESP32_SOLO
-// ESP32_SOLO, // To be defined
-#endif // USE_ESP32_SOLO
-#ifdef USE_WT32_ETH01
- WT32_ETH01,
-#endif // USE_WT32_ETH01
-};
-
-// !!! Update this list in the same order as kModuleNiceList !!!
-const char kModuleNames[] PROGMEM =
- "ESP32-DevKit|"
-#ifdef USE_WEBCAM
- "ESP32-Cam|"
-#endif // USE_WEBCAM
-#ifdef USE_ODROID_GO
- "Odroid Go|"
-#endif // USE_ODROID_GO
-#ifdef USE_ESP32_SOLO
-// "ESP32-Solo|" // To be defined
-#endif // USE_ESP32_SOLO
-#ifdef USE_WT32_ETH01
- "WT32-Eth01|"
-#endif // USE_WT32_ETH01
- ;
-
-// !!! Update this list in the same order as SupportedModulesESP32 !!!
-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 Remapped to 28
- // 7 IO Remapped to 29
- // 8 IO Remapped to 30
- AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD
- AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD
- // 11 IO Remapped to 31
- 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, // 6 IO GPIO6, Flash CLK
- 0, // 7 IO GPIO7, Flash D0
- 0, // 8 IO GPIO8, Flash D1
- 0, // 11 IO GPIO11, Flash CMD
- 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
- },
-
-#ifdef USE_WEBCAM
- { // ESP32_CAM_AITHINKER - Any ESP32 device with webcam (ESP32)
- AGPIO(GPIO_WEBCAM_XCLK), // 0 (I)O GPIO0, CAM_XCLK
- AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
- AGPIO(GPIO_SPI_MISO), // 2 IO GPIO2, VSPI_MISO
- AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2
- AGPIO(GPIO_PWM1), // 4 IO GPIO4, Flashlight
- AGPIO(GPIO_WEBCAM_DATA), // 5 IO GPIO5, CAM_DATA1
- // 6 IO Remapped to 28
- // 7 IO Remapped to 29
- // 8 IO Remapped to 30
- AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD
- AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD
- // 11 IO Remapped to 31
- 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_SDCARD_CS), // 13 IO GPIO13, VSPI_CS_TFLASH
- AGPIO(GPIO_SPI_CLK), // 14 IO GPIO14, VSPI_CLK
- AGPIO(GPIO_SPI_MOSI), // 15 (I)O GPIO15, VSPI_MOSI (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_WEBCAM_DATA) +1, // 18 IO GPIO18, CAM_DATA2
- AGPIO(GPIO_WEBCAM_DATA) +2, // 19 IO GPIO19, CAM_DATA3
- 0, // 20
- AGPIO(GPIO_WEBCAM_DATA) +3, // 21 IO GPIO21, CAM_DATA4
- AGPIO(GPIO_WEBCAM_PCLK), // 22 IO LED GPIO22, CAM_PCLK
- AGPIO(GPIO_WEBCAM_HREF), // 23 IO GPIO23, CAM_HREF
- 0, // 24
- AGPIO(GPIO_WEBCAM_VSYNC), // 25 IO GPIO25, CAM_VSYNC
- AGPIO(GPIO_WEBCAM_SIOD), // 26 IO GPIO26, CAM_SIOD
- AGPIO(GPIO_WEBCAM_SIOC), // 27 IO GPIO27, CAM_SIOC
- 0, // 6 IO GPIO6, Flash CLK
- 0, // 7 IO GPIO7, Flash D0
- 0, // 8 IO GPIO8, Flash D1
- 0, // 11 IO GPIO11, Flash CMD
- AGPIO(GPIO_WEBCAM_PWDN), // 32 IO GPIO32, CAM_PWDN
- AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8
- AGPIO(GPIO_WEBCAM_DATA) +6, // 34 I NO PULLUP GPIO34, CAM_DATA7
- AGPIO(GPIO_WEBCAM_DATA) +7, // 35 I NO PULLUP GPIO35, CAM_DATA8
- AGPIO(GPIO_WEBCAM_DATA) +4, // 36 I NO PULLUP GPIO36, CAM_DATA5
- 0, // 37 NO PULLUP
- 0, // 38 NO PULLUP
- AGPIO(GPIO_WEBCAM_DATA) +5, // 39 I NO PULLUP GPIO39, CAM_DATA6
- 0 // Flag
- },
-#endif // USE_WEBCAM
-
-#ifdef USE_ODROID_GO
- { // ODROID_GO - (ESP32)
- AGPIO(GPIO_KEY1), // 0 (I)O GPIO0, BTN-VOLUME
- AGPIO(GPIO_TXD), // 1 IO TXD0 GPIO1, TXD0
- AGPIO(GPIO_LEDLNK), // 2 IO GPIO2, STATUS LED
- AGPIO(GPIO_RXD), // 3 IO RXD0 GPIO3, RXD0
- AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER
- AGPIO(GPIO_ILI9341_CS), // 5 IO GPIO5, VSPI_CS0_LCD
- // 6 IO Remapped to 28
- // 7 IO Remapped to 29
- // 8 IO Remapped to 30
- 0, // 9 IO GPIO9, Flash D2, U1RXD
- 0, // 10 IO GPIO10, Flash D3, U1TXD
- // 11 IO Remapped to 31
- 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_KEY1) +1, // 13 IO GPIO13, BTN-MENU
- AGPIO(GPIO_PWM1), // 14 IO GPIO14, LCD Backlight
- 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_SPI_CLK), // 18 IO GPIO18, VSPI_CLK
- AGPIO(GPIO_SPI_MISO), // 19 IO GPIO19, VSPI_MISO
- 0, // 20
- AGPIO(GPIO_ILI9341_DC), // 21 IO GPIO21, SPI_DC_LCD
- AGPIO(GPIO_SDCARD_CS), // 22 IO LED GPIO22, VSPI_CS1_TFLASH
- AGPIO(GPIO_SPI_MOSI), // 23 IO GPIO23, VSPI_MOSI
- 0, // 24
- 0, // 25 IO GPIO25, DAC_1 (PAM8304A)
- 0, // 26 IO GPIO26, DAC_2 (PAM8304A)
- AGPIO(GPIO_KEY1) +2, // 27 IO GPIO27, BTN-SELECT
- 0, // 6 IO GPIO6, Flash CLK
- 0, // 7 IO GPIO7, Flash D0
- 0, // 8 IO GPIO8, Flash D1
- 0, // 11 IO GPIO11, Flash CMD
- AGPIO(GPIO_SWT1) +4, // 32 IO GPIO32, BTN-A
- AGPIO(GPIO_SWT1) +5, // 33 IO GPIO33, BTN-B
- AGPIO(GPIO_ADC_JOY), // 34 I NO PULLUP GPIO34, JOY-X (LEFT-RIGHT)
- AGPIO(GPIO_ADC_JOY) +1, // 35 I NO PULLUP GPIO35, JOY-Y (UP-DOWN)
- AGPIO(GPIO_ADC_RANGE) +2, // 36 I NO PULLUP GPIO36, SENSOR_VP (BATTERY CARGER)
- 0, // 37 NO PULLUP
- 0, // 38 NO PULLUP
- AGPIO(GPIO_KEY1) +3, // 39 I NO PULLUP GPIO39, BTN-START
- 0 // Flag
- },
-#endif // USE_ODROID_GO
-
-#ifdef USE_ESP32_SOLO
-// { // ESP32 Solo (ESP32) - To be defined
-// },
-#endif // USE_ESP32_SOLO
-
-#ifdef USE_WT32_ETH01
- { // WT32_ETH01 - (ESP32)
- 0, // 0 (I)O GPIO0, Ethernet EMAC_REF_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, RXD Led green
- // 6 IO Remapped to 28
- // 7 IO Remapped to 29
- // 8 IO Remapped to 30
- 0, // 9 IO GPIO9, Flash D2, U1RXD
- 0, // 10 IO GPIO10, Flash D3, U1TXD
- // 11 IO Remapped to 31
- 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.)
- 0, // 13 IO GPIO13, Ethernet 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_OUTPUT_HI), // 16 IO GPIO16, Ethernet OSC_ENA
- AGPIO(GPIO_LEDLNK_INV), // 17 IO GPIO17, Network link led (green)
- AGPIO(GPIO_ETH_PHY_MDIO), // 18 IO GPIO18, Ethernet MDIO
- 0, // 19 IO GPIO19, Ethernet TXD0
- 0, // 20
- 0, // 21 IO GPIO21, Ethernet EMAC_TX_EN
- 0, // 22 IO LED GPIO22, Ethernet EMAC_TXD1
- AGPIO(GPIO_ETH_PHY_MDC), // 23 IO GPIO23, Ethernet MDC
- 0, // 24
- 0, // 25 IO GPIO25, Ethernet EMAC_RXD0
- 0, // 26 IO GPIO26, Ethernet EMAC_RXD1
- 0, // 27 IO GPIO27, Ethernet EMAC_RX_DV
- 0, // 6 IO GPIO6, Flash CLK
- 0, // 7 IO GPIO7, Flash D0
- 0, // 8 IO GPIO8, Flash D1
- 0, // 11 IO GPIO11, Flash CMD
- AGPIO(GPIO_USER), // 32 IO GPIO32, CFG
- AGPIO(GPIO_USER), // 33 IO GPIO33, 485_EN
- 0, // 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 // USE_WT32_ETH01
-
-};
-
-/*********************************************************************************************\
- 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/S2/C3 selection
-#endif // ESP32
-
-#endif // _TASMOTA_TEMPLATE_H_
+/*
+ tasmota_template.h - template settings for Tasmota
+
+ Copyright (C) 2021 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_H_
+#define _TASMOTA_TEMPLATE_H_
+
+// 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, 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_TM1638CLK, GPIO_TM1638DIO, GPIO_TM1638STB, // 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, GPIO_A4988_MS1, // A4988 interface
+ GPIO_OUTPUT_HI, GPIO_OUTPUT_LO, // Fixed output state
+ 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_MIEL_HVAC_TX, GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC
+ GPIO_WE517_TX, GPIO_WE517_RX, // ORNO WE517 Serial interface
+ GPIO_AS608_TX, GPIO_AS608_RX, // Serial interface AS608 / R503
+ GPIO_SHELLY_DIMMER_BOOT0, GPIO_SHELLY_DIMMER_RST_INV,
+ GPIO_RC522_RST, // RC522 reset
+ GPIO_P9813_CLK, GPIO_P9813_DAT, // P9813 Clock and Data
+ GPIO_OPTION_A, // Specific device options to be served in code
+ GPIO_FTC532, // FTC532 touch ctrlr serial input
+ GPIO_RC522_CS,
+ GPIO_NRF24_CS, GPIO_NRF24_DC,
+ GPIO_ILI9341_CS, GPIO_ILI9341_DC,
+ GPIO_ILI9488_CS,
+ GPIO_EPAPER29_CS,
+ GPIO_EPAPER42_CS,
+ GPIO_SSD1351_CS,
+ GPIO_RA8876_CS,
+ GPIO_ST7789_CS, GPIO_ST7789_DC,
+ GPIO_SSD1331_CS, GPIO_SSD1331_DC,
+ GPIO_SDCARD_CS,
+ GPIO_ROT1A_NP, GPIO_ROT1B_NP, // Rotary switch
+ GPIO_ADC_PH, // Analog PH Sensor
+ GPIO_BS814_CLK, GPIO_BS814_DAT, // Holtek BS814A2 touch ctrlr
+ GPIO_WIEGAND_D0, GPIO_WIEGAND_D1, // Wiegand Data lines
+ GPIO_NEOPOOL_TX, GPIO_NEOPOOL_RX, // Sugar Valley RS485 interface
+ GPIO_SDM72_TX, GPIO_SDM72_RX, // SDM72 Serial interface
+ GPIO_TM1637CLK, GPIO_TM1637DIO, // TM1637 interface
+ GPIO_PROJECTOR_CTRL_TX, GPIO_PROJECTOR_CTRL_RX, // LCD/DLP Projector Serial Control
+ GPIO_SSD1351_DC,
+ GPIO_XPT2046_CS, // XPT2046 SPI Chip Select
+ GPIO_CSE7761_TX, GPIO_CSE7761_RX, // CSE7761 Serial interface (Dual R3)
+ GPIO_VL53LXX_XSHUT1, // VL53LXX_XSHUT (the max number of sensors is VL53LXX_MAX_SENSORS)- Used when connecting multiple VL53LXX
+ GPIO_MAX7219CLK, GPIO_MAX7219DIN, GPIO_MAX7219CS, // MAX7219 interface
+ GPIO_TFMINIPLUS_TX, GPIO_TFMINIPLUS_RX, // TFmini Plus ToF sensor
+ GPIO_ZEROCROSS,
+#ifdef ESP32
+ GPIO_HALLEFFECT,
+ GPIO_EPD_DATA, // Base connection EPD driver
+#endif
+ GPIO_INPUT,
+#ifdef ESP32
+ GPIO_KEY1_PD, GPIO_KEY1_INV_PD, GPIO_SWT1_PD,
+#endif
+ GPIO_I2S_DOUT, GPIO_I2S_BCLK, GPIO_I2S_WS, GPIO_I2S_DIN,
+ GPIO_I2S_BCLK_IN, GPIO_I2S_WS_IN, // Spare since 20240603
+ GPIO_INTERRUPT,
+ GPIO_MCP2515_CS, // MCP2515 Chip Select
+ GPIO_HRG15_TX, GPIO_HRG15_RX, // Hydreon RG-15 rain sensor serial interface
+ GPIO_VINDRIKTNING_RX, // IKEA VINDRIKTNING Serial interface
+ GPIO_BL0939_RX, // BL0939 Serial interface (Dual R3 v2)
+ GPIO_BL0942_RX, // BL0942 Serial interface
+ GPIO_HM330X_SET, // HM330X SET pin (sleep when low)
+ GPIO_HEARTBEAT, GPIO_HEARTBEAT_INV,
+ GPIO_SHIFT595_SRCLK, GPIO_SHIFT595_RCLK, GPIO_SHIFT595_OE, GPIO_SHIFT595_SER, // 74x595 Shift register
+ GPIO_SOLAXX1_RTS, // Solax Inverter Serial interface
+ GPIO_OPTION_E, // Emulated module
+ GPIO_SDM230_TX, GPIO_SDM230_RX, // SDM230 Serial interface
+ GPIO_ADC_MQ, // Analog MQ Sensor
+ GPIO_CM11_TXD, GPIO_CM11_RXD, // CM11 Serial interface
+ GPIO_BL6523_TX, GPIO_BL6523_RX, // BL6523 based Watt meter Serial interface
+ GPIO_ADE7880_IRQ, // ADE7880 IRQ
+ GPIO_RESET, // Generic reset
+ GPIO_MS01, // Sonoff MS01 Moisture Sensor 1wire interface
+ GPIO_SDIO_CMD, GPIO_SDIO_CLK, GPIO_SDIO_D0, GPIO_SDIO_D1, GPIO_SDIO_D2, GPIO_SDIO_D3, // SD Card SDIO interface, including 1-bit and 4-bit modes
+ GPIO_FLOWRATEMETER_IN, // Flowrate Meter
+ GPIO_BP5758D_CLK, GPIO_BP5758D_DAT, // BP5758D PWM controller
+ GPIO_SM2335_CLK, GPIO_SM2335_DAT, // SM2335 PWM controller
+ GPIO_MP3_DFR562_BUSY, // RB-DFR-562, DFPlayer Mini MP3 Player busy flag
+ GPIO_TM1621_CS, GPIO_TM1621_WR, GPIO_TM1621_RD, GPIO_TM1621_DAT, // Sonoff POWR3xxD and THR3xxD LCD display
+ GPIO_REL1_BI, GPIO_REL1_BI_INV, // 8 x Relays bistable
+ GPIO_I2S_MCLK,
+ GPIO_MBR_TX, GPIO_MBR_RX, // Modbus Bridge Serial interface
+ GPIO_ADE7953_RST, // ADE7953 Reset
+ GPIO_NRG_MBS_TX, GPIO_NRG_MBS_RX, // Generic Energy Modbus device
+ GPIO_ADE7953_CS, // ADE7953 SPI Chip Select
+ GPIO_DALI_RX, GPIO_DALI_TX, // DALI
+ GPIO_BP1658CJ_CLK, GPIO_BP1658CJ_DAT,// BP1658CJ
+ GPIO_DINGTIAN_CLK, GPIO_DINGTIAN_SDI, GPIO_DINGTIAN_Q7, GPIO_DINGTIAN_PL, GPIO_DINGTIAN_RCK, // Dingtian relay board - 595's & 165's pins
+ GPIO_LD2410_TX, GPIO_LD2410_RX, // HLK-LD2410
+ GPIO_MBR_TX_ENA, GPIO_NRG_MBS_TX_ENA, // Modbus Bridge Serial Transmit Enable
+ GPIO_ME007_TRIG, GPIO_ME007_RX, // ME007 Serial/Trigger interface
+ GPIO_TUYAMCUBR_TX, GPIO_TUYAMCUBR_RX, // TuyaMCU Bridge
+ GPIO_BIOPDU_PZEM0XX_TX, GPIO_BIOPDU_PZEM016_RX, GPIO_BIOPDU_BIT, // Biomine BioPDU 625x12
+ GPIO_MCP23XXX_INT, GPIO_MCP23SXX_CS, // MCP23xxx Int and SPI Chip select
+ GPIO_PCF8574_INT, // PCF8574 interrupt
+ GPIO_LOX_O2_RX, // LOX-O2 RX
+ GPIO_GM861_TX, GPIO_GM861_RX, // GM861 Serial interface
+ GPIO_DINGTIAN_OE, // New version of Dingtian relay board where PL is not shared with OE
+ GPIO_HDMI_CEC, // Support for HDMI CEC
+ GPIO_HC8_RXD, // HC8 Serial interface
+ GPIO_I2S_DAC, // Audio DAC support for ESP32 and ESP32S2
+ GPIO_MAGIC_SWITCH, // MagicSwitch as in Sonoff BasicR4
+ GPIO_PIPSOLAR_TX, GPIO_PIPSOLAR_RX, // pipsolar inverter
+ GPIO_LORA_CS, GPIO_LORA_RST, GPIO_LORA_BUSY, GPIO_LORA_DI0, GPIO_LORA_DI1, GPIO_LORA_DI2, GPIO_LORA_DI3, GPIO_LORA_DI4, GPIO_LORA_DI5, // LoRa SPI
+ GPIO_TS_SPI_CS, GPIO_TS_RST, GPIO_TS_IRQ, // SPI for Universal Touch Screen
+ GPIO_RN2XX3_TX, GPIO_RN2XX3_RX, GPIO_RN2XX3_RST, // RN2XX3 LoRaWan node Serial interface
+ GPIO_TCP_TX_EN, // TCP to serial bridge, EN pin
+ GPIO_ASR650X_TX, GPIO_ASR650X_RX, // ASR650X LoRaWan node Serial interface
+ GPIO_WOOLIIS_RX, // Wooliis Battery capacity monitor Serial RX
+ GPIO_ADC_VOLTAGE, GPIO_ADC_CURRENT, // Analog Voltage and Current
+ GPIO_BL0906_RX, // BL0906 Serial interface
+ GPIO_DALI_RX_INV, GPIO_DALI_TX_INV, // DALI
+ GPIO_LD2410S_TX, GPIO_LD2410S_RX, // HLK-LD2410S
+ GPIO_I2C_SER_TX, GPIO_I2C_SER_RX, // I2C via Serial using SC18IM704 protocol (xdrv74)
+ GPIO_TM1640CLK, GPIO_TM1640DIN, // TM1640 (16 x seven-segment LED controler)
+ GPIO_TWAI_TX, GPIO_TWAI_RX, GPIO_TWAI_BO, GPIO_TWAI_CLK, // ESP32 TWAI serial interface
+ GPIO_C8_CO2_5K_TX, GPIO_C8_CO2_5K_RX, // C8-CO2-5K CO2 Sensor
+ GPIO_V9240_TX, GPIO_V9240_RX, // V9240 serial interface
+ GPIO_LD2402_TX, GPIO_LD2402_RX, // HLK-LD2402
+#ifdef ESP32
+ GPIO_HSDIO_CMD, GPIO_HSDIO_CLK, GPIO_HSDIO_RST, GPIO_HSDIO_D0, GPIO_HSDIO_D1, GPIO_HSDIO_D2, GPIO_HSDIO_D3, // Hosted MCU SDIO interface, including 1-bit and 4-bit modes
+#endif
+ GPIO_VID6608_F, GPIO_VID6608_CW, // VID6608
+ GPIO_MKSKYBLU_TX, GPIO_MKSKYBLU_RX, // MakeSkyBlue solar charge controller
+ GPIO_SENSOR_END };
+
+// Error as warning to rethink GPIO usage with max 2045
+static_assert(GPIO_SENSOR_END < 2000, "Too many UserSelectablePins");
+
+enum ProgramSelectablePins {
+ GPIO_FIX_START = 2046,
+ GPIO_USER, // User configurable needs to be 2047
+ GPIO_MAX };
+
+#define MAX_OPTIONS_A 9 // Increase if more bits are used from GpioOptionABits
+
+typedef union { // Restricted by MISRA-C Rule 18.4 but so useful...
+ uint32_t data; // Allow bit manipulation using SetOption
+ struct { // GPIO Option_A1 .. Option_A32
+ uint32_t pwm1_input : 1; // bit 0 (v9.2.0.1) - Option_A1 - (Light) Change PWM1 to input on power off and no fade running (1)
+ uint32_t dummy_energy : 1; // bit 1 (v9.3.1.2) - Option_A2 - (Energy) Enable dummy values
+ uint32_t udisplay_driver : 1; // bit 2 (v9.3.1.2) - Option_A3 - (Display) Universal display driver
+ uint32_t enable_ccloader : 1; // bit 3 (v9.4.0.5) - Option_A4 - (Zigbee) Enable CCLoader using Zigbee Rx/Tx/Rst Gpios
+ uint32_t rotary_mi_desk : 1; // bit 4 (v9.5.0.5) - Option_A5 - (Rotary) Enable Mi Desk emulation
+ uint32_t linkind_support : 1; // bit 5 (v10.1.0.4) - Option_A6 - (Light) LinkInd support
+ uint32_t shelly_pro : 1; // bit 6 (v12.2.0.1) - Option_A7 - (Device) Shelly Pro
+ uint32_t ifan04_h : 1; // bit 7 (v14.1.0.4) - Option_A8 - (Device) Sonoff ifan04-H
+ uint32_t berry_energy : 1; // bit 8 (v14.2.0.4) - Option_A9 - (Energy) Enable Berry energy driver
+ uint32_t spare09 : 1; // bit 9
+ uint32_t spare10 : 1; // bit 10
+ uint32_t spare11 : 1; // bit 11
+ uint32_t spare12 : 1; // bit 12
+ uint32_t spare13 : 1; // bit 13
+ uint32_t spare14 : 1; // bit 14
+ uint32_t spare15 : 1; // bit 15
+ uint32_t spare16 : 1; // bit 16
+ uint32_t spare17 : 1; // bit 17
+ uint32_t spare18 : 1; // bit 18
+ uint32_t spare19 : 1; // bit 19
+ uint32_t spare20 : 1; // bit 20
+ uint32_t spare21 : 1; // bit 21
+ uint32_t spare22 : 1; // bit 22
+ uint32_t spare23 : 1; // bit 23
+ uint32_t spare24 : 1; // bit 24
+ uint32_t spare25 : 1; // bit 25
+ uint32_t spare26 : 1; // bit 26
+ uint32_t spare27 : 1; // bit 27
+ uint32_t spare28 : 1; // bit 28
+ uint32_t spare29 : 1; // bit 29
+ uint32_t spare30 : 1; // bit 30
+ uint32_t spare31 : 1; // bit 31
+ };
+} GpioOptionABits;
+
+#ifdef ESP32
+enum SupportedEmulationModules {
+ SONOFF_BASIC, SONOFF_RF, SONOFF_SV, SONOFF_TH, SONOFF_DUAL, SONOFF_POW, SONOFF_4CH, SONOFF_S2X, SLAMPHER, SONOFF_TOUCH,
+ SONOFF_LED, CH1, CH4, MOTOR, ELECTRODRAGON, EXS_RELAY, WION, WEMOS_DUMMY, SONOFF_DEV, H801,
+ SONOFF_SC, SONOFF_BN, SONOFF_4CHPRO, HUAFAN_SS, SONOFF_BRIDGE, SONOFF_B1, AILIGHT, SONOFF_T11, SONOFF_T12, SONOFF_T13,
+ SUPLA1, WITTY, YUNSHAN, MAGICHOME, LUANIHVIO, KMC_70011, ARILUX_LC01, ARILUX_LC11, SONOFF_DUAL_R2, ARILUX_LC06,
+ SONOFF_S31, ZENGGE_ZF_WF017, SONOFF_POW_R2, SONOFF_IFAN02, BLITZWOLF_BWSHP, SHELLY1, SHELLY2, PHILIPS, NEO_COOLCAM, ESP_SWITCH,
+ OBI, TECKIN, APLIC_WDP303075, TUYA_DIMMER, GOSUND, ARMTRONIX_DIMMERS, SK03_TUYA, PS_16_DZ, TECKIN_US, MANZOKU_EU_4,
+ OBI2, YTF_IR_BRIDGE, DIGOO, KA10, ZX2820, MI_DESK_LAMP, SP10, WAGA, SYF05, SONOFF_L1,
+ SONOFF_IFAN03, EXS_DIMMER, PWM_DIMMER, SONOFF_D1, SONOFF_ZB_BRIDGE,
+ MAXMODULE_EMULATION };
+
+#define MAX_OPTIONS_E 1 // Increase if more emulated modules are supported from kModuleEmulationList
+
+const uint8_t kModuleEmulationList[] PROGMEM = {
+ PWM_DIMMER // (v10.1.0.4) - Option_E1 - (Light) USE_PWM_DIMMER support
+};
+#endif // ESP32
+
+// 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_DISP_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_OUTPUT_HI "|" D_SENSOR_OUTPUT_LO "|"
+ 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 "|"
+ D_SENSOR_MIEL_HVAC_TX "|" D_SENSOR_MIEL_HVAC_RX "|"
+ D_SENSOR_WE517_TX "|" D_SENSOR_WE517_RX "|"
+ D_SENSOR_AS608_TX "|" D_SENSOR_AS608_RX "|"
+ D_SENSOR_SHELLY_DIMMER_BOOT0 "|" D_SENSOR_SHELLY_DIMMER_RST_INV "|"
+ D_SENSOR_RC522_RST "|"
+ D_SENSOR_P9813_CLK "|" D_SENSOR_P9813_DAT "|"
+ D_SENSOR_OPTION " A|"
+ D_SENSOR_FTC532 "|"
+ D_SENSOR_RC522_CS "|"
+ D_SENSOR_NRF24_CS "|" D_SENSOR_NRF24_DC "|"
+ D_SENSOR_ILI9341_CS "|" D_SENSOR_ILI9341_DC "|"
+ D_SENSOR_ILI9488_CS "|"
+ D_SENSOR_EPAPER29_CS "|"
+ D_SENSOR_EPAPER42_CS "|"
+ D_SENSOR_SSD1351_CS "|"
+ D_SENSOR_RA8876_CS "|"
+ D_SENSOR_ST7789_CS "|" D_SENSOR_ST7789_DC "|"
+ D_SENSOR_SSD1331_CS "|" D_SENSOR_SSD1331_DC "|"
+ D_SENSOR_SDCARD_CS "|"
+ D_SENSOR_ROTARY " A_n|" D_SENSOR_ROTARY " B_n|"
+ D_SENSOR_ADC_PH "|"
+ D_SENSOR_BS814_CLK "|" D_SENSOR_BS814_DAT "|"
+ D_SENSOR_WIEGAND_D0 "|" D_SENSOR_WIEGAND_D1 "|"
+ D_SENSOR_NEOPOOL_TX "|" D_SENSOR_NEOPOOL_RX "|"
+ D_SENSOR_SDM72_TX "|" D_SENSOR_SDM72_RX "|"
+ D_SENSOR_TM1637_CLK "|" D_SENSOR_TM1637_DIO "|"
+ D_SENSOR_PROJECTOR_CTRL_TX "|" D_SENSOR_PROJECTOR_CTRL_RX "|"
+ D_SENSOR_SSD1351_DC "|"
+ D_SENSOR_XPT2046_CS "|"
+ D_SENSOR_CSE7761_TX "|" D_SENSOR_CSE7761_RX "|"
+ D_SENSOR_VL53LXX_XSHUT "|"
+ D_SENSOR_MAX7219_CLK "|" D_SENSOR_MAX7219_DIN "|" D_SENSOR_MAX7219_CS "|"
+ D_SENSOR_TFMINIPLUS_TX "|" D_SENSOR_TFMINIPLUS_RX "|"
+ D_SENSOR_ZEROCROSS "|"
+#ifdef ESP32
+ D_SENSOR_HALLEFFECT "|"
+ D_SENSOR_EPD_DATA "|"
+#endif
+ D_SENSOR_INPUT "|"
+#ifdef ESP32
+ D_SENSOR_BUTTON "_d|" D_SENSOR_BUTTON "_id|" D_SENSOR_SWITCH "_d|"
+#endif
+ D_SENSOR_I2S_DOUT "|" D_SENSOR_I2S_BCLK "|" D_SENSOR_I2S_WS "|" D_SENSOR_I2S_DIN "|"
+ D_SENSOR_I2S_BCLK_IN "|" D_SENSOR_I2S_WS_IN "|"
+ D_SENSOR_INTERRUPT "|"
+ D_SENSOR_MCP2515_CS "|"
+ D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX "|"
+ D_SENSOR_VINDRIKTNING_RX "|"
+ D_SENSOR_BL0939_RX "|"
+ D_SENSOR_BL0942_RX "|"
+ D_SENSOR_HM330X_SET "|"
+ D_SENSOR_HEARTBEAT "|" D_SENSOR_HEARTBEAT "_i|"
+ D_GPIO_SHIFT595_SRCLK "|" D_GPIO_SHIFT595_RCLK "|" D_GPIO_SHIFT595_OE "|" D_GPIO_SHIFT595_SER "|"
+ D_SENSOR_SOLAXX1_RTS "|"
+ D_SENSOR_OPTION " E|"
+ D_SENSOR_SDM230_TX "|" D_SENSOR_SDM230_RX "|"
+ D_SENSOR_ADC_MQ "|"
+ D_SENSOR_CM11_TX "|" D_SENSOR_CM11_RX "|"
+ D_SENSOR_BL6523_TX "|" D_SENSOR_BL6523_RX "|"
+ D_SENSOR_ADE7880_IRQ "|"
+ D_SENSOR_RESET "|"
+ D_SENSOR_MS01 "|"
+ D_SENSOR_SDIO_CMD "|" D_SENSOR_SDIO_CLK "|" D_SENSOR_SDIO_D0 "|" D_SENSOR_SDIO_D1 "|" D_SENSOR_SDIO_D2 "|" D_SENSOR_SDIO_D3 "|"
+ D_SENSOR_FLOWRATEMETER "|"
+ D_SENSOR_BP5758D_CLK "|" D_SENSOR_BP5758D_DAT "|"
+ D_SENSOR_SM2335_CLK "|" D_SENSOR_SM2335_DAT "|"
+ D_SENSOR_DFR562_BUSY "|"
+ D_GPIO_TM1621_CS "|" D_GPIO_TM1621_WR "|" D_GPIO_TM1621_RD "|" D_GPIO_TM1621_DAT "|"
+ D_SENSOR_RELAY "_b|" D_SENSOR_RELAY "_bi|"
+ D_SENSOR_I2S_MCLK "|"
+ D_SENSOR_MBR_TX "|" D_SENSOR_MBR_RX "|"
+ D_SENSOR_ADE7953_RST "|"
+ D_SENSOR_NRG_MBS_TX "|" D_SENSOR_NRG_MBS_RX "|"
+ D_SENSOR_ADE7953_CS "|"
+ D_SENSOR_DALI_RX "|" D_SENSOR_DALI_TX "|"
+ D_SENSOR_BP1658CJ_CLK "|" D_SENSOR_BP1658CJ_DAT "|"
+ D_GPIO_DINGTIAN_CLK "|" D_GPIO_DINGTIAN_SDI "|" D_GPIO_DINGTIAN_Q7 "|" D_GPIO_DINGTIAN_PL "|" D_GPIO_DINGTIAN_RCK "|"
+ D_SENSOR_LD2410_TX "|" D_SENSOR_LD2410_RX "|"
+ D_SENSOR_MBR_TX_ENA "|" D_SENSOR_NRG_MBS_TX_ENA "|"
+ D_SENSOR_ME007_TRIG "|" D_SENSOR_ME007_RX "|"
+ D_SENSOR_TUYAMCUBR_TX "|" D_SENSOR_TUYAMCUBR_RX "|"
+ D_SENSOR_BIOPDU_PZEM0XX_TX "|" D_SENSOR_BIOPDU_PZEM016_RX "|" D_SENSOR_BIOPDU_BIT "|"
+ D_SENSOR_MCP23XXX_INT "|" D_SENSOR_MCP23SXX_CS "|"
+ D_SENSOR_PCF8574_INT "|"
+ D_SENSOR_LOX_O2_RX "|"
+ D_SENSOR_GM861_TX "|" D_SENSOR_GM861_RX "|"
+ D_GPIO_DINGTIAN_OE "|"
+ D_SENSOR_HDMI_CEC "|"
+ D_SENSOR_HC8_RX "|"
+ D_SENSOR_I2S_DAC "|"
+ D_GPIO_MAGIC_SWITCH "|"
+ D_SENSOR_PIPSOLAR_TX "|" D_SENSOR_PIPSOLAR_RX "|"
+ D_GPIO_LORA_CS "|" D_GPIO_LORA_RST "|" D_GPIO_LORA_BUSY "|" D_GPIO_LORA_DI "0|" D_GPIO_LORA_DI "1|" D_GPIO_LORA_DI "2|" D_GPIO_LORA_DI "3|" D_GPIO_LORA_DI "4|" D_GPIO_LORA_DI "5|"
+ D_GPIO_TS_SPI_CS "|" D_GPIO_TS_RST "|" D_GPIO_TS_IRQ "|"
+ D_GPIO_RN2XX3_TX "|" D_GPIO_RN2XX3_RX "|" D_GPIO_RN2XX3_RST "|"
+ D_SENSOR_TCP_TXD_EN "|"
+ D_GPIO_ASR650X_TX "|" D_GPIO_ASR650X_RX "|"
+ D_SENSOR_WOOLIIS_RX "|"
+ D_SENSOR_ADC_VOLTAGE "|" D_SENSOR_ADC_CURRENT "|"
+ D_SENSOR_BL0906_RX "|"
+ D_SENSOR_DALI_RX "_i|" D_SENSOR_DALI_TX "_i|"
+ D_SENSOR_LD2410S_TX "|" D_SENSOR_LD2410S_RX "|"
+ D_SENSOR_I2C_SER_TX "|" D_SENSOR_I2C_SER_RX "|"
+ D_SENSOR_TM1640_CLK "|" D_SENSOR_TM1640_DIN "|"
+ D_SENSOR_TWAI_TX "|" D_SENSOR_TWAI_RX "|" D_SENSOR_TWAI_BO "|" D_SENSOR_TWAI_CLK "|"
+ D_SENSOR_C8_CO2_5K_TX "|" D_SENSOR_C8_CO2_5K_RX "|"
+ D_SENSOR_V9240_TX "|" D_SENSOR_V9240_RX "|"
+ D_SENSOR_LD2402_TX "|" D_SENSOR_LD2402_RX "|"
+#ifdef ESP32
+ D_SENSOR_HSDIO_CMD "|" D_SENSOR_HSDIO_CLK "|" D_SENSOR_HSDIO_RST "|" D_SENSOR_HSDIO_D0 "|" D_SENSOR_HSDIO_D1 "|" D_SENSOR_HSDIO_D2 "|" D_SENSOR_HSDIO_D3 "|"
+#endif
+ D_VID6608_F "|" D_VID6608_CW "|"
+ D_SENSOR_MKSKYBLU_TX "|" D_SENSOR_MKSKYBLU_RX "|"
+;
+
+const char kSensorNamesFixed[] PROGMEM =
+ D_SENSOR_USER;
+
+// Max number of GPIOs
+#define MAX_I2C 1 // Display no index if one bus
+#ifdef USE_I2C_BUS2
+#undef MAX_I2C
+#define MAX_I2C 2
+#endif
+#define MAX_MAX31855S 6
+#define MAX_MAX31865S 6
+#define MAX_MCP23XXX 6
+#define MAX_FLOWRATEMETER 2
+#define MAX_A4988_MSS 3
+#define MAX_WEBCAM_DATA 8
+#define MAX_WEBCAM_HSD 3
+#define MAX_SM2135_DAT 10
+#define MAX_SM2335_DAT 16
+#define MAX_DSB 4
+#define MAX_BP1658CJ_DAT 16
+#define MAX_DINGTIAN_SHIFT 4
+#define MAX_MAGIC_SWITCH_MODES 2
+#define MAX_BL0906_RX 6 // Model number of phases, 2 (EM2), 6 (EM6)
+#define MAX_BL0942_RX 8 // Baudrates 1/5 (4800), 2/6 (9600), 3/7 (19200), 4/8 (38400), Support Positive values only 1..4, Support also negative values 5..8
+#define MAX_CSE7761 2 // Model 1/2 (DUALR3), 2/2 (POWCT)
+#define MAX_TWAI SOC_TWAI_CONTROLLER_NUM
+#define MAX_GPS_RX 3 // Baudrates 1 (9600), 2 (19200), 3 (38400)
+#ifdef ESP32
+#define MAX_MKSKYBLU_IF 8 // MakeSkyBlue solar charger: ESP32-NRG supports up to 8 phases
+#else
+#define MAX_MKSKYBLU_IF 3 // MakeSkyBlue solar charger: ESP82xx-NRG supports up to 3 phases
+#endif
+
+const uint16_t kGpioNiceList[] PROGMEM = {
+ GPIO_NONE, // Not used
+ AGPIO(GPIO_OPTION_A) + AGMAX(MAX_OPTIONS_A), // Device specific options
+#ifdef ESP32
+ AGPIO(GPIO_OPTION_E) + AGMAX(MAX_OPTIONS_E), // Device module emulation
+#endif
+ AGPIO(GPIO_KEY1) + AGMAX(MAX_KEYS), // Buttons
+ AGPIO(GPIO_KEY1_NP) + AGMAX(MAX_KEYS),
+#ifdef ESP32
+ AGPIO(GPIO_KEY1_PD) + AGMAX(MAX_KEYS),
+#endif
+ AGPIO(GPIO_KEY1_INV) + AGMAX(MAX_KEYS),
+ AGPIO(GPIO_KEY1_INV_NP) + AGMAX(MAX_KEYS),
+#ifdef ESP32
+ AGPIO(GPIO_KEY1_INV_PD) + AGMAX(MAX_KEYS),
+#if defined(SOC_TOUCH_VERSION_1) || defined(SOC_TOUCH_VERSION_2)
+ AGPIO(GPIO_KEY1_TC) + AGMAX(MAX_KEYS), // Touch button
+#endif // ESP32 SOC_TOUCH_VERSION_1 or SOC_TOUCH_VERSION_2
+#endif
+ AGPIO(GPIO_SWT1) + AGMAX(MAX_SWITCHES), // User connected external switches
+ AGPIO(GPIO_SWT1_NP) + AGMAX(MAX_SWITCHES),
+#ifdef ESP32
+ AGPIO(GPIO_SWT1_PD) + AGMAX(MAX_SWITCHES),
+#endif
+#ifdef ROTARY_V1
+ AGPIO(GPIO_ROT1A) + AGMAX(MAX_ROTARIES), // Rotary A Pin
+ AGPIO(GPIO_ROT1B) + AGMAX(MAX_ROTARIES), // Rotary B Pin
+ AGPIO(GPIO_ROT1A_NP) + AGMAX(MAX_ROTARIES), // Rotary A Pin No Pullup
+ AGPIO(GPIO_ROT1B_NP) + AGMAX(MAX_ROTARIES), // Rotary B Pin No Pullup
+#endif
+ AGPIO(GPIO_REL1) + AGMAX(MAX_RELAYS), // Relays
+ AGPIO(GPIO_REL1_INV) + AGMAX(MAX_RELAYS),
+ AGPIO(GPIO_REL1_BI) + AGMAX(MAX_RELAYS), // Bistable (Latching) two coil relays
+ AGPIO(GPIO_REL1_BI_INV) + AGMAX(MAX_RELAYS),
+ AGPIO(GPIO_LED1) + AGMAX(MAX_LEDS), // Leds
+ AGPIO(GPIO_LED1_INV) + AGMAX(MAX_LEDS),
+#ifdef USE_COUNTER
+ AGPIO(GPIO_CNTR1) + AGMAX(MAX_COUNTERS), // Counters
+ AGPIO(GPIO_CNTR1_NP) + AGMAX(MAX_COUNTERS),
+#endif
+ AGPIO(GPIO_PWM1) + AGMAX(MAX_PWMS), // RGB Red or C Cold White
+ AGPIO(GPIO_PWM1_INV) + AGMAX(MAX_PWMS), // or extended PWM for ESP32
+#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_BERRY
+ AGPIO(GPIO_INPUT) + AGMAX(MAX_SWITCHES), // Pure digital input to be read via Berry
+ AGPIO(GPIO_INTERRUPT) + AGMAX(MAX_SWITCHES), // Interrupt pins to be catched by Berry
+#endif
+ AGPIO(GPIO_OUTPUT_HI), // Fixed output high
+ AGPIO(GPIO_OUTPUT_LO), // Fixed output low
+ AGPIO(GPIO_HEARTBEAT), // Every second pulsed high
+ AGPIO(GPIO_HEARTBEAT_INV), // Every second pulsed low
+ AGPIO(GPIO_RESET), // Generic reset
+#ifdef USE_FTC532
+ AGPIO(GPIO_FTC532), // FTC532 touch input
+#endif
+#ifdef USE_BS814A2
+ AGPIO(GPIO_BS814_CLK), // Holtek BS814A2 touch ctrlr
+ AGPIO(GPIO_BS814_DAT),
+#endif
+
+/*-------------------------------------------------------------------------------------------*\
+ * Protocol specifics
+\*-------------------------------------------------------------------------------------------*/
+
+#ifdef USE_I2C
+ AGPIO(GPIO_I2C_SCL) + AGMAX(MAX_I2C), // I2C SCL
+ AGPIO(GPIO_I2C_SDA) + AGMAX(MAX_I2C), // I2C SDA
+#ifdef USE_PCF8574
+ AGPIO(GPIO_PCF8574_INT), // PCF8574 Interrupt
+#endif // USE_PCF8574
+#ifdef USE_I2C_SERIAL
+ AGPIO(GPIO_I2C_SER_TX) + AGMAX(MAX_I2C), // I2C via Serial TX
+ AGPIO(GPIO_I2C_SER_RX) + AGMAX(MAX_I2C), // I2C via Serial RX
+#endif // USE_I2C_SERIAL
+#endif
+
+#if defined(USE_I2S_AUDIO) || defined (USE_I2S)
+ AGPIO(GPIO_I2S_MCLK) + AGMAX(MAX_I2S), // I2S master clock
+ AGPIO(GPIO_I2S_BCLK) + AGMAX(MAX_I2S), // I2S bit clock
+ AGPIO(GPIO_I2S_DOUT) + AGMAX(MAX_I2S), // I2S Out Data
+ AGPIO(GPIO_I2S_DAC) + AGMAX(2), // I2S DAC Output
+ AGPIO(GPIO_I2S_WS) + AGMAX(MAX_I2S), // I2S word select
+ AGPIO(GPIO_I2S_DIN) + AGMAX(MAX_I2S), // I2S IN Data
+#endif
+
+#ifdef USE_SPI
+ AGPIO(GPIO_SPI_MISO) + AGMAX(MAX_SPI), // SPI MISO
+ AGPIO(GPIO_SPI_MOSI) + AGMAX(MAX_SPI), // SPI MOSI
+ AGPIO(GPIO_SPI_CLK) + AGMAX(MAX_SPI), // SPI Clk
+ AGPIO(GPIO_SPI_CS) + AGMAX(MAX_SPI), // SPI Chip Select
+ AGPIO(GPIO_SPI_DC) + AGMAX(MAX_SPI), // SPI Data Direction
+#ifdef USE_NRF24
+ AGPIO(GPIO_NRF24_CS),
+ AGPIO(GPIO_NRF24_DC),
+#endif
+#ifdef USE_RC522
+ AGPIO(GPIO_RC522_CS), // RC522 Rfid Chip Select
+ AGPIO(GPIO_RC522_RST), // RC522 Rfid Reset
+#endif
+#ifdef USE_SDCARD
+ AGPIO(GPIO_SDCARD_CS) + AGMAX(MAX_SPI), // SDCard in SPI mode
+#endif // USE_SDCARD
+#if defined(USE_MCP2515) || defined(USE_CANSNIFFER)
+ AGPIO(GPIO_MCP2515_CS),
+#endif // USE_MCP2515
+#ifdef USE_MCP23XXX_DRV
+ AGPIO(GPIO_MCP23SXX_CS) + AGMAX(MAX_MCP23XXX),
+#endif // USE_MCP23XXX_DRV
+#ifdef USE_SPI_LORA
+ AGPIO(GPIO_LORA_CS),
+ AGPIO(GPIO_LORA_RST),
+ AGPIO(GPIO_LORA_BUSY),
+ AGPIO(GPIO_LORA_DI0),
+ AGPIO(GPIO_LORA_DI1),
+ AGPIO(GPIO_LORA_DI2),
+ AGPIO(GPIO_LORA_DI3),
+ AGPIO(GPIO_LORA_DI4),
+ AGPIO(GPIO_LORA_DI5),
+#endif // USE_SPI_LORA
+#endif // USE_SPI
+
+#if defined(USE_SDCARD) && defined(ESP32)
+ AGPIO(GPIO_SDIO_CMD), // SDCard in SDIO mode
+ AGPIO(GPIO_SDIO_CLK),
+ AGPIO(GPIO_SDIO_D0),
+ AGPIO(GPIO_SDIO_D1), // (opt) if in 4-bit mode, DAT1-3 are needed
+ AGPIO(GPIO_SDIO_D2),
+ AGPIO(GPIO_SDIO_D3),
+#endif // USE_SDCARD
+
+ 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
+
+#if defined(USE_DISPLAY) || defined(USE_LVGL)
+#ifdef USE_UNIVERSAL_TOUCH
+ AGPIO(GPIO_TS_SPI_CS), // Touch CS
+ AGPIO(GPIO_TS_RST), // Touch Reset
+ AGPIO(GPIO_TS_IRQ), // Touch IRQ
+#endif // USE_UNIVERSAL_TOUCH
+// REMOVED
+// #ifdef USE_DISPLAY_ILI9341
+// AGPIO(GPIO_ILI9341_CS),
+// AGPIO(GPIO_ILI9341_DC),
+// #endif // USE_DISPLAY_ILI9341
+
+#ifdef USE_XPT2046
+ AGPIO(GPIO_XPT2046_CS), // XPT2046 SPI Chip Select
+#endif
+
+#ifdef USE_DISPLAY_ILI9488
+ AGPIO(GPIO_ILI9488_CS),
+#endif // USE_DISPLAY_ILI9488
+#ifdef USE_DISPLAY_EPAPER_29
+ AGPIO(GPIO_EPAPER29_CS),
+#endif // USE_DISPLAY_EPAPER_29
+#ifdef USE_DISPLAY_EPAPER_42
+ AGPIO(GPIO_EPAPER42_CS),
+#endif // USE_DISPLAY_EPAPER_42
+// REMOVED
+// #ifdef USE_DISPLAY_SSD1351
+// AGPIO(GPIO_SSD1351_CS),
+// AGPIO(GPIO_SSD1351_DC),
+// #endif // USE_DISPLAY_SSD1351
+#ifdef USE_DISPLAY_RA8876
+ AGPIO(GPIO_RA8876_CS),
+#endif // USE_DISPLAY_RA8876
+// REMOVED
+// #ifdef USE_DISPLAY_ST7789
+// AGPIO(GPIO_ST7789_CS),
+// AGPIO(GPIO_ST7789_DC),
+// #endif // USE_DISPLAY_ST7789
+// REMOVED
+// #ifdef USE_DISPLAY_SSD1331
+// AGPIO(GPIO_SSD1331_CS),
+// AGPIO(GPIO_SSD1331_DC),
+// #endif // USE_DISPLAY_SSD1331
+#ifdef USE_DISPLAY_MAX7219_MATRIX
+ #undef USE_DISPLAY_MAX7219
+ #undef USE_DISPLAY_TM1637
+ AGPIO(GPIO_MAX7219CLK),
+ AGPIO(GPIO_MAX7219DIN),
+ AGPIO(GPIO_MAX7219CS),
+#endif // USE_DISPLAY_MAX7219_MATRIX
+#ifdef USE_DISPLAY_MAX7219
+ AGPIO(GPIO_MAX7219CLK),
+ AGPIO(GPIO_MAX7219DIN),
+ AGPIO(GPIO_MAX7219CS),
+#endif // USE_DISPLAY_MAX7219
+#ifdef USE_DISPLAY_TM1637
+ AGPIO(GPIO_TM1637CLK),
+ AGPIO(GPIO_TM1637DIO),
+ AGPIO(GPIO_TM1638CLK),
+ AGPIO(GPIO_TM1638DIO),
+ AGPIO(GPIO_TM1638STB),
+#endif // USE_DISPLAY_TM1637
+#ifdef USE_DISPLAY_TM1640
+ AGPIO(GPIO_TM1640CLK),
+ AGPIO(GPIO_TM1640DIN),
+#endif // USE_DISPLAY_TM1640
+ AGPIO(GPIO_BACKLIGHT), // Display backlight control
+ AGPIO(GPIO_OLED_RESET), // OLED Display Reset
+#ifdef ESP32
+ AGPIO(GPIO_EPD_DATA), // Base connection EPD driver
+#endif
+#endif // USE_DISPLAY
+
+#ifdef USE_DISPLAY_TM1621_SONOFF
+// Initial support outside display driver
+ AGPIO(GPIO_TM1621_CS),
+ AGPIO(GPIO_TM1621_WR),
+ AGPIO(GPIO_TM1621_RD),
+ AGPIO(GPIO_TM1621_DAT),
+#endif // USE_DISPLAY_TM1621_SONOFF
+
+#ifdef USE_MAX31865
+ AGPIO(GPIO_SSPI_MAX31865_CS1) + AGMAX(MAX_MAX31865S),
+#endif
+
+#ifdef USE_MCP23XXX_DRV
+ AGPIO(GPIO_MCP23XXX_INT) + AGMAX(MAX_MCP23XXX),
+#endif
+
+#ifdef USE_HDMI_CEC
+ AGPIO(GPIO_HDMI_CEC), // HDMI CEC bus
+#endif
+
+ AGPIO(GPIO_TXD), // Serial interface
+ AGPIO(GPIO_RXD), // Serial interface
+
+/*-------------------------------------------------------------------------------------------*\
+ * Single wire sensors
+\*-------------------------------------------------------------------------------------------*/
+
+#ifdef USE_DHT
+ AGPIO(GPIO_DHT11), // DHT11
+ AGPIO(GPIO_DHT22), // DHT21, DHT22, AM2301, AM2302, AM2321
+ AGPIO(GPIO_SI7021), // iTead SI7021
+ AGPIO(GPIO_MS01), // Sonoff MS01
+ AGPIO(GPIO_DHT11_OUT), // Pseudo Single wire DHT11, DHT21, DHT22, AM2301, AM2302, AM2321
+#endif
+#ifdef USE_DS18x20
+ AGPIO(GPIO_DSB) + AGMAX(MAX_DSB), // Single wire DS18B20 or DS18S20
+ AGPIO(GPIO_DSB_OUT) + AGMAX(MAX_DSB), // Pseudo Single wire DS18B20 or DS18S20
+#endif // USE_DS18x20
+#ifdef USE_LMT01
+ AGPIO(GPIO_LMT01), // LMT01, count pulses on GPIO
+#endif
+
+/*-------------------------------------------------------------------------------------------*\
+ * Light
+\*-------------------------------------------------------------------------------------------*/
+
+#ifdef USE_LIGHT
+#ifdef USE_WS2812
+#if (USE_WS2812_HARDWARE == NEO_HW_P9813)
+ AGPIO(GPIO_P9813_CLK), // P9813 CLOCK
+ AGPIO(GPIO_P9813_DAT), // P9813 DATA
+#else
+ AGPIO(GPIO_WS2812) + AGMAX(MAX_RMT), // WS2812 Led string, using RMT on ESP32
+#endif // NEO_HW_P9813
+#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) + AGMAX(MAX_SM2135_DAT), // SM2135 DATA
+#endif // USE_SM2135
+#ifdef USE_SM2335
+ AGPIO(GPIO_SM2335_CLK), // SM2335 CLOCK
+ AGPIO(GPIO_SM2335_DAT) + AGMAX(MAX_SM2335_DAT), // SM2335 DATA
+#endif // USE_SM2335
+#ifdef USE_BP1658CJ
+ AGPIO(GPIO_BP1658CJ_CLK), // BP1658CJ CLOCK
+ AGPIO(GPIO_BP1658CJ_DAT) + AGMAX(MAX_BP1658CJ_DAT), // BP1658CJ DATA
+#endif // USE_BP1658CJ
+#ifdef USE_BP5758D
+ AGPIO(GPIO_BP5758D_CLK), // BP5758D CLOCK
+ AGPIO(GPIO_BP5758D_DAT), // BP5758D DATA
+#endif // USE_BP5758D
+#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
+#ifdef USE_SHELLY_DIMMER
+ AGPIO(GPIO_SHELLY_DIMMER_BOOT0),
+ AGPIO(GPIO_SHELLY_DIMMER_RST_INV),
+#endif
+#endif // USE_LIGHT
+
+#ifdef USE_DALI
+ AGPIO(GPIO_DALI_TX), // DALI TX
+ AGPIO(GPIO_DALI_TX_INV), // DALI TX inverted
+ AGPIO(GPIO_DALI_RX), // DALI RX
+ AGPIO(GPIO_DALI_RX_INV), // DALI RX inverted
+#endif // USE_DALI
+
+/*-------------------------------------------------------------------------------------------*\
+ * Transmission sensors
+\*-------------------------------------------------------------------------------------------*/
+
+#if defined(USE_IR_REMOTE) || defined(USE_IR_REMOTE_FULL)
+ AGPIO(GPIO_IRSEND) + AGMAX(MAX_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) + AGMAX(MAX_SR04), // SR04 Tri/TXgger pin
+ AGPIO(GPIO_SR04_ECHO) + AGMAX(MAX_SR04), // SR04 Ech/RXo pin
+#endif
+#ifdef USE_ME007
+ AGPIO(GPIO_ME007_TRIG), // ME007 Trigger pin (xsns_23_me007.ino)
+ AGPIO(GPIO_ME007_RX), // ME007 Rx pin (xsns_23_me007.ino)
+#endif
+#ifdef USE_TM1638
+ AGPIO(GPIO_TM1638CLK), // TM1638 Clock
+ AGPIO(GPIO_TM1638DIO), // TM1638 Data I/O
+ AGPIO(GPIO_TM1638STB), // TM1638 Strobe
+#endif
+#ifdef USE_HX711
+ AGPIO(GPIO_HX711_SCK), // HX711 Load Cell clock
+ AGPIO(GPIO_HX711_DAT), // HX711 Load Cell data
+#endif
+#ifdef USE_TFMINIPLUS
+ AGPIO(GPIO_TFMINIPLUS_TX), // TFmini Plus TX pin
+ AGPIO(GPIO_TFMINIPLUS_RX), // TFmini Plus RX pin
+#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_ADE7880)
+ AGPIO(GPIO_ADE7880_IRQ) + AGMAX(2), // ADE7880 IRQ - (1 = IRQ1, 2 = IRQ2)
+#endif
+#ifdef USE_ADE7953
+#if defined(USE_I2C) || defined(USE_SPI)
+ AGPIO(GPIO_ADE7953_IRQ) + AGMAX(6), // ADE7953 IRQ - (1 = Shelly 2.5, 2 = Shelly EM, 3 = Shelly Plus 2PM, 4 = Shelly Pro 1PM, 5 = Shelly Pro 2PM, 6 = Shelly Pro 4PM)
+ AGPIO(GPIO_ADE7953_RST), // ADE7953 Reset
+#ifdef USE_SPI
+ AGPIO(GPIO_ADE7953_CS) + AGMAX(2), // ADE7953 SPI Chip Select (1 = CS1 (1PM, 2PM), 2 = CS2 (2PM))
+#endif // USE_SPI
+#endif // USE_I2C or USE_SPI
+#endif // USE_ADE7953
+#ifdef USE_CSE7761
+ AGPIO(GPIO_CSE7761_TX), // CSE7761 Serial interface (Dual R3)
+ AGPIO(GPIO_CSE7761_RX) + AGMAX(MAX_CSE7761), // CSE7761 Serial interface (1 = Dual R3, 2 = POWCT)
+#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
+ AGPIO(GPIO_NRG_MBS_TX_ENA), // Generic Energy Modbus Transmit Enable
+#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_MODBUS_ENERGY
+ AGPIO(GPIO_NRG_MBS_TX), // Generic Energy Modbus device
+ AGPIO(GPIO_NRG_MBS_RX),
+#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
+ AGPIO(GPIO_SOLAXX1_RTS), // Solax Inverter RTS 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 // USE_LE01MR
+#ifdef ESP32
+#ifdef USE_BL0906
+ AGPIO(GPIO_BL0906_RX) + AGMAX(MAX_BL0906_RX), // BL0906 Serial interface (Athom EM6)
+#endif // USE_BL0906
+#endif // ESP32
+#if defined(USE_BL0940) || defined(USE_BL09XX)
+ AGPIO(GPIO_BL0939_RX), // BL0939 Serial interface (Dual R3 v2)
+ AGPIO(GPIO_BL0940_RX), // BL0940 Serial interface
+ AGPIO(GPIO_BL0942_RX) + AGMAX(MAX_BL0942_RX), // BL0942 Serial interface
+#endif
+#ifdef USE_IEM3000
+ AGPIO(GPIO_IEM3000_TX), // IEM3000 Serial interface
+ AGPIO(GPIO_IEM3000_RX), // IEM3000 Serial interface
+#endif
+#ifdef USE_WE517
+ AGPIO(GPIO_WE517_TX), // WE517 Serial interface
+ AGPIO(GPIO_WE517_RX), // WE517 Serial interface
+#endif
+#ifdef USE_SDM72
+ AGPIO(GPIO_SDM72_TX), // SDM72 Serial interface
+ AGPIO(GPIO_SDM72_RX), // SDM72 Serial interface
+#endif
+ AGPIO(GPIO_ZEROCROSS),
+#ifdef USE_SDM230
+ AGPIO(GPIO_SDM230_TX), // SDM230 Serial interface
+ AGPIO(GPIO_SDM230_RX), // SDM230 Serial interface
+#endif
+#ifdef USE_BL6523
+ AGPIO(GPIO_BL6523_TX), // BL6523 based Watt meter Serial interface
+ AGPIO(GPIO_BL6523_RX), // BL6523 based Watt meter Serial interface
+#endif
+#ifdef USE_V9240
+ AGPIO(GPIO_V9240_TX), // Serial V9240 interface
+ AGPIO(GPIO_V9240_RX), // Serial V9240 interface
+#endif
+#ifdef USE_MAKE_SKY_BLUE
+ AGPIO(GPIO_MKSKYBLU_TX) + AGMAX(MAX_MKSKYBLU_IF),
+ AGPIO(GPIO_MKSKYBLU_RX) + AGMAX(MAX_MKSKYBLU_IF),
+#endif
+#endif // USE_ENERGY_SENSOR
+
+/*-------------------------------------------------------------------------------------------*\
+ * Serial sensors
+\*-------------------------------------------------------------------------------------------*/
+
+#ifdef USE_SERIAL_BRIDGE
+ AGPIO(GPIO_SBR_TX), // Serial Bridge Serial interface
+ AGPIO(GPIO_SBR_RX), // Serial Bridge Serial interface
+#endif
+#ifdef USE_MODBUS_BRIDGE
+ AGPIO(GPIO_MBR_TX_ENA), // Modbus Bridge Serial interface
+ AGPIO(GPIO_MBR_TX), // Modbus Bridge Serial interface
+ AGPIO(GPIO_MBR_RX), // Modbus Bridge Serial interface
+#endif
+#ifdef USE_TCP_BRIDGE
+ AGPIO(GPIO_TCP_TX), // TCP Serial bridge
+ AGPIO(GPIO_TCP_RX), // TCP Serial bridge
+ AGPIO(GPIO_TCP_TX_EN), // TCP Serial bridge EN
+#endif
+#ifdef USE_ZIGBEE
+ AGPIO(GPIO_ZIGBEE_TX), // Zigbee Serial interface
+ AGPIO(GPIO_ZIGBEE_RX), // Zigbee Serial interface
+ AGPIO(GPIO_ZIGBEE_RST) + AGMAX(2), // Zigbee reset, pin 1 is reset, pin 2 is bootloader mode
+#endif
+#ifdef USE_MHZ19
+ AGPIO(GPIO_MHZ_TXD), // MH-Z19 Serial interface
+ AGPIO(GPIO_MHZ_RXD), // MH-Z19 Serial interface
+#endif
+#ifdef USE_HC8
+ AGPIO(GPIO_HC8_RXD), // HC8 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
+#ifdef USE_VINDRIKTNING
+ AGPIO(GPIO_VINDRIKTNING_RX), // Ikea Vindriktning
+#endif
+#ifdef USE_HM330X
+ AGPIO(GPIO_HM330X_SET), // HM330X Sleep pin (active low)
+#endif
+#if defined(USE_TX20_WIND_SENSOR) || defined(USE_TX23_WIND_SENSOR) || defined(USE_WS2300_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
+ AGPIO(GPIO_MP3_DFR562_BUSY), // RB-DFR-562, DFPlayer Mini MP3 Player optional Busy flag
+ #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) + AGMAX(MAX_GPS_RX), // GPS serial interface
+#endif
+#ifdef USE_HM10
+ AGPIO(GPIO_HM10_TX), // HM10 serial interface
+ AGPIO(GPIO_HM10_RX), // HM10 serial interface
+#endif
+#ifdef USE_OPENTHERM
+ AGPIO(GPIO_BOILER_OT_TX),
+ AGPIO(GPIO_BOILER_OT_RX),
+#endif
+#ifdef USE_AS608
+ AGPIO(GPIO_AS608_TX),
+ AGPIO(GPIO_AS608_RX),
+#endif
+#ifdef USE_GM861
+ AGPIO(GPIO_GM861_TX),
+ AGPIO(GPIO_GM861_RX),
+#endif
+#ifdef USE_HRG15
+ AGPIO(GPIO_HRG15_TX),
+ AGPIO(GPIO_HRG15_RX),
+#endif
+#ifdef USE_CM110x
+ AGPIO(GPIO_CM11_TXD), // CM110x Serial interface
+ AGPIO(GPIO_CM11_RXD), // CM110x Serial interface
+#endif
+#ifdef USE_LD2402
+ AGPIO(GPIO_LD2402_TX), // HLK-LD2402 Serial interface
+ AGPIO(GPIO_LD2402_RX), // HLK-LD2402 Serial interface
+#endif
+#ifdef USE_LD2410
+ AGPIO(GPIO_LD2410_TX), // HLK-LD2410 Serial interface
+ AGPIO(GPIO_LD2410_RX), // HLK-LD2410 Serial interface
+#endif
+#ifdef USE_LD2410S
+ AGPIO(GPIO_LD2410S_TX), // HLK-LD2410S Serial interface
+ AGPIO(GPIO_LD2410S_RX), // HLK-LD2410S Serial interface
+#endif
+#ifdef USE_LOX_O2
+ AGPIO(GPIO_LOX_O2_RX), // LuminOx Oxygen Sensor LOX-O2 Serial interface
+#endif
+#ifdef USE_LORAWAN_RN2XX3
+ AGPIO(GPIO_RN2XX3_TX),
+ AGPIO(GPIO_RN2XX3_RX),
+ AGPIO(GPIO_RN2XX3_RST), // RN2XX3 LoRaWan node Serial interface
+#endif
+#ifdef USE_LORAWAN_ASR650X
+ AGPIO(GPIO_ASR650X_TX),
+ AGPIO(GPIO_ASR650X_RX), // ASR650X LoRaWan node Serial interface
+#endif
+#ifdef USE_WOOLIIS
+ AGPIO(GPIO_WOOLIIS_RX), // Wooliis Battery capacity monitor Serial interface
+#endif
+#ifdef USE_C8_CO2_5K
+ AGPIO(GPIO_C8_CO2_5K_TX), // SC8-CO2-5K Serial interface
+ AGPIO(GPIO_C8_CO2_5K_RX), // SC8-CO2-5K Serial interface
+#endif
+
+#ifdef ESP32
+#ifdef USE_ESP32_TWAI
+#if SOC_TWAI_SUPPORTED
+ AGPIO(GPIO_TWAI_TX) + AGMAX(MAX_TWAI), // ESP32 TWAI serial interface
+ AGPIO(GPIO_TWAI_RX) + AGMAX(MAX_TWAI),
+ AGPIO(GPIO_TWAI_BO) + AGMAX(MAX_TWAI),
+ AGPIO(GPIO_TWAI_CLK) + AGMAX(MAX_TWAI),
+#endif
+#endif
+#endif
+
+/*-------------------------------------------------------------------------------------------*\
+ * Other sensors
+\*-------------------------------------------------------------------------------------------*/
+
+#ifdef USE_MGC3130
+ AGPIO(GPIO_MGC3130_XFER),
+ AGPIO(GPIO_MGC3130_RESET),
+#endif
+#ifdef USE_MAX31855
+ AGPIO(GPIO_MAX31855CS) + AGMAX(MAX_MAX31855S), // MAX31855 Serial interface
+ AGPIO(GPIO_MAX31855CLK), // MAX31855 Serial interface
+ AGPIO(GPIO_MAX31855DO), // MAX31855 Serial interface
+#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) + AGMAX(MAX_A4988_MSS), // A4988 microstep pin1 to 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_MIEL_HVAC
+ AGPIO(GPIO_MIEL_HVAC_TX), // Mitsubishi Electric HVAC TX pin
+ AGPIO(GPIO_MIEL_HVAC_RX), // Mitsubishi Electric HVAC RX pin
+#endif
+#ifdef USE_TUYAMCUBR
+ AGPIO(GPIO_TUYAMCUBR_TX),
+ AGPIO(GPIO_TUYAMCUBR_RX),
+#endif
+#ifdef USE_WIEGAND
+ AGPIO(GPIO_WIEGAND_D0), // Data line D0 of Wiegand devices
+ AGPIO(GPIO_WIEGAND_D1), // Data line D1 of Wiegand devices
+#endif
+#ifdef USE_NEOPOOL
+ AGPIO(GPIO_NEOPOOL_TX), // Sugar Valley RS485 Interface
+ AGPIO(GPIO_NEOPOOL_RX), // Sugar Valley RS485 Interface
+#endif
+#ifdef USE_PROJECTOR_CTRL
+ AGPIO(GPIO_PROJECTOR_CTRL_TX), // LCD/DLP Projector Serial Control
+ AGPIO(GPIO_PROJECTOR_CTRL_RX), // LCD/DLP Projector Serial Control
+#endif
+#if defined(USE_VL53L0X) or defined (USE_VL53L1X)
+ AGPIO(GPIO_VL53LXX_XSHUT1) + AGMAX(VL53LXX_MAX_SENSORS), // When using multiple VL53LXX.
+#endif
+#ifdef USE_FLOWRATEMETER
+ AGPIO(GPIO_FLOWRATEMETER_IN) + AGMAX(MAX_FLOWRATEMETER), // Flow meter Pin
+#endif
+
+#ifdef USE_SHIFT595
+ AGPIO(GPIO_SHIFT595_SRCLK), // 74x595 shift register
+ AGPIO(GPIO_SHIFT595_RCLK),
+ AGPIO(GPIO_SHIFT595_OE),
+ AGPIO(GPIO_SHIFT595_SER),
+#endif
+
+#if defined (ESP32) && defined(USE_DINGTIAN_RELAY)
+ AGPIO(GPIO_DINGTIAN_CLK) + AGMAX(MAX_DINGTIAN_SHIFT), // Dingtian Relay board - 8,16,24 or 32 relays & inputs
+ AGPIO(GPIO_DINGTIAN_SDI),
+ AGPIO(GPIO_DINGTIAN_Q7),
+ AGPIO(GPIO_DINGTIAN_PL),
+ AGPIO(GPIO_DINGTIAN_OE),
+ AGPIO(GPIO_DINGTIAN_RCK),
+#endif
+
+#ifdef USE_MAGIC_SWITCH
+ AGPIO(GPIO_MAGIC_SWITCH) + AGMAX(MAX_MAGIC_SWITCH_MODES),
+#endif
+
+#ifdef USE_PIPSOLAR
+ AGPIO(GPIO_PIPSOLAR_TX), // pipsolar inverter Serial interface
+ AGPIO(GPIO_PIPSOLAR_RX), // pipsolar inverter Serial interface
+#endif
+
+/*-------------------------------------------------------------------------------------------*\
+ * ESP32 specifics
+\*-------------------------------------------------------------------------------------------*/
+
+#ifdef ESP32
+#if CONFIG_IDF_TARGET_ESP32
+ AGPIO(GPIO_HALLEFFECT) + AGMAX(2), // Hall effect sensor connected to GPIO36 and 39
+#endif // CONFIG_IDF_TARGET_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) + AGMAX(MAX_WEBCAM_DATA),
+ AGPIO(GPIO_WEBCAM_VSYNC),
+ AGPIO(GPIO_WEBCAM_HREF),
+ AGPIO(GPIO_WEBCAM_PCLK),
+ AGPIO(GPIO_WEBCAM_PSCLK),
+ AGPIO(GPIO_WEBCAM_HSD) + AGMAX(MAX_WEBCAM_HSD),
+ AGPIO(GPIO_WEBCAM_PSRCS),
+#endif // USE_WEBCAM
+#ifdef USE_ETHERNET
+ AGPIO(GPIO_ETH_PHY_POWER),
+ AGPIO(GPIO_ETH_PHY_MDC) + AGMAX(MAX_SPI),
+ AGPIO(GPIO_ETH_PHY_MDIO), // Ethernet
+#endif // USE_ETHERNET
+#ifdef USE_BIOPDU
+ AGPIO(GPIO_BIOPDU_PZEM0XX_TX), // Biomine BioPDU pins
+ AGPIO(GPIO_BIOPDU_PZEM016_RX),
+ AGPIO(GPIO_BIOPDU_BIT) + AGMAX(3),
+#endif
+#ifdef CONFIG_ESP_WIFI_REMOTE_ENABLED
+ AGPIO(GPIO_HSDIO_CMD), // Hosted MCU SDIO interface, including 1-bit and 4-bit modes
+ AGPIO(GPIO_HSDIO_CLK),
+ AGPIO(GPIO_HSDIO_RST),
+ AGPIO(GPIO_HSDIO_D0),
+ AGPIO(GPIO_HSDIO_D1),
+ AGPIO(GPIO_HSDIO_D2),
+ AGPIO(GPIO_HSDIO_D3),
+#endif // CONFIG_ESP_WIFI_REMOTE_ENABLED
+
+/*-------------------------------------------------------------------------------------------*\
+ * ESP32 multiple Analog / Digital converter inputs
+\*-------------------------------------------------------------------------------------------*/
+
+ AGPIO(GPIO_ADC_INPUT) + AGMAX(MAX_ADCS), // Analog inputs
+ AGPIO(GPIO_ADC_TEMP) + AGMAX(MAX_ADCS), // Thermistor
+ AGPIO(GPIO_ADC_LIGHT) + AGMAX(MAX_ADCS), // Light sensor
+ AGPIO(GPIO_ADC_BUTTON) + AGMAX(MAX_KEYS), // Button
+ AGPIO(GPIO_ADC_BUTTON_INV) + AGMAX(MAX_KEYS),
+ AGPIO(GPIO_ADC_RANGE) + AGMAX(MAX_ADCS), // Range
+ AGPIO(GPIO_ADC_CT_POWER) + AGMAX(MAX_ADCS), // Current
+ AGPIO(GPIO_ADC_JOY) + AGMAX(MAX_ADCS), // Joystick
+ AGPIO(GPIO_ADC_PH) + AGMAX(MAX_ADCS), // Analog PH Sensor
+ AGPIO(GPIO_ADC_MQ) + AGMAX(MAX_ADCS), // Analog MQ Sensor
+ AGPIO(GPIO_ADC_VOLTAGE) + AGMAX(MAX_ADCS), // Voltage
+ AGPIO(GPIO_ADC_CURRENT) + AGMAX(MAX_ADCS), // Current
+#endif // ESP32
+
+
+#ifdef USE_VID6608
+ AGPIO(GPIO_VID6608_F) + AGMAX(4), // VID6608 step interface (max 4 motors)
+ AGPIO(GPIO_VID6608_CW) + AGMAX(4), // VID6608 direction interface (max 4 motors)
+#endif
+
+};
+
+/*-------------------------------------------------------------------------------------------*\
+ * ESP8266 single Analog / Digital converter input
+\*-------------------------------------------------------------------------------------------*/
+
+#ifdef ESP8266
+const uint16_t kAdcNiceList[] PROGMEM = {
+ GPIO_NONE, // Not used
+ AGPIO(GPIO_ADC_INPUT), // Analog inputs
+ AGPIO(GPIO_ADC_TEMP), // Thermistor
+ AGPIO(GPIO_ADC_LIGHT), // Light sensor
+ AGPIO(GPIO_ADC_BUTTON) + AGMAX(MAX_KEYS), // Button
+ AGPIO(GPIO_ADC_BUTTON_INV) + AGMAX(MAX_KEYS),
+ AGPIO(GPIO_ADC_RANGE), // Range
+ AGPIO(GPIO_ADC_CT_POWER), // Current
+ AGPIO(GPIO_ADC_JOY), // Joystick
+ AGPIO(GPIO_ADC_PH), // Analog PH Sensor
+ AGPIO(GPIO_ADC_MQ), // Analog MQ Sensor
+ AGPIO(GPIO_ADC_VOLTAGE), // Voltage
+ AGPIO(GPIO_ADC_CURRENT), // Current
+};
+#endif // ESP8266
+
+/*********************************************************************************************\
+ * ATTENTION: No user changeable features beyond this point - do not add templates !!!
+\*********************************************************************************************/
+
+#define GPIO_ANY 32 // Any GPIO
+
+#ifdef ESP8266
+
+#define MAX_GPI8_PIN 17 // Number of supported GPIO (0..16)
+#define FLASH_PINS 6 // Number of flash chip pins
+
+#define MAX_GPIO_PIN 18 // Number of supported GPIO (0..16 + ADC0)
+#define ADC0_PIN 17 // Pin number of 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
+
+#endif // ESP8266
+
+#ifdef ESP32
+#if CONFIG_IDF_TARGET_ESP32C2
+
+/* ****************************************
+ * ESP32C2
+ * ****************************************/
+#define MAX_GPIO_PIN 21 // Number of supported GPIO
+#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO11 to 17)
+#define MAX_USER_PINS 21 // MAX_GPIO_PIN - MIN_FLASH_PINS
+#define WEMOS_MODULE 0 // Wemos module
+
+// 0 1 2 3 4 5 6 7 8 91011121314151617181920
+const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOIOIOIOIOIOIOFLFLFLFLFLFLFLIORXTX";
+
+#elif CONFIG_IDF_TARGET_ESP32C3
+
+/* ****************************************
+ * ESP32C3
+ * ****************************************/
+#define MAX_GPIO_PIN 22 // Number of supported GPIO
+#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO11 to 17)
+#define MAX_USER_PINS 22 // MAX_GPIO_PIN - MIN_FLASH_PINS
+#define WEMOS_MODULE 0 // Wemos module
+
+// 0 1 2 3 4 5 6 7 8 9101112131415161718192021
+const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOIOIOIOIOIOFLFLFLFLFLFLFLIOIORXTX";
+
+#elif CONFIG_IDF_TARGET_ESP32C5 // ESP32-C5
+/* ****************************************
+ * ESP32C5
+ * ****************************************/
+#define MAX_GPIO_PIN 29 // Number of supported GPIO
+#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO16-22 SPI0/1)
+#define MAX_USER_PINS 29 // MAX_GPIO_PIN - MIN_FLASH_PINS
+#define WEMOS_MODULE 0 // Wemos module
+
+// 0 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829
+const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOIOIOIOIOIOIOIOFLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIO";
+
+#elif CONFIG_IDF_TARGET_ESP32C6
+
+/* ****************************************
+ * ESP32C6
+ * ****************************************/
+#define MAX_GPIO_PIN 31 // Number of supported GPIO
+#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO24 to 30)
+#define MAX_USER_PINS 31 // MAX_GPIO_PIN - MIN_FLASH_PINS
+#define WEMOS_MODULE 0 // Wemos module
+
+// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930
+const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOAOIOIOIOIOIOIOIOIOIOTXRXIOIOIOIOIOIOFLFLFLFLFLFLFL";
+
+#elif CONFIG_IDF_TARGET_ESP32S2
+
+/* ****************************************
+ * ESP32S2
+ * ****************************************/
+#define MAX_GPIO_PIN 47 // Number of supported GPIO
+#define MIN_FLASH_PINS 11 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI)
+#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 910111213141516171819202122232425262728293031323334353637383940414243444546
+const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOIO--------FLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOI ";
+
+#elif CONFIG_IDF_TARGET_ESP32S3
+/* ****************************************
+ * ESP32S3
+ * GPIOs 0..21 + 33..48
+ * - 22..25 are not used
+ * - 26..32 are used for SPI Flash
+ * - 33..37 are used by PSRAM
+ * ****************************************/
+#define MAX_GPIO_PIN 49 // Number of supported GPIO, 0..48
+#define MIN_FLASH_PINS 11 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI)
+#define MAX_USER_PINS 38 // MAX_GPIO_PIN - MIN_FLASH_PINS
+#define WEMOS_MODULE 0 // Wemos module
+
+// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748
+const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOIO--------FLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIO";
+
+#elif CONFIG_IDF_TARGET_ESP32P4
+/* ****************************************
+ * ESP32P4
+ * GPIOs 0..54
+ * - 34..38 strapping pins
+ * ****************************************/
+#define MAX_GPIO_PIN 55 // Number of supported GPIO, 0..55
+#define MIN_FLASH_PINS 00 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI)
+#define MAX_USER_PINS 55 // MAX_GPIO_PIN - MIN_FLASH_PINS
+#define WEMOS_MODULE 0 // Wemos module
+
+// 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
+const char PINS_WEMOS[] PROGMEM = "IOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOAOAOAOAOAOAOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOAOAOAOAO";
+
+#else // not CONFIG_IDF_TARGET_ESP32C2/C3/C6 nor CONFIG_IDF_TARGET_ESP32S2 - ESP32
+
+/* ****************************************
+ * ESP32 - including Pico
+ *
+ * The initial template was 0-5 9-10 12-39
+ * New template covers 0-27 32-39
+ * However to maintain backwards compatibility, the following mapping occures
+ * Template GPIO | Phyiscal GPIO
+ * 28 | 6
+ * 29 | 7
+ * 30 | 8
+ * 31 | 11
+ * ****************************************/
+// Conversion table
+#define ESP32_TEMPLATE_TO_PHY \
+ 0, 1, 2, 3, 4, 5, \
+ 9, 10, \
+ 12, 13, 14, 15, 16, 17, 18, 19, \
+ 20, 21, 22, 23, 24, 25, 26, 27, \
+ 6, 7, 8, 11, /* 28-31 */ \
+ 32, 33, 34, 35, 36, 37, 38, 39
+
+#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 = "IOTXIORXIOIOFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIO--------AOAOIAIAIAIAIAIA";
+
+#endif // ESP32/S2/C2/C3/C6/P4 selection
+#endif // ESP32
+
+/********************************************************************************************\
+ * !!! Changes in below type sizes impact Settings layout - Add fill bytes in Settings !!!
+\********************************************************************************************/
+
+typedef struct MYIO {
+ uint16_t io[MAX_GPIO_PIN];
+} myio; // ESP8266: 18*2 = 36 bytes / ESP32: 40*2 = 80 bytes / ESP32-C3: 22*2 = 44 bytes / ESP32-S2: 47*2 = 94 bytes / ESP32-S3: 49*2 = 98 bytes
+
+typedef struct MYCFGIO {
+ uint16_t io[MAX_USER_PINS];
+} mycfgio; // ESP8266: 14*2 = 28 bytes / ESP32: 36*2 = 72 bytes / ESP32-C3: 22*2 = 44 bytes / ESP32-S2: 36*2 = 72 bytes / ESP32-S3: 33*2 = 66 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 / 44 / 72 bytes
+ gpio_flag flag; // 2 bytes
+} mytmplt; // 30 / 74 / 46 / 74 bytes
+
+//********************************************************************************************
+
+#ifdef ESP8266
+#include "include/tasmota_template_legacy.h"
+
+/********************************************************************************************\
+ * ESP8266 Module Templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported ESP8266 hardware modules
+enum SupportedModulesESP8266 {
+ SONOFF_BASIC, SONOFF_RF, SONOFF_SV, SONOFF_TH, SONOFF_DUAL, SONOFF_POW, SONOFF_4CH, SONOFF_S2X, SLAMPHER, SONOFF_TOUCH,
+ SONOFF_LED, CH1, CH4, MOTOR, ELECTRODRAGON, EXS_RELAY, WION, WEMOS, SONOFF_DEV, H801,
+ SONOFF_SC, SONOFF_BN, SONOFF_4CHPRO, HUAFAN_SS, SONOFF_BRIDGE, SONOFF_B1, AILIGHT, SONOFF_T11, SONOFF_T12, SONOFF_T13,
+ SUPLA1, WITTY, YUNSHAN, MAGICHOME, LUANIHVIO, KMC_70011, ARILUX_LC01, ARILUX_LC11, SONOFF_DUAL_R2, ARILUX_LC06,
+ SONOFF_S31, ZENGGE_ZF_WF017, SONOFF_POW_R2, SONOFF_IFAN02, BLITZWOLF_BWSHP, SHELLY1, SHELLY2, PHILIPS, NEO_COOLCAM, ESP_SWITCH,
+ OBI, TECKIN, APLIC_WDP303075, TUYA_DIMMER, GOSUND, ARMTRONIX_DIMMERS, SK03_TUYA, PS_16_DZ, TECKIN_US, MANZOKU_EU_4,
+ OBI2, YTF_IR_BRIDGE, DIGOO, KA10, ZX2820, MI_DESK_LAMP, SP10, WAGA, SYF05, SONOFF_L1,
+ SONOFF_IFAN03, EXS_DIMMER, PWM_DIMMER, SONOFF_D1, SONOFF_ZB_BRIDGE,
+ MAXMODULE };
+
+const char kModuleNames[] PROGMEM =
+ "Sonoff Basic|Sonoff RF|Sonoff SV|Sonoff TH|Sonoff Dual|Sonoff Pow|Sonoff 4CH|Sonoff S2X|Slampher|Sonoff Touch|"
+ "Sonoff LED|1 Channel|4 Channel|Motor C/AC|ElectroDragon|EXS Relay(s)|WiOn|Generic|Sonoff Dev|H801|"
+ "Sonoff SC|Sonoff BN-SZ|Sonoff 4CH Pro|Huafan SS|Sonoff Bridge|Sonoff B1|AiLight|Sonoff T1 1CH|Sonoff T1 2CH|Sonoff T1 3CH|"
+ "Supla Espablo|Witty Cloud|Yunshan Relay|MagicHome|Luani HVIO|KMC 70011|Arilux LC01|Arilux LC11|Sonoff Dual R2|Arilux LC06|"
+ "Sonoff S31|Zengge WF017|Sonoff Pow R2|Sonoff iFan02|BlitzWolf SHP|Shelly 1|Shelly 2|Xiaomi Philips|Neo Coolcam|ESP Switch|"
+ "OBI Socket|Teckin|AplicWDP303075|Tuya MCU|Gosund SP1 v23|ARMTR Dimmer|SK03 Outdoor|PS-16-DZ|Teckin US|Manzoku strip|"
+ "OBI Socket 2|YTF IR Bridge|Digoo DG-SP202|KA10|Luminea ZX2820|Mi Desk Lamp|SP10|WAGA CHCZ02MB|SYF05|Sonoff L1|"
+ "Sonoff iFan03|EXS Dimmer|PWM Dimmer|Sonoff D1|Sonoff ZbBridge"
+ ;
+
+const uint8_t kModuleNiceList[] PROGMEM = {
+ SONOFF_BASIC, // Sonoff Relay Devices
+ SONOFF_RF,
+ SONOFF_TH,
+ SONOFF_DUAL,
+ SONOFF_DUAL_R2,
+ SONOFF_POW,
+ SONOFF_POW_R2,
+ SONOFF_4CH,
+ SONOFF_4CHPRO,
+ SONOFF_S31, // Sonoff Socket Relay Devices with Energy Monitoring
+ SONOFF_S2X, // Sonoff Socket Relay Devices
+ SONOFF_TOUCH, // Sonoff Switch Devices
+ SONOFF_T11,
+ SONOFF_T12,
+ SONOFF_T13,
+#ifdef USE_SONOFF_D1
+ SONOFF_D1, // Sonoff D1
+#endif
+ SONOFF_LED, // Sonoff Light Devices
+ SONOFF_BN,
+#ifdef USE_SONOFF_L1
+ SONOFF_L1,
+#endif
+ SONOFF_B1, // Sonoff Light Bulbs
+ SLAMPHER,
+#ifdef USE_SONOFF_SC
+ SONOFF_SC, // Sonoff Environmemtal Sensor
+#endif
+#ifdef USE_SONOFF_IFAN
+ SONOFF_IFAN02, // Sonoff Fan
+ SONOFF_IFAN03,
+#endif
+#ifdef USE_SONOFF_RF
+ SONOFF_BRIDGE, // Sonoff Bridge
+#endif
+#ifdef USE_ZIGBEE_EZSP
+ SONOFF_ZB_BRIDGE,
+#endif
+ SONOFF_SV, // Sonoff Development Devices
+ SONOFF_DEV,
+ CH1, // Relay Devices
+ CH4,
+ MOTOR,
+ ELECTRODRAGON,
+ EXS_RELAY,
+ SUPLA1,
+ LUANIHVIO,
+ YUNSHAN,
+ WION,
+ SHELLY1,
+ SHELLY2,
+ BLITZWOLF_BWSHP, // Socket Relay Devices with Energy Monitoring
+ TECKIN,
+ TECKIN_US,
+ APLIC_WDP303075,
+ GOSUND,
+ ZX2820,
+ SK03_TUYA,
+ DIGOO,
+ KA10,
+ SP10,
+ WAGA,
+ NEO_COOLCAM, // Socket Relay Devices
+ OBI,
+ OBI2,
+ MANZOKU_EU_4,
+ ESP_SWITCH, // Switch Devices
+#ifdef USE_TUYA_MCU
+ TUYA_DIMMER, // Dimmer Devices
+#endif
+#ifdef USE_ARMTRONIX_DIMMERS
+ ARMTRONIX_DIMMERS,
+#endif
+#ifdef USE_PS_16_DZ
+ PS_16_DZ,
+#endif
+#ifdef USE_EXS_DIMMER
+ EXS_DIMMER,
+#endif
+#ifdef USE_PWM_DIMMER
+ PWM_DIMMER,
+#endif
+ H801, // Light Devices
+ MAGICHOME,
+ ARILUX_LC01,
+ ARILUX_LC06,
+ ARILUX_LC11,
+ ZENGGE_ZF_WF017,
+ HUAFAN_SS,
+#ifdef ROTARY_V1
+ MI_DESK_LAMP,
+#endif
+ KMC_70011,
+ AILIGHT, // Light Bulbs
+ PHILIPS,
+ SYF05,
+ YTF_IR_BRIDGE,
+ WITTY, // Development Devices
+ WEMOS
+};
+
+enum SupportedTemplates8285 {
+ TMP_SONOFF_BASIC, TMP_SONOFF_SV, TMP_SONOFF_DUAL, TMP_SONOFF_POW, TMP_SONOFF_LED, TMP_ELECTRODRAGON,
+ TMP_EXS_RELAY, TMP_WION, TMP_SONOFF_DEV, TMP_H801, TMP_SONOFF_SC, TMP_SONOFF_BN, TMP_HUAFAN_SS, TMP_SONOFF_BRIDGE,
+ TMP_SONOFF_B1, TMP_AILIGHT, TMP_SONOFF_T11, TMP_SUPLA1, TMP_WITTY, TMP_YUNSHAN, TMP_MAGICHOME,
+ TMP_LUANIHVIO, TMP_KMC_70011, TMP_ARILUX_LC01, TMP_ARILUX_LC11, TMP_ARILUX_LC06, TMP_ZENGGE_ZF_WF017,
+ TMP_SONOFF_POW_R2, TMP_BLITZWOLF_BWSHP, TMP_SHELLY1, TMP_SHELLY2, TMP_PHILIPS, TMP_NEO_COOLCAM, TMP_ESP_SWITCH, TMP_OBI,
+ TMP_TECKIN, TMP_APLIC_WDP303075, TMP_TUYA_DIMMER, TMP_GOSUND, TMP_ARMTRONIX_DIMMERS, TMP_SK03_TUYA, TMP_PS_16_DZ,
+ TMP_TECKIN_US, TMP_MANZOKU_EU_4, TMP_OBI2, TMP_YTF_IR_BRIDGE, TMP_DIGOO, TMP_KA10, TMP_ZX2820, TMP_MI_DESK_LAMP, TMP_SP10,
+ TMP_WAGA, TMP_SYF05, TMP_EXS_DIMMER, TMP_PWM_DIMMER, TMP_SONOFF_ZB_BRIDGE,
+ TMP_MAXMODULE_8285 };
+
+enum SupportedTemplates8266 {
+ TMP_WEMOS = TMP_MAXMODULE_8285, TMP_SONOFF_4CH, TMP_SONOFF_T12, TMP_SONOFF_T13, TMP_SONOFF_DUAL_R2, TMP_SONOFF_IFAN03,
+ TMP_MAXMODULE_8266 };
+
+const uint8_t kModuleTemplateList[MAXMODULE] PROGMEM = {
+ TMP_SONOFF_BASIC,
+ TMP_SONOFF_BASIC, // SONOFF_RF
+ TMP_SONOFF_SV,
+ TMP_SONOFF_BASIC, // SONOFF_TH
+ TMP_SONOFF_DUAL,
+ TMP_SONOFF_POW,
+ TMP_SONOFF_4CH,
+ TMP_SONOFF_BASIC, // SONOFF_S2X
+ TMP_SONOFF_BASIC, // SLAMPHER
+ TMP_SONOFF_T11, // SONOFF_TOUCH
+ TMP_SONOFF_LED,
+ TMP_SONOFF_BASIC, // CH1
+ TMP_SONOFF_DUAL, // CH4
+ TMP_SONOFF_BASIC, // MOTOR
+ TMP_ELECTRODRAGON,
+ TMP_EXS_RELAY,
+ TMP_WION,
+ TMP_WEMOS,
+ TMP_SONOFF_DEV,
+ TMP_H801,
+ TMP_SONOFF_SC,
+ TMP_SONOFF_BN,
+ TMP_SONOFF_4CH, // SONOFF_4CHPRO
+ TMP_HUAFAN_SS,
+ TMP_SONOFF_BRIDGE,
+ TMP_SONOFF_B1,
+ TMP_AILIGHT,
+ TMP_SONOFF_T11,
+ TMP_SONOFF_T12,
+ TMP_SONOFF_T13,
+ TMP_SUPLA1,
+ TMP_WITTY,
+ TMP_YUNSHAN,
+ TMP_MAGICHOME,
+ TMP_LUANIHVIO,
+ TMP_KMC_70011,
+ TMP_ARILUX_LC01,
+ TMP_ARILUX_LC11,
+ TMP_SONOFF_DUAL_R2,
+ TMP_ARILUX_LC06,
+ TMP_SONOFF_POW_R2, // SONOFF_S31
+ TMP_ZENGGE_ZF_WF017,
+ TMP_SONOFF_POW_R2,
+ TMP_SONOFF_4CH, // SONOFF_IFAN02
+ TMP_BLITZWOLF_BWSHP,
+ TMP_SHELLY1,
+ TMP_SHELLY2,
+ TMP_PHILIPS,
+ TMP_NEO_COOLCAM,
+ TMP_ESP_SWITCH,
+ TMP_OBI,
+ TMP_TECKIN,
+ TMP_APLIC_WDP303075,
+ TMP_TUYA_DIMMER,
+ TMP_GOSUND,
+ TMP_ARMTRONIX_DIMMERS,
+ TMP_SK03_TUYA,
+ TMP_PS_16_DZ,
+ TMP_TECKIN_US,
+ TMP_MANZOKU_EU_4,
+ TMP_OBI2,
+ TMP_YTF_IR_BRIDGE,
+ TMP_DIGOO,
+ TMP_KA10,
+ TMP_ZX2820,
+ TMP_MI_DESK_LAMP,
+ TMP_SP10,
+ TMP_WAGA,
+ TMP_SYF05,
+ TMP_SONOFF_DUAL, // SONOFF_L1
+ TMP_SONOFF_IFAN03,
+ TMP_EXS_DIMMER,
+ TMP_PWM_DIMMER,
+ TMP_SONOFF_DUAL, // SONOFF_D1
+ TMP_SONOFF_ZB_BRIDGE,
+ };
+
+/*********************************************************************************************\
+ * Templates with 12 usable pins (ESP8266)
+\*********************************************************************************************/
+
+const mytmplt8266 kModules8266[TMP_MAXMODULE_8285] PROGMEM = {
+ { // SONOFF_BASIC - Sonoff Basic (ESP8266)
+ 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)
+ // 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)
+ 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)
+ GPI8_KEY1, // GPIO00 Button
+ GPI8_USER, // GPIO01 Serial RXD and Optional sensor
+ 0,
+ 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)
+ 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,
+ GPI8_USER // ADC0 Analog input
+ },
+ { // SONOFF_DUAL - Sonoff Dual (ESP8266)
+ GPI8_USER, // GPIO00 Pad
+ GPI8_TXD, // GPIO01 Relay control
+ 0,
+ GPI8_RXD, // GPIO03 Relay control
+ GPI8_USER, // GPIO04 Optional sensor
+ 0,
+ // 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)
+ 0,
+ 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)
+ GPI8_KEY1, // GPIO00 Button
+ 0, 0, 0, 0,
+ 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)
+ 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)
+ GPI8_KEY1, // GPIO00 Button
+ 0, 0, 0,
+ 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)
+ 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)
+ 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)
+ 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
+ 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)
+ 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
+ GPI8_USER, // GPIO00 Optional sensor (pm clock)
+ 0,
+ 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)
+ // 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)
+ GPI8_USER, // GPIO12 Optional sensor (pm data)
+ GPI8_KEY1, // GPIO13 Button
+ 0,
+ GPI8_REL1, // GPIO15 Relay (0 = Off, 1 = On)
+ 0, 0
+ },
+ { // SONOFF_DEV - Sonoff Dev (ESP8266)
+ GPI8_KEY1, // GPIO00 E-FW Button
+ GPI8_USER, // GPIO01 TX Serial RXD and Optional sensor
+ 0, // GPIO02
+ 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)
+ GPI8_USER, // GPIO12
+ GPI8_USER, // GPIO13 BLUE LED
+ GPI8_USER, // GPIO14 Optional sensor
+ 0, // GPIO15
+ 0, // GPIO16
+ GPI8_USER // ADC0 A0 Analog input
+ },
+ { // H801 - Lixada H801 Wifi (ESP8266)
+ 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)
+ GPI8_PWM3, // GPIO12 Blue
+ GPI8_PWM2, // GPIO13 Green
+ GPI8_PWM4, // GPIO14 W1 - PWM4
+ GPI8_PWM1, // GPIO15 Red
+ 0, 0
+ },
+ { // SONOFF_SC - onoff SC (ESP8266)
+ 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)
+ // 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)
+ 0,
+ 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)
+ 0, 0, 0, 0, 0, 0,
+ // 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)
+ 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
+ GPI8_LEDLNK_INV, // GPIO00 Blue Led (0 = On, 1 = Off) - Link status
+ 0, 0,
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ // 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)
+ GPI8_DI, // GPIO12 my9231 DI
+ 0,
+ GPI8_DCKI, // GPIO14 my9231 DCKI
+ 0, 0, 0
+ },
+ { // AILIGHT - Ai-Thinker RGBW led (ESP8266 - my9291)
+ 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)
+ // 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)
+ 0,
+ GPI8_DI, // GPIO13 my9291 DI
+ 0,
+ GPI8_DCKI, // GPIO15 my9291 DCKI
+ 0, 0
+ },
+ { // SONOFF_T11 - Sonoff T1 1CH (ESP8285)
+ 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)
+ // 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)
+ 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
+ GPI8_USER, // GPIO01 Serial RXD and Optional sensor
+#ifdef USE_DS18x20
+ GPI8_DSB, // GPIO02 DS18B20 sensor
+#else
+ GPI8_USER, // GPIO02 Optional sensor
+#endif
+ 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)
+ GPI8_USER, // GPIO12 Optional sensor
+ GPI8_REL2, // GPIO13 Relay 2 (0 = Off, 1 = On)
+ GPI8_USER, // GPIO14 Optional sensor
+ 0,
+ 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
+ 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)
+ 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
+ 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)
+ // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
+ // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
+ // GPIO11 (SD_CMD Flash)
+ 0, 0, 0, 0, 0, 0
+ },
+ { // 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,
+ 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)
+ 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
+ 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)
+ 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,
+ GPI8_USER // ADC0 A0 Analog input
+ },
+ { // KMC_70011 - KMC 70011
+ // https://www.amazon.com/KMC-Timing-Monitoring-Network-125V-240V/dp/B06XRX2GTQ
+ GPI8_KEY1, // GPIO00 Button
+ 0, 0, 0,
+ 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)
+ 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)
+ 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)
+ 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)
+ 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)
+ 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
+ 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)
+ // 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)
+ 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
+ GPI8_KEY1, // GPIO00 Optional Button
+ 0,
+ GPI8_USER, // GPIO02 Empty pad
+ 0,
+ GPI8_USER, // GPIO04 W2 - PWM5
+ 0,
+ // 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)
+ 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)
+ GPI8_KEY1, // GPIO00 Button
+ GPI8_CSE7766_TX, // GPIO01 Serial RXD 4800 baud 8E1 CSE7766 energy sensor
+ 0,
+ GPI8_CSE7766_RX, // GPIO03 Serial TXD
+ 0, 0,
+ // 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)
+ 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)
+ // https://www.banggood.com/BlitzWolf-BW-SHP2-Smart-WIFI-Socket-EU-Plug-220V-16A-Work-with-Amazon-Alexa-Google-Assistant-p-1292899.html
+ // 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
+ 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,
+ 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)
+ 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/
+ 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,
+ 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)
+ // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
+ // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
+ // GPIO11 (SD_CMD Flash)
+ 0, 0, 0, 0, 0, 0
+ },
+ { // SHELLY2 - Shelly2 (ESP8266 - 2MB) - https://shelly.cloud/shelly2/
+ 0,
+ GPI8_MCP39F5_TX, // GPIO01 MCP39F501 Serial input
+ 0,
+ 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)
+ GPI8_SWT1, // GPIO12
+ 0,
+ GPI8_SWT2, // GPIO14
+ GPI8_MCP39F5_RST, // GPIO15 MCP39F501 Reset
+ 0,
+ 0
+ },
+ { // PHILIPS - Xiaomi Philips bulb (ESP8266)
+ 0, 0, 0, 0, 0, 0,
+ // 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)
+ GPI8_PWM2, // GPIO12 cold/warm light
+ 0, 0,
+ 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,
+ 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)
+ // 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)
+ 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
+ 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)
+ 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
+ GPI8_USER, // GPIO00
+ GPI8_USER, // GPIO01 Serial RXD
+ 0,
+ 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)
+ GPI8_LED3, // GPIO12 (Relay ON, but set to LOW, so we can switch with GPIO05)
+ GPI8_USER, // GPIO13
+ GPI8_KEY1, // GPIO14 Button
+ 0,
+ GPI8_USER, // GPIO16
+ GPI8_USER // ADC0 A0 Analog input
+ },
+ { // TECKIN - https://www.amazon.de/gp/product/B07D5V139R
+ 0,
+ GPI8_KEY1, // GPIO01 Serial TXD and Button
+ 0,
+ 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)
+ 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,
+ 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)
+ 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
+ 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)
+ GPI8_USER,
+ GPI8_USER,
+ GPI8_USER, // GPIO14 Green Led
+ GPI8_USER,
+ GPI8_USER,
+ 0
+ },
+ { // GOSUND - https://www.amazon.de/gp/product/B0777BWS1P
+ 0,
+ GPI8_LEDLNK_INV, // GPIO01 Serial RXD and LED1 (blue) inv - Link status
+ 0,
+ 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)
+ 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/
+ 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)
+ 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
+ GPI8_KEY1, // GPIO00 Button
+ 0, 0, 0,
+ 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)
+ 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
+ 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)
+ 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
+ GPI8_LED1_INV, // GPIO00 Red Led (1 = On, 0 = Off) - Power status
+ 0,
+ GPI8_LEDLNK_INV, // GPIO02 Blue Led (1 = On, 0 = Off) - Link status
+ 0,
+ 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)
+ 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
+ // https://www.amazon.de/Steckdosenleiste-AOFO-Mehrfachsteckdose-ĂƒÅ“berspannungsschutz-Sprachsteuerung/dp/B07GBSD11P/
+ // https://www.amazon.de/Steckdosenleiste-Geekbes-USB-Anschluss-Kompatibel-gesteuert/dp/B078W23BW9/
+ 0, // GPIO00
+ 0, // GPIO01 Serial RXD
+ 0,
+ 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)
+ GPI8_REL3, // GPIO12 Relay 3
+ GPI8_REL4, // GPIO13 Relay 4
+ GPI8_USER, // GPIO14
+ 0,
+ GPI8_USER, // GPIO16
+ 0
+ },
+ { // OBI2 - OBI socket (ESP8266) - https://www.obi.de/hausfunksteuerung/wifi-stecker-schuko-2-stueck-weiss/p/4077673
+ 0, // GPIO00
+ 0, // GPIO01 Serial RXD
+ 0,
+ 0, // GPIO03 Serial TXD
+ 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)
+ 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
+ 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)
+ // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
+ // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
+ // GPIO11 (SD_CMD Flash)
+ 0, // GPIO12
+ 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
+ GPI8_KEY1, // GPIO00 Button1
+ 0, // GPIO01 Serial RXD
+ 0, // GPIO02
+ 0, // GPIO03 Serial TXD
+ 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)
+ 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
+ GPI8_LEDLNK_INV, // GPIO01 Blue LED - Link status
+ 0, // GPIO02
+ 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)
+ 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
+ GPI8_KEY1, // GPIO00 Button
+ 0, 0, 0,
+ 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)
+ 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,
+ GPI8_KEY1, // GPIO02 Button
+ 0,
+ 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)
+ 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
+ GPI8_PWM1, // GPIO01 Nightlight
+ 0, // GPIO02
+ 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)
+ 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
+ GPI8_LED1_INV, // GPIO00 Red LED
+ 0, // GPIO01 Serial RXD
+ 0, // GPIO02
+ GPI8_NRG_SEL_INV, // GPIO03 HJL-01 Sel output (1 = Voltage)
+ 0, // GPIO04
+ 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)
+ 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 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
+ GPI8_USER, // GPIO00 N.C.
+ 0, // GPIO01 Serial RXD
+ GPI8_USER, // GPIO02 N.C.
+ 0, // GPIO03 Serial TXD
+ 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)
+ 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
+ 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,
+ 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)
+ GPI8_USER, // GPIO12
+ GPI8_EXS_ENABLE, // GPIO13 EXS MCU Enable
+ GPI8_USER, // GPIO14
+ 0, // GPIO15
+ 0, 0
+ },
+ { // PWM_DIMMER - Support for Martin Jerry/acenx/Tessan/NTONPOWER SD0x PWM
+ // dimmer switches. The brightness of the load for these dimmers is
+ // controlled by a PWM GPIO pin. There are typically power, up & down
+ // buttons and 4 LED's. Examples are:
+ // https://www.amazon.com/dp/B07FXYSVR1
+ // https://www.amazon.com/dp/B07V26Q3VD
+ // https://www.amazon.com/dp/B07K67D43J
+ // https://www.amazon.com/dp/B07TTGFWFM
+ GPI8_KEY3, // GPIO00 Up button
+ GPI8_KEY2, // GPIO01 Down button
+ 0, // GPIO02
+ 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)
+ 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)
+ GPI8_LED1_INV, // GPIO00 Green Led (0 = On, 1 = Off) - Traffic between ESP and EFR
+ GPI8_ZIGBEE_TX, // GPIO01 Zigbee Serial control
+ 0, // GPIO02
+ 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)
+ // 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)
+ 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
+ GPI8_KEY1, // GPIO16 Button
+ 0
+ }
+};
+
+/*********************************************************************************************\
+ * Templates with 14 usable pins (ESP8285)
+\*********************************************************************************************/
+
+const mytmplt8285 kModules8285[TMP_MAXMODULE_8266 - TMP_WEMOS] PROGMEM = {
+ { // WEMOS - Any ESP8266/ESP8285 device like WeMos and NodeMCU hardware (ESP8266)
+ 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)
+ GPI8_USER, // GPIO09 (SD_DATA2 Flash QIO or ESP8285)
+ GPI8_USER, // GPIO10 (SD_DATA3 Flash QIO or ESP8285)
+ // GPIO11 (SD_CMD Flash)
+ 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)
+ 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)
+ GPI8_KEY2, // GPIO09 Button 2
+ GPI8_KEY3, // GPIO10 Button 3
+ // GPIO11 (SD_CMD Flash)
+ 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)
+ 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,
+ 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)
+ GPI8_KEY2, // GPIO09 Button 2
+ 0, // GPIO10
+ // GPIO11 (SD_CMD Flash)
+ 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)
+ 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)
+ GPI8_KEY2, // GPIO09 Button 2
+ GPI8_KEY3, // GPIO10 Button 3
+ // GPIO11 (SD_CMD Flash)
+ 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)
+ GPI8_USER, // GPIO00 Button 0 on header (0 = On, 1 = Off)
+ GPI8_USER, // GPIO01 Serial RXD and Optional sensor
+ 0,
+ GPI8_USER, // GPIO03 Serial TXD and Optional sensor
+ 0,
+ 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)
+ GPI8_USER, // GPIO09 Button 1 on header (0 = On, 1 = Off)
+ GPI8_KEY1, // GPIO10 Button on casing
+ // GPIO11 (SD_CMD Flash)
+ 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)
+ 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
+ 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)
+ 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)
+ 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
+
+#ifdef ESP32
+#if CONFIG_IDF_TARGET_ESP32C2
+/********************************************************************************************\
+ * ESP32-C2 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported hardware modules
+enum SupportedModulesESP32C2 {
+ WEMOS, // not really correct, a placeholder for now
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32C2|"
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32C2 !!!
+const mytmplt kModules[] PROGMEM = {
+ { // Generic ESP32C2 device
+ AGPIO(GPIO_USER), // 0 IO GPIO0, ADC1_CH0, RTC
+ AGPIO(GPIO_USER), // 1 IO GPIO1, ADC1_CH1, RTC
+ AGPIO(GPIO_USER), // 2 IO GPIO2, ADC1_CH2, RTC
+ AGPIO(GPIO_USER), // 3 IO GPIO3, ADC1_CH3, RTC
+ AGPIO(GPIO_USER), // 4 IO GPIO4, ADC1_CH4, RTC
+ AGPIO(GPIO_USER), // 5 IO GPIO5, RTC
+ AGPIO(GPIO_USER), // 6 IO GPIO6,
+ AGPIO(GPIO_USER), // 7 IO GPIO7,
+ AGPIO(GPIO_USER), // 8 IO GPIO8, Strapping
+ AGPIO(GPIO_USER), // 9 IO GPIO9, Strapping
+ AGPIO(GPIO_USER), // 10 IO GPIO10
+ 0, // 11 IO GPIO11, output power supply for flash
+ 0, // 12 IO GPIO12, SPIHD - Free if flash DIO/DOUT
+ 0, // 13 IO GPIO13, SPIWP - Free if flash DIO/DOUT
+ 0, // 14 IO GPIO14, SPICS0
+ 0, // 15 IO GPIO15, SPICLK
+ 0, // 16 IO GPIO16, SPID
+ 0, // 17 IO GPIO17, SPIQ
+ AGPIO(GPIO_USER), // 18 IO GPIO18,
+ AGPIO(GPIO_USER), // 19 IO RXD0 GPIO19, U0RXD
+ AGPIO(GPIO_USER), // 20 IO TXD0 GPIO20, U0TXD
+ 0 // Flag
+ },
+};
+
+/*********************************************************************************************\
+ Known templates
+\*********************************************************************************************/
+
+#elif CONFIG_IDF_TARGET_ESP32C3
+/********************************************************************************************\
+ * ESP32-C3 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported hardware modules
+enum SupportedModulesESP32C3 {
+ WEMOS,
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32C3|"
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32C3 !!!
+const mytmplt kModules[] PROGMEM = {
+ { // Generic ESP32C3 device
+ AGPIO(GPIO_USER), // 0 IO GPIO0, ADC1_CH0, XTAL_32K_P
+ AGPIO(GPIO_USER), // 1 IO GPIO1, ADC1_CH1, XTAL_32K_N
+ AGPIO(GPIO_USER), // 2 IO GPIO2, ADC1_CH2, FSPIQ
+ AGPIO(GPIO_USER), // 3 IO GPIO3, ADC1_CH3
+ AGPIO(GPIO_USER), // 4 IO GPIO4, ADC1_CH4, FSPIHD, MTMS
+ AGPIO(GPIO_USER), // 5 IO GPIO5, ADC2_CH0, FSPIWP, MTDI
+ AGPIO(GPIO_USER), // 6 IO GPIO6, FSPICLK, MTCK
+ AGPIO(GPIO_USER), // 7 IO GPIO7, FSPID, MTDO
+ AGPIO(GPIO_USER), // 8 IO GPIO8
+ AGPIO(GPIO_USER), // 9 IO GPIO9
+ AGPIO(GPIO_USER), // 10 IO GPIO10
+ 0, // 11 IO GPIO11, output power supply for flash
+ 0, // 12 IO GPIO12, SPIHD - Free if flash DIO/DOUT
+ 0, // 13 IO GPIO13, SPIWP - Free if flash DIO/DOUT
+ 0, // 14 IO GPIO14, SPICS0
+ 0, // 15 IO GPIO15, SPICLK
+ 0, // 16 IO GPIO16, SPID
+ 0, // 17 IO GPIO17, SPIQ
+ AGPIO(GPIO_USER), // 18 IO GPIO18, USB_D
+ AGPIO(GPIO_USER), // 19 IO GPIO19, USB_D+
+ AGPIO(GPIO_USER), // 20 IO RXD0 GPIO20, U0RXD
+ AGPIO(GPIO_USER), // 21 IO TXD0 GPIO21, U0TXD
+ 0 // Flag
+ },
+};
+
+/*********************************************************************************************\
+ Known templates
+\*********************************************************************************************/
+
+#elif CONFIG_IDF_TARGET_ESP32C5
+/********************************************************************************************\
+ * ESP32-C5 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported hardware modules
+enum SupportedModulesESP32C5 {
+ WEMOS,
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32C5|"
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32C5 !!!
+const mytmplt kModules[] PROGMEM = {
+ { // Generic ESP32C5 device
+ AGPIO(GPIO_USER), // 0 IO GPIO0
+ AGPIO(GPIO_USER), // 1 AO GPIO1, ADC1_CH0
+ AGPIO(GPIO_USER), // 2 AO GPIO2, ADC1_CH1
+ AGPIO(GPIO_USER), // 3 AO GPIO3, ADC1_CH2
+ AGPIO(GPIO_USER), // 4 AO GPIO4, ADC1_CH3
+ AGPIO(GPIO_USER), // 5 AO GPIO5, ADC1_CH4
+ AGPIO(GPIO_USER), // 6 AO GPIO6, ADC1_CH5
+ AGPIO(GPIO_USER), // 7 AO GPIO7, ADC1_CH6
+ AGPIO(GPIO_USER), // 8 IO GPIO8
+ AGPIO(GPIO_USER), // 9 IO GPIO9
+ AGPIO(GPIO_USER), // 10 IO GPIO10
+ AGPIO(GPIO_USER), // 11 IO GPIO11
+ AGPIO(GPIO_USER), // 12 IO GPIO12
+ AGPIO(GPIO_USER), // 13 IO GPIO13
+ AGPIO(GPIO_USER), // 14 IO GPIO14
+ AGPIO(GPIO_USER), // 15 IO GPIO15
+ AGPIO(GPIO_USER), // 16 IO GPIO16
+ AGPIO(GPIO_USER), // 17 IO GPIO17
+ AGPIO(GPIO_USER), // 18 IO GPIO18
+ AGPIO(GPIO_USER), // 19 IO GPIO19
+ AGPIO(GPIO_USER), // 20 IO GPIO20
+ AGPIO(GPIO_USER), // 21 IO GPIO21
+ AGPIO(GPIO_USER), // 22 IO GPIO22
+ AGPIO(GPIO_USER), // 23 IO GPIO23
+ 0, // 24 FL GPIO24, Flash
+ 0, // 25 FL GPIO25, Flash
+ 0, // 26 FL GPIO26, Flash
+ 0 // Flag
+ },
+};
+
+/*********************************************************************************************\
+ Known templates
+\*********************************************************************************************/
+
+#elif CONFIG_IDF_TARGET_ESP32C6
+/********************************************************************************************\
+ * ESP32-C6 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported hardware modules
+enum SupportedModulesESP32C6 {
+ WEMOS, // not really correct, a placeholder for now
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32C6|"
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32C6 !!!
+const mytmplt kModules[] PROGMEM = {
+ { // Generic ESP32C6 device
+ AGPIO(GPIO_USER), // 0 IO GPIO0, ADC1_CH0, LP_GPIO0
+ AGPIO(GPIO_USER), // 1 IO GPIO1, ADC1_CH1, LP_GPIO1
+ AGPIO(GPIO_USER), // 2 IO GPIO2, ADC1_CH2, LP_GPIO2
+ AGPIO(GPIO_USER), // 3 IO GPIO3, ADC1_CH3, LP_GPIO3
+ AGPIO(GPIO_USER), // 4 IO GPIO4, ADC1_CH4, LP_GPIO4, Strapping
+ AGPIO(GPIO_USER), // 5 IO GPIO5, ADC1_CH5, LP_GPIO5, Strapping
+ AGPIO(GPIO_USER), // 6 IO GPIO6, ADC1_CH6, LP_GPIO6
+ AGPIO(GPIO_USER), // 7 IO GPIO7, LP_GPIO7
+ AGPIO(GPIO_USER), // 8 IO GPIO8, Strapping
+ AGPIO(GPIO_USER), // 9 IO GPIO9, Strapping
+ AGPIO(GPIO_USER), // 10 IO GPIO10 (QFN40 only)
+ AGPIO(GPIO_USER), // 11 IO GPIO11 (QFN40 only)
+ AGPIO(GPIO_USER), // 12 IO GPIO12, USB-JTAG
+ AGPIO(GPIO_USER), // 13 IO GPIO13, USB-JTAG
+ AGPIO(GPIO_USER), // 14 IO GPIO14 (QFN32 only)
+ AGPIO(GPIO_USER), // 15 IO GPIO15, Strapping
+ AGPIO(GPIO_USER), // 16 IO TXD0 GPIO16, U0TXD
+ AGPIO(GPIO_USER), // 17 IO RXD0 GPIO17, U0RXD
+ AGPIO(GPIO_USER), // 18 IO GPIO18, SDIO_CMD
+ AGPIO(GPIO_USER), // 19 IO GPIO19, SDIO_CLK
+ AGPIO(GPIO_USER), // 20 IO GPIO20, SDIO_DATA0
+ AGPIO(GPIO_USER), // 21 IO GPIO21, SDIO_DATA1
+ AGPIO(GPIO_USER), // 22 IO GPIO22, SDIO_DATA2
+ AGPIO(GPIO_USER), // 23 IO GPIO23, SDIO_DATA3
+ 0, // 24 IO GPIO24, SPICS1, PSRAM
+ 0, // 25 IO GPIO25, SPIQ
+ 0, // 26 IO GPIO26, SPIWP - Free if flash DIO/DOUT
+ 0, // 27 IO GPIO27, SPIVDD
+ 0, // 28 IO GPIO28, SPIHD - Free if flash DIO/DOUT
+ 0, // 29 IO GPIO29, SPICLK
+ 0, // 30 IO GPIO30, SPID
+ 0 // Flag
+ },
+};
+
+/*********************************************************************************************\
+ Known templates
+\*********************************************************************************************/
+#elif CONFIG_IDF_TARGET_ESP32P4
+/********************************************************************************************\
+ * ESP32-P4 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+#define WT32_ETH01 4 //TODO: Why needed?
+
+// Supported hardware modules
+enum SupportedModulesESP32P4 {
+ WEMOS, // not really correct, a placeholder for now
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32P4|"
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32P4 !!!
+const mytmplt kModules[] PROGMEM = {
+ { // Generic ESP32P4 device
+ AGPIO(GPIO_USER), // 0 IO GPIO0, LP_GPIO0
+ AGPIO(GPIO_USER), // 1 IO GPIO1, LP_GPIO1
+ AGPIO(GPIO_USER), // 2 IO GPIO2, TOUCH0, LP_GPIO2
+ AGPIO(GPIO_USER), // 3 IO GPIO3, TOUCH1, LP_GPIO3
+ AGPIO(GPIO_USER), // 4 IO GPIO4, TOUCH2, LP_GPIO4
+ AGPIO(GPIO_USER), // 5 IO GPIO5, TOUCH3, LP_GPIO5
+ AGPIO(GPIO_USER), // 6 IO GPIO6, TOUCH4, LP_GPIO6
+ AGPIO(GPIO_USER), // 7 IO GPIO7, TOUCH5, LP_GPIO7
+ AGPIO(GPIO_USER), // 8 IO GPIO8, TOUCH6, LP_GPIO8
+ AGPIO(GPIO_USER), // 9 IO GPIO9, TOUCH7, LP_GPIO9
+ AGPIO(GPIO_USER), // 10 IO GPIO10, TOUCH8, LP_GPIO10
+ AGPIO(GPIO_USER), // 11 IO GPIO11, TOUCH9, LP_GPIO11
+ AGPIO(GPIO_USER), // 12 IO GPIO12, TOUCH10, LP_GPIO12
+ AGPIO(GPIO_USER), // 13 IO GPIO13, TOUCH11, LP_GPIO13
+ AGPIO(GPIO_USER), // 14 IO GPIO14, TOUCH12, LP_GPIO14, SDIO2_D0 ESPHosted (ESP32C6 GPIO20)
+ AGPIO(GPIO_USER), // 15 IO GPIO15, TOUCH13, LP_GPIO15, SDIO2_D1 ESPHosted (ESP32C6 GPIO21)
+ AGPIO(GPIO_USER), // 16 IO GPIO16, ADC1_CH0, SDIO2_D2 ESPHosted (ESP32C6 GPIO22)
+ AGPIO(GPIO_USER), // 17 IO GPIO17, ADC1_CH1, SDIO2_D3 ESPHosted (ESP32C6 GPIO23)
+ AGPIO(GPIO_USER), // 18 IO GPIO18, ADC1_CH2, SDIO2_CLK ESPHosted (ESP32C6 GPIO19)
+ AGPIO(GPIO_USER), // 19 IO GPIO19, ADC1_CH3, SDIO2_CMD ESPHosted (ESP32C6 GPIO18)
+ AGPIO(GPIO_USER), // 20 IO GPIO20, ADC1_CH4
+ AGPIO(GPIO_USER), // 21 IO GPIO21, ADC1_CH5
+ AGPIO(GPIO_USER), // 22 IO GPIO22, ADC1_CH6
+ AGPIO(GPIO_USER), // 23 IO GPIO23, ADC1_CH7
+ AGPIO(GPIO_USER), // 24 IO GPIO24
+ AGPIO(GPIO_USER), // 25 IO GPIO25
+ AGPIO(GPIO_USER), // 26 IO GPIO26
+ AGPIO(GPIO_USER), // 27 IO GPIO27
+ AGPIO(GPIO_USER), // 28 IO GPIO28
+ AGPIO(GPIO_USER), // 29 IO GPIO29
+ AGPIO(GPIO_USER), // 30 IO GPIO30
+ AGPIO(GPIO_USER), // 31 IO GPIO31
+ AGPIO(GPIO_USER), // 32 IO GPIO32
+ AGPIO(GPIO_USER), // 33 IO GPIO33
+ AGPIO(GPIO_USER), // 34 IO GPIO34, Strapping pin
+ AGPIO(GPIO_USER), // 35 IO GPIO35, Strapping pin
+ AGPIO(GPIO_USER), // 36 IO GPIO36, Strapping pin
+ AGPIO(GPIO_USER), // 37 IO GPIO37, Strapping pin
+ AGPIO(GPIO_USER), // 38 IO GPIO38, Strapping pin
+ AGPIO(GPIO_USER), // 39 IO GPIO39
+ AGPIO(GPIO_USER), // 40 IO GPIO40
+ AGPIO(GPIO_USER), // 41 IO GPIO41
+ AGPIO(GPIO_USER), // 42 IO GPIO42
+ AGPIO(GPIO_USER), // 43 IO GPIO43
+ AGPIO(GPIO_USER), // 44 IO GPIO44
+ AGPIO(GPIO_USER), // 45 IO GPIO45
+ AGPIO(GPIO_USER), // 46 IO GPIO46
+ AGPIO(GPIO_USER), // 47 IO GPIO47
+ AGPIO(GPIO_USER), // 48 IO GPIO48
+ AGPIO(GPIO_USER), // 49 IO GPIO49, ADC1_CH8
+ AGPIO(GPIO_USER), // 50 IO GPIO50, ADC1_CH9
+ AGPIO(GPIO_USER), // 51 IO GPIO51, ADC1_CH10, ANA_CMPR_CH0 reference voltage
+ AGPIO(GPIO_USER), // 52 IO GPIO52, ADC1_CH11, ANA_CMPR_CH0 input (non-inverting)
+ AGPIO(GPIO_USER), // 53 IO GPIO53, ADC1_CH12, ANA_CMPR_CH1 reference voltage
+ AGPIO(GPIO_USER), // 54 IO GPIO54, ADC1_CH13, ANA_CMPR_CH1 input (non-inverting)
+ 0 // Flag
+ },
+};
+
+/*********************************************************************************************\
+ Known templates
+\*********************************************************************************************/
+
+#elif CONFIG_IDF_TARGET_ESP32S2
+/********************************************************************************************\
+ * ESP32-S2 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported hardware modules
+enum SupportedModulesESP32S2 {
+ WEMOS,
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32S2|"
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32S2 !!!
+const mytmplt kModules[] PROGMEM = {
+ { // Generic ESP32C3 device
+ AGPIO(GPIO_USER), // 0 IO GPIO0, RTC_GPIO0, Strapping
+ AGPIO(GPIO_USER), // 1 AO GPIO1, ADC1_CH0, RTC_GPIO1
+ AGPIO(GPIO_USER), // 2 AO GPIO2, ADC1_CH1, RTC_GPIO2
+ AGPIO(GPIO_USER), // 3 AO GPIO3, ADC1_CH2, RTC_GPIO3
+ AGPIO(GPIO_USER), // 4 AO GPIO4, ADC1_CH3, RTC_GPIO4
+ AGPIO(GPIO_USER), // 5 AO GPIO5, ADC1_CH4, RTC_GPIO5
+ AGPIO(GPIO_USER), // 6 AO GPIO6, ADC1_CH5, RTC_GPIO6
+ AGPIO(GPIO_USER), // 7 AO GPIO7, ADC1_CH6, RTC_GPIO7
+ AGPIO(GPIO_USER), // 8 AO GPIO8, ADC1_CH7, RTC_GPIO8
+ AGPIO(GPIO_USER), // 9 AO GPIO9, ADC1_CH8, RTC_GPIO9
+ AGPIO(GPIO_USER), // 10 AO GPIO10, ADC1_CH9, RTC_GPIO10
+ AGPIO(GPIO_USER), // 11 AO GPIO11, ADC2_CH0, RTC_GPIO11
+ AGPIO(GPIO_USER), // 12 AO GPIO12, ADC2_CH1, RTC_GPIO12
+ AGPIO(GPIO_USER), // 13 AO GPIO13, ADC2_CH2, RTC_GPIO13
+ AGPIO(GPIO_USER), // 14 AO GPIO14, ADC2_CH3, RTC_GPIO14
+ AGPIO(GPIO_USER), // 15 AO GPIO15, ADC2_CH4, RTC_GPIO15, XTAL_32K_P
+ AGPIO(GPIO_USER), // 16 AO GPIO16, ADC2_CH5, RTC_GPIO16, XTAL_32K_N
+ AGPIO(GPIO_USER), // 17 AO GPIO17, ADC2_CH6, RTC_GPIO17, DAC_1
+ AGPIO(GPIO_USER), // 18 AO GPIO18, ADC2_CH7, RTC_GPIO18, DAC_2
+ AGPIO(GPIO_USER), // 19 AO GPIO19, ADC2_CH8, RTC_GPIO19
+ AGPIO(GPIO_USER), // 20 AO GPIO20, ADC2_CH9, RTC_GPIO20
+ AGPIO(GPIO_USER), // 21 IO GPIO21, RTC_GPIO21
+ // 22 -- Unused
+ // 23 -- Unused
+ // 24 -- Unused
+ // 25 -- Unused
+ // 26 FL SPICS1, PSRAM
+ // 27 FL SPIHD
+ // 28 FL SPIWP
+ // 29 FL SPICS0
+ // 30 FL SPICLK
+ // 31 FL SPIQ
+ // 32 FL SPID
+ AGPIO(GPIO_USER), // 33 IO GPIO33
+ AGPIO(GPIO_USER), // 34 IO GPIO34
+ AGPIO(GPIO_USER), // 35 IO GPIO35
+ AGPIO(GPIO_USER), // 36 IO GPIO36
+ AGPIO(GPIO_USER), // 37 IO GPIO37
+ AGPIO(GPIO_USER), // 38 IO GPIO38
+ AGPIO(GPIO_USER), // 39 IO GPIO39, JTAG MTCK
+ AGPIO(GPIO_USER), // 40 IO GPIO40, JTAG MTDO
+ AGPIO(GPIO_USER), // 41 IO GPIO41, JTAG MTDI
+ AGPIO(GPIO_USER), // 42 IO GPIO42, JTAG MTMS
+ AGPIO(GPIO_USER), // 43 IO GPIO43, U0TXD
+ AGPIO(GPIO_USER), // 44 IO GPIO44, U0RXD
+ AGPIO(GPIO_USER), // 45 IO GPIO45, Strapping
+ AGPIO(GPIO_USER), // 46 I GPIO46, Input only, Strapping
+ 0 // Flag
+ },
+};
+
+/*********************************************************************************************\
+ Known templates
+\*********************************************************************************************/
+
+#elif CONFIG_IDF_TARGET_ESP32S3
+/********************************************************************************************\
+ * ESP32-S3 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported hardware modules
+enum SupportedModulesESP32S3 {
+ WEMOS,
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32S3|"
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32S2 !!!
+const mytmplt kModules[] PROGMEM = {
+ { // Generic ESP32C3 device
+ AGPIO(GPIO_USER), // 0 IO RTC_GPIO0, GPIO0, Strapping
+ AGPIO(GPIO_USER), // 1 AO RTC_GPIO1, GPIO1, TOUCH1, ADC1_CH0
+ AGPIO(GPIO_USER), // 2 AO RTC_GPIO2, GPIO2, TOUCH2, ADC1_CH1
+ AGPIO(GPIO_USER), // 3 AO RTC_GPIO3, GPIO3, TOUCH3, ADC1_CH2, Strapping
+ AGPIO(GPIO_USER), // 4 AO RTC_GPIO4, GPIO4, TOUCH4, ADC1_CH3
+ AGPIO(GPIO_USER), // 5 AO RTC_GPIO5, GPIO5, TOUCH5, ADC1_CH4
+ AGPIO(GPIO_USER), // 6 AO RTC_GPIO6, GPIO6, TOUCH6, ADC1_CH5
+ AGPIO(GPIO_USER), // 7 AO RTC_GPIO7, GPIO7, TOUCH7, ADC1_CH6
+ AGPIO(GPIO_USER), // 8 AO RTC_GPIO8, GPIO8, TOUCH8, ADC1_CH7, SUBSPICS1
+ AGPIO(GPIO_USER), // 9 AO RTC_GPIO9, GPIO9, TOUCH9, ADC1_CH8, SUBSPIHD, FSPIHD
+ AGPIO(GPIO_USER), // 10 AO RTC_GPIO10, GPIO10, TOUCH10, ADC1_CH9, FSPIIO4, SUBSPICS0, FSPICS0
+ AGPIO(GPIO_USER), // 11 AO RTC_GPIO11, GPIO11, TOUCH11, ADC2_CH0, FSPIIO5, SUBSPID, FSPID
+ AGPIO(GPIO_USER), // 12 AO RTC_GPIO12, GPIO12, TOUCH12, ADC2_CH1, FSPIIO6, SUBSPICLK, FSPICLK
+ AGPIO(GPIO_USER), // 13 AO RTC_GPIO13, GPIO13, TOUCH13, ADC2_CH2, FSPIIO7, SUBSPIQ, FSPIQ
+ AGPIO(GPIO_USER), // 14 AO RTC_GPIO14, GPIO14, TOUCH14, ADC2_CH3, FSPIDQS, SUBSPIWP, FSPIWP
+ AGPIO(GPIO_USER), // 15 AO RTC_GPIO15, GPIO15, U0RTS, ADC2_CH4, XTAL_32K_P
+ AGPIO(GPIO_USER), // 16 AO RTC_GPIO16, GPIO16, U0CTS, ADC2_CH5, XTAL_32K_N
+ AGPIO(GPIO_USER), // 17 AO RTC_GPIO17, GPIO17, U1TXD, ADC2_CH6
+ AGPIO(GPIO_USER), // 18 AO RTC_GPIO18, GPIO18, U1RXD, ADC2_CH7, CLK_OUT3
+ AGPIO(GPIO_USER), // 19 AO RTC_GPIO19, GPIO19, U1RTS, ADC2_CH8, CLK_OUT2, USB_DÂ
+ AGPIO(GPIO_USER), // 20 AO RTC_GPIO20, GPIO20, U1CTS, ADC2_CH9, CLK_OUT1, USB_D+
+ AGPIO(GPIO_USER), // 21 IO RTC_GPIO21, GPIO21
+ // 22 -- Unused
+ // 23 -- Unused
+ // 24 -- Unused
+ // 25 -- Unused
+ // 26 FL SPICS1, GPIO26
+ // 27 FL SPIHD, GPIO27
+ // 28 FL SPIWP, GPIO28
+ // 29 FL SPICS0, GPIO29
+ // 30 FL SPICLK, GPIO30
+ // 31 FL SPIQ, GPIO31
+ // 32 FL SPID, GPIO32
+ AGPIO(GPIO_NONE), // 33 IO SPIIO4, GPIO33, FSPIHD, SUBSPIHD
+ AGPIO(GPIO_NONE), // 34 IO SPIIO5, GPIO34, FSPICS0, SUBSPICS0
+ AGPIO(GPIO_NONE), // 35 IO SPIIO6, GPIO35, FSPID, SUBSPID
+ AGPIO(GPIO_NONE), // 36 IO SPIIO7, GPIO36, FSPICLK, SUBSPICLK
+ AGPIO(GPIO_NONE), // 37 IO SPIDQS, GPIO37, FSPIQ, SUBSPIQ
+ AGPIO(GPIO_USER), // 38 IO GPIO38, FSPIWP, SUBSPIWP
+ AGPIO(GPIO_USER), // 39 IO MTCK, GPIO39, CLK_OUT3, SUBSPICS1
+ AGPIO(GPIO_USER), // 40 IO MTDO, GPIO40, CLK_OUT2
+ AGPIO(GPIO_USER), // 41 IO MTDI, GPIO41, CLK_OUT1
+ AGPIO(GPIO_USER), // 42 IO MTMS, GPIO42
+ AGPIO(GPIO_USER), // 43 IO U0TXD, GPIO43, CLK_OUT1
+ AGPIO(GPIO_USER), // 44 IO U0RXD, GPIO44, CLK_OUT2
+ AGPIO(GPIO_USER), // 45 IO GPIO45, Strapping
+ AGPIO(GPIO_USER), // 46 IO GPIO46, Strapping
+ AGPIO(GPIO_USER), // 47 IO SPICLK_P_DIFF, GPIO47, SUBSPICLK_P_DIFF
+ AGPIO(GPIO_USER), // 48 IO SPICLK_N_DIFF, GPIO48, SUBSPICLK_N_DIFF
+ 0 // Flag
+ },
+};
+
+/*********************************************************************************************\
+ Known templates
+\*********************************************************************************************/
+
+#else // not CONFIG_IDF_TARGET_ESP32C2/C3/C6 nor CONFIG_IDF_TARGET_ESP32S2 - ESP32
+/********************************************************************************************\
+ * ESP32 Module templates
+\********************************************************************************************/
+
+#define USER_MODULE 255
+
+// Supported hardware modules
+enum SupportedModulesESP32 {
+ WEMOS,
+ ESP32_CAM_AITHINKER,
+ ODROID_GO,
+ ESP32_SOLO,
+ WT32_ETH01,
+ MAXMODULE };
+
+// Default module settings
+const uint8_t kModuleNiceList[] PROGMEM = {
+ WEMOS,
+#ifdef USE_WEBCAM
+ ESP32_CAM_AITHINKER,
+#endif // USE_WEBCAM
+#ifdef USE_ODROID_GO
+ ODROID_GO,
+#endif // USE_ODROID_GO
+#ifdef USE_ESP32_SOLO
+// ESP32_SOLO, // To be defined
+#endif // USE_ESP32_SOLO
+#ifdef USE_WT32_ETH01
+ WT32_ETH01,
+#endif // USE_WT32_ETH01
+};
+
+// !!! Update this list in the same order as kModuleNiceList !!!
+const char kModuleNames[] PROGMEM =
+ "ESP32-DevKit|"
+#ifdef USE_WEBCAM
+ "ESP32-Cam|"
+#endif // USE_WEBCAM
+#ifdef USE_ODROID_GO
+ "Odroid Go|"
+#endif // USE_ODROID_GO
+#ifdef USE_ESP32_SOLO
+// "ESP32-Solo|" // To be defined
+#endif // USE_ESP32_SOLO
+#ifdef USE_WT32_ETH01
+ "WT32-Eth01|"
+#endif // USE_WT32_ETH01
+ ;
+
+// !!! Update this list in the same order as SupportedModulesESP32 !!!
+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 Remapped to 28
+ // 7 IO Remapped to 29
+ // 8 IO Remapped to 30
+ AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD
+ AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD
+ // 11 IO Remapped to 31
+ 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, // 6 IO GPIO6, Flash CLK
+ 0, // 7 IO GPIO7, Flash D0
+ 0, // 8 IO GPIO8, Flash D1
+ 0, // 11 IO GPIO11, Flash CMD
+ 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
+ },
+
+#ifdef USE_WEBCAM
+ { // ESP32_CAM_AITHINKER - Any ESP32 device with webcam (ESP32)
+ AGPIO(GPIO_WEBCAM_XCLK), // 0 (I)O GPIO0, CAM_XCLK
+ AGPIO(GPIO_USER), // 1 IO TXD0 GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2
+ AGPIO(GPIO_SPI_MISO), // 2 IO GPIO2, VSPI_MISO
+ AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2
+ AGPIO(GPIO_PWM1), // 4 IO GPIO4, Flashlight
+ AGPIO(GPIO_WEBCAM_DATA), // 5 IO GPIO5, CAM_DATA1
+ // 6 IO Remapped to 28
+ // 7 IO Remapped to 29
+ // 8 IO Remapped to 30
+ AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD
+ AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD
+ // 11 IO Remapped to 31
+ 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_SDCARD_CS), // 13 IO GPIO13, VSPI_CS_TFLASH
+ AGPIO(GPIO_SPI_CLK), // 14 IO GPIO14, VSPI_CLK
+ AGPIO(GPIO_SPI_MOSI), // 15 (I)O GPIO15, VSPI_MOSI (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_WEBCAM_DATA) +1, // 18 IO GPIO18, CAM_DATA2
+ AGPIO(GPIO_WEBCAM_DATA) +2, // 19 IO GPIO19, CAM_DATA3
+ 0, // 20
+ AGPIO(GPIO_WEBCAM_DATA) +3, // 21 IO GPIO21, CAM_DATA4
+ AGPIO(GPIO_WEBCAM_PCLK), // 22 IO LED GPIO22, CAM_PCLK
+ AGPIO(GPIO_WEBCAM_HREF), // 23 IO GPIO23, CAM_HREF
+ 0, // 24
+ AGPIO(GPIO_WEBCAM_VSYNC), // 25 IO GPIO25, CAM_VSYNC
+ AGPIO(GPIO_WEBCAM_SIOD), // 26 IO GPIO26, CAM_SIOD
+ AGPIO(GPIO_WEBCAM_SIOC), // 27 IO GPIO27, CAM_SIOC
+ 0, // 6 IO GPIO6, Flash CLK
+ 0, // 7 IO GPIO7, Flash D0
+ 0, // 8 IO GPIO8, Flash D1
+ 0, // 11 IO GPIO11, Flash CMD
+ AGPIO(GPIO_WEBCAM_PWDN), // 32 IO GPIO32, CAM_PWDN
+ AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8
+ AGPIO(GPIO_WEBCAM_DATA) +6, // 34 I NO PULLUP GPIO34, CAM_DATA7
+ AGPIO(GPIO_WEBCAM_DATA) +7, // 35 I NO PULLUP GPIO35, CAM_DATA8
+ AGPIO(GPIO_WEBCAM_DATA) +4, // 36 I NO PULLUP GPIO36, CAM_DATA5
+ 0, // 37 NO PULLUP
+ 0, // 38 NO PULLUP
+ AGPIO(GPIO_WEBCAM_DATA) +5, // 39 I NO PULLUP GPIO39, CAM_DATA6
+ 0 // Flag
+ },
+#endif // USE_WEBCAM
+
+#ifdef USE_ODROID_GO
+ { // ODROID_GO - (ESP32)
+ AGPIO(GPIO_KEY1), // 0 (I)O GPIO0, BTN-VOLUME
+ AGPIO(GPIO_TXD), // 1 IO TXD0 GPIO1, TXD0
+ AGPIO(GPIO_LEDLNK), // 2 IO GPIO2, STATUS LED
+ AGPIO(GPIO_RXD), // 3 IO RXD0 GPIO3, RXD0
+ AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER
+ AGPIO(GPIO_ILI9341_CS), // 5 IO GPIO5, VSPI_CS0_LCD
+ // 6 IO Remapped to 28
+ // 7 IO Remapped to 29
+ // 8 IO Remapped to 30
+ 0, // 9 IO GPIO9, Flash D2, U1RXD
+ 0, // 10 IO GPIO10, Flash D3, U1TXD
+ // 11 IO Remapped to 31
+ 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_KEY1) +1, // 13 IO GPIO13, BTN-MENU
+ AGPIO(GPIO_PWM1), // 14 IO GPIO14, LCD Backlight
+ 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_SPI_CLK), // 18 IO GPIO18, VSPI_CLK
+ AGPIO(GPIO_SPI_MISO), // 19 IO GPIO19, VSPI_MISO
+ 0, // 20
+ AGPIO(GPIO_ILI9341_DC), // 21 IO GPIO21, SPI_DC_LCD
+ AGPIO(GPIO_SDCARD_CS), // 22 IO LED GPIO22, VSPI_CS1_TFLASH
+ AGPIO(GPIO_SPI_MOSI), // 23 IO GPIO23, VSPI_MOSI
+ 0, // 24
+ 0, // 25 IO GPIO25, DAC_1 (PAM8304A)
+ 0, // 26 IO GPIO26, DAC_2 (PAM8304A)
+ AGPIO(GPIO_KEY1) +2, // 27 IO GPIO27, BTN-SELECT
+ 0, // 6 IO GPIO6, Flash CLK
+ 0, // 7 IO GPIO7, Flash D0
+ 0, // 8 IO GPIO8, Flash D1
+ 0, // 11 IO GPIO11, Flash CMD
+ AGPIO(GPIO_SWT1) +4, // 32 IO GPIO32, BTN-A
+ AGPIO(GPIO_SWT1) +5, // 33 IO GPIO33, BTN-B
+ AGPIO(GPIO_ADC_JOY), // 34 I NO PULLUP GPIO34, JOY-X (LEFT-RIGHT)
+ AGPIO(GPIO_ADC_JOY) +1, // 35 I NO PULLUP GPIO35, JOY-Y (UP-DOWN)
+ AGPIO(GPIO_ADC_RANGE) +2, // 36 I NO PULLUP GPIO36, SENSOR_VP (BATTERY CARGER)
+ 0, // 37 NO PULLUP
+ 0, // 38 NO PULLUP
+ AGPIO(GPIO_KEY1) +3, // 39 I NO PULLUP GPIO39, BTN-START
+ 0 // Flag
+ },
+#endif // USE_ODROID_GO
+
+#ifdef USE_ESP32_SOLO
+// { // ESP32 Solo (ESP32) - To be defined
+// },
+#endif // USE_ESP32_SOLO
+
+#ifdef USE_WT32_ETH01
+ { // WT32_ETH01 - (ESP32)
+ 0, // 0 (I)O GPIO0, Ethernet EMAC_REF_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, RXD Led green
+ // 6 IO Remapped to 28
+ // 7 IO Remapped to 29
+ // 8 IO Remapped to 30
+ 0, // 9 IO GPIO9, Flash D2, U1RXD
+ 0, // 10 IO GPIO10, Flash D3, U1TXD
+ // 11 IO Remapped to 31
+ 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.)
+ 0, // 13 IO GPIO13, Ethernet 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_OUTPUT_HI), // 16 IO GPIO16, Ethernet OSC_ENA
+ AGPIO(GPIO_LEDLNK_INV), // 17 IO GPIO17, Network link led (green)
+ AGPIO(GPIO_ETH_PHY_MDIO), // 18 IO GPIO18, Ethernet MDIO
+ 0, // 19 IO GPIO19, Ethernet TXD0
+ 0, // 20
+ 0, // 21 IO GPIO21, Ethernet EMAC_TX_EN
+ 0, // 22 IO LED GPIO22, Ethernet EMAC_TXD1
+ AGPIO(GPIO_ETH_PHY_MDC), // 23 IO GPIO23, Ethernet MDC
+ 0, // 24
+ 0, // 25 IO GPIO25, Ethernet EMAC_RXD0
+ 0, // 26 IO GPIO26, Ethernet EMAC_RXD1
+ 0, // 27 IO GPIO27, Ethernet EMAC_RX_DV
+ 0, // 6 IO GPIO6, Flash CLK
+ 0, // 7 IO GPIO7, Flash D0
+ 0, // 8 IO GPIO8, Flash D1
+ 0, // 11 IO GPIO11, Flash CMD
+ AGPIO(GPIO_USER), // 32 IO GPIO32, CFG
+ AGPIO(GPIO_USER), // 33 IO GPIO33, 485_EN
+ 0, // 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 // USE_WT32_ETH01
+
+};
+
+/*********************************************************************************************\
+ 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/S2/C3 selection
+#endif // ESP32
+
+#endif // _TASMOTA_TEMPLATE_H_