diff --git a/CHANGELOG.md b/CHANGELOG.md index 156a7489f..a6a3245f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ All notable changes to this project will be documented in this file. - Support for EZO RTD sensors by Christopher Tremblay (#9585) - On ZigbeeBridge support for glowing led when permit join is active (#9581) - Support for PWM Dimmer multi-press and ledmask (#9584) +- Support for fixed output Hi or Lo GPIO +- Support for ESP32 based Wireless-Tag WT32-ETH01 (#9496) ### Changed - Command ``Gpio17`` replaces command ``Adc`` diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d7d1a1aac..96bb8b58d 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -72,6 +72,8 @@ The attached binaries can also be downloaded from http://ota.tasmota.com/tasmota - Support for Vietnamese language translations by Tâm.NT - Support for timers in case of no-sunset permanent day by cybermaus (#9543) - Support for EZO Ph, ORP and RTD sensors by Christopher Tremblay (#9567, #9585) +- Support for fixed output Hi or Lo GPIO +- Support for ESP32 based Wireless-Tag WT32-ETH01 (#9496) ### Breaking Changed - Redesigned ESP8266 GPIO internal representation in line with ESP32 changing ``Template`` layout too diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index f0a869cf9..7e54d9435 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index ec09983a7..62e3e04dd 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 4d3d9eecd..248e0984b 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 1f20dd270..9e5c3d5e2 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 7e84ff75b..e15b03ba2 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 35f0ac6f5..54673f584 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 4c7775e49..62caf9a85 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -663,8 +663,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 TX" #define D_SENSOR_DDS2382_RX "DDS238-2 RX" #define D_SENSOR_DDSU666_TX "DDSU666 TX" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 4fb8cf5b6..a7723edcb 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index d0cddc994..affa62c19 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 44c671fdb..f074a67e2 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 - STP" #define D_SENSOR_A4988_ENA "A4988 - ENA" #define D_SENSOR_A4988_MS1 "A4988 - MS1" -#define D_SENSOR_A4988_MS2 "A4988 - MS2" -#define D_SENSOR_A4988_MS3 "A4988 - MS3" +#define D_SENSOR_OUTPUT_HI "Output - Hi" +#define D_SENSOR_OUTPUT_LO "Output - Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 - TX" #define D_SENSOR_DDS2382_RX "DDS238-2 - RX" #define D_SENSOR_DDSU666_TX "DDSU666 - TX" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index a0c162c17..61f2caee7 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 5abc5852a..19287551b 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 4d274f6c8..f785a31ff 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index b81212785..634199ba3 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 684f87424..49835816e 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index f61504c4e..b0ace2dbd 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 1bef3939e..2340710e9 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index d090767a4..140214a56 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index d186cf43b..5edc4cc35 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 244dad325..b6d0917fe 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 1f3448303..7e38ad2ba 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index e0700ba32..cf32f7194 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index a7d930ae4..805422779 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 4243f0b55..d3fa4767b 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -667,8 +667,8 @@ #define D_SENSOR_A4988_STP "A4988 STP" #define D_SENSOR_A4988_ENA "A4988 ENA" #define D_SENSOR_A4988_MS1 "A4988 MS1" -#define D_SENSOR_A4988_MS2 "A4988 MS2" -#define D_SENSOR_A4988_MS3 "A4988 MS3" +#define D_SENSOR_OUTPUT_HI "Output Hi" +#define D_SENSOR_OUTPUT_LO "Output Lo" #define D_SENSOR_DDS2382_TX "DDS238-2 Tx" #define D_SENSOR_DDS2382_RX "DDS238-2 Rx" #define D_SENSOR_DDSU666_TX "DDSU666 Tx" diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index d8bc55e98..b3aa012cf 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1642,12 +1642,20 @@ void GpioInit(void) #endif // ESP8266 - ESP32 soft_spi_flg = (PinUsed(GPIO_SSPI_SCLK) && (PinUsed(GPIO_SSPI_MOSI) || PinUsed(GPIO_SSPI_MISO))); - // Set any non-used GPIO to INPUT - Related to resetPins() in support_legacy_cores.ino - // Doing it here solves relay toggles at restart. for (uint32_t i = 0; i < ARRAY_SIZE(my_module.io); i++) { uint32_t mpin = ValidPin(i, my_module.io[i]); // AddLog_P2(LOG_LEVEL_DEBUG, PSTR("INI: gpio pin %d, mpin %d"), i, mpin); - if (((i < 6) || (i > 11)) && (0 == mpin)) { // Skip SPI flash interface + if (AGPIO(GPIO_OUTPUT_HI) == mpin) { + pinMode(i, OUTPUT); + digitalWrite(i, 1); + } + else if (AGPIO(GPIO_OUTPUT_LO) == mpin) { + pinMode(i, OUTPUT); + digitalWrite(i, 0); + } + // Set any non-used GPIO to INPUT - Related to resetPins() in support_legacy_cores.ino + // Doing it here solves relay toggles at restart. + else if (((i < 6) || (i > 11)) && (GPIO_NONE == mpin)) { // Skip SPI flash interface if (!((1 == i) || (3 == i))) { // Skip serial pinMode(i, INPUT); } diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 4457dc57f..9d5c10a47 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -101,8 +101,7 @@ enum UserSelectablePins { 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_SPARE1, // Do not use - GPIO_SPARE2, // Do not use + 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 @@ -147,10 +146,8 @@ enum UserSelectablePins { GPIO_IEM3000_TX, GPIO_IEM3000_RX, // IEM3000 Serial interface GPIO_ZIGBEE_RST, // Zigbee reset GPIO_DYP_RX, - GPIO_MIEL_HVAC_TX, // Mitsubishi Electric HVAC TX pin - GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC RX pin - GPIO_WE517_TX, // ORNO WE517 Serial interface - GPIO_WE517_RX, // ORNO WE517 Serial interface + GPIO_MIEL_HVAC_TX, GPIO_MIEL_HVAC_RX, // Mitsubishi Electric HVAC + GPIO_WE517_TX, GPIO_WE517_RX, // ORNO WE517 Serial interface GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -214,8 +211,7 @@ const char kSensorNames[] PROGMEM = 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 "|" - "s1|" - "s2|" + 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 "|" @@ -297,6 +293,8 @@ const uint16_t kGpioNiceList[] PROGMEM = { #endif AGPIO(GPIO_LEDLNK), // Link led AGPIO(GPIO_LEDLNK_INV), // Inverted link led + AGPIO(GPIO_OUTPUT_HI), // Fixed output high + AGPIO(GPIO_OUTPUT_LO), // Fixed output low /*-------------------------------------------------------------------------------------------*\ * Protocol specifics diff --git a/tasmota/xdrv_82_ethernet.ino b/tasmota/xdrv_82_ethernet.ino index dcaa5fde8..fde8a417a 100644 --- a/tasmota/xdrv_82_ethernet.ino +++ b/tasmota/xdrv_82_ethernet.ino @@ -32,7 +32,28 @@ * GPIO27 - EMAC_RX_CRS_DV * * {"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} + * GPIO12 = ETH POWER + * GPIO18 = ETH MDIO + * GPIO23 = ETH MDC + * #define ETH_TYPE ETH_PHY_LAN8720 + * #define ETH_CLKMODE ETH_CLOCK_GPIO17_OUT + * #define ETH_ADDR 0 + * * {"NAME":"wESP32","GPIO":[0,0,1,0,1,1,0,0,1,1,1,1,5568,5600,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1} + * GPIO16 = ETH MDC + * GPIO17 = ETH MDIO + * #define ETH_TYPE ETH_PHY_LAN8720 + * #define ETH_CLKMODE ETH_CLOCK_GPIO0_IN + * #define ETH_ADDR 0 + * + * {"NAME":"WT32-ETH01","GPIO":[1,1,1,1,1,1,0,0,1,0,1,1,3840,576,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1],"FLAG":0,"BASE":1} + * GPIO16 = Force Hi + * GPIO18 = ETH MDIO + * GPIO23 = ETH MDC + * #define ETH_TYPE ETH_PHY_LAN8720 + * #define ETH_CLKMODE ETH_CLOCK_GPIO0_IN + * #define ETH_ADDR 1 + * \*********************************************************************************************/ #define XDRV_82 82 @@ -68,19 +89,12 @@ void EthernetEvent(WiFiEvent_t event) { ETH.setHostname(eth_hostname); break; case SYSTEM_EVENT_ETH_CONNECTED: - AddLog_P2(LOG_LEVEL_INFO, PSTR("ETH: " D_CONNECTED)); + AddLog_P2(LOG_LEVEL_INFO, PSTR("ETH: " D_CONNECTED " at %dMbps%s"), + ETH.linkSpeed(), (ETH.fullDuplex()) ? " Full Duplex" : ""); break; case SYSTEM_EVENT_ETH_GOT_IP: AddLog_P2(LOG_LEVEL_DEBUG, PSTR("ETH: Mac %s, IPAddress %s, Hostname %s"), ETH.macAddress().c_str(), ETH.localIP().toString().c_str(), eth_hostname); -/* - if (ETH.fullDuplex()) { - Serial.print(", FULL_DUPLEX"); - } - Serial.print(", "); - Serial.print(ETH.linkSpeed()); - Serial.println("Mbps"); -*/ Settings.ip_address[1] = (uint32_t)ETH.gatewayIP(); Settings.ip_address[2] = (uint32_t)ETH.subnetMask(); Settings.ip_address[3] = (uint32_t)ETH.dnsIP();