From cb988edba814716ffb0fea9dae43c69c18ca51f4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 3 Mar 2023 16:54:57 +0100 Subject: [PATCH] Prep PCF8574 virtual switch/button/relay --- tasmota/include/tasmota_template.h | 5 +++++ tasmota/language/af_AF.h | 1 + tasmota/language/bg_BG.h | 1 + tasmota/language/ca_AD.h | 1 + tasmota/language/cs_CZ.h | 1 + tasmota/language/de_DE.h | 1 + tasmota/language/el_GR.h | 1 + tasmota/language/en_GB.h | 1 + tasmota/language/es_ES.h | 1 + tasmota/language/fr_FR.h | 1 + tasmota/language/fy_NL.h | 1 + tasmota/language/he_HE.h | 1 + tasmota/language/hu_HU.h | 1 + tasmota/language/it_IT.h | 1 + tasmota/language/ko_KO.h | 1 + tasmota/language/nl_NL.h | 1 + tasmota/language/pl_PL.h | 1 + tasmota/language/pt_BR.h | 1 + tasmota/language/pt_PT.h | 1 + tasmota/language/ro_RO.h | 1 + tasmota/language/ru_RU.h | 1 + tasmota/language/sk_SK.h | 1 + tasmota/language/sv_SE.h | 1 + tasmota/language/tr_TR.h | 1 + tasmota/language/uk_UA.h | 1 + tasmota/language/vi_VN.h | 1 + tasmota/language/zh_CN.h | 1 + tasmota/language/zh_TW.h | 1 + tasmota/tasmota_xdrv_driver/xdrv_67_mcp23xxx.ino | 1 + 29 files changed, 33 insertions(+) diff --git a/tasmota/include/tasmota_template.h b/tasmota/include/tasmota_template.h index ce1da3845..a85369d05 100644 --- a/tasmota/include/tasmota_template.h +++ b/tasmota/include/tasmota_template.h @@ -207,6 +207,7 @@ enum UserSelectablePins { 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_SENSOR_END }; // Error as warning to rethink GPIO usage with max 2045 @@ -461,6 +462,7 @@ const char kSensorNames[] PROGMEM = 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 "|" ; const char kSensorNamesFixed[] PROGMEM = @@ -556,6 +558,9 @@ const uint16_t kGpioNiceList[] PROGMEM = { #ifdef USE_I2C AGPIO(GPIO_I2C_SCL) + MAX_I2C, // I2C SCL AGPIO(GPIO_I2C_SDA) + MAX_I2C, // I2C SDA +#ifdef USE_PCF8574 + AGPIO(GPIO_PCF8574_INT), // PCF8574 Interrupt +#endif // USE_PCF8574 #endif #if defined(USE_I2S_AUDIO) || defined (USE_I2S) diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 0f5570444..07875dc6b 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 608d08c19..cf62b369c 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/ca_AD.h b/tasmota/language/ca_AD.h index dd67e976e..5b6d91022 100644 --- a/tasmota/language/ca_AD.h +++ b/tasmota/language/ca_AD.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index ae31b8d00..e94b5d5f3 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 41685e005..38d5581c8 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Puls" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index e282c1237..0cd51bb00 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 5422de1e7..04c9b5bef 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 829e24a65..dd18ce59d 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "Cruce por cero" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 72e20c65d..0805fca30 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "Effet Hall" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 2a15fb8f0..f8169a531 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 7fb3b2406..e22418ce8 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 00f76e44f..2683f7d0c 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 6c7661298..66d3154cd 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "Impulsi ZC" #define D_SENSOR_HALLEFFECT "Effetto hall" #define D_SENSOR_EPD_DATA "EPD - Dati" +#define D_SENSOR_PCF8574_INT "PCF8574 - Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx - Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx - CS" #define D_SENSOR_MCP2515_CS "MCP2515 - CS" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 7f06bedc5..11a775dc7 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index be5ef613c..3ede2ee6f 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index d64808a38..214628a97 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "Efekt Halla" #define D_SENSOR_EPD_DATA "EPD Dane" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 97dc980c0..5e4259319 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "Efeito Hall" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index b77686997..f04c5992e 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "Efeito Hall" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index f210b5c68..51c55c0b1 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 75dfe0002..672df0a48 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index b97fddb6a..1d8818f9c 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index d40650bd5..2b6161647 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index e74f6c144..bb985fe59 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index e06801fc1..e19dd746b 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index b0a9ac266..1306a01fb 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index d1d5918b1..2ef25fde3 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 6078ee069..247ad088d 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -895,6 +895,7 @@ #define D_SENSOR_ZEROCROSS "ZC Pulse" #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" +#define D_SENSOR_PCF8574_INT "PCF8574 Int" #define D_SENSOR_MCP23XXX_INT "MCP23xxx Int" #define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS" #define D_SENSOR_MCP2515_CS "MCP2515 CS" diff --git a/tasmota/tasmota_xdrv_driver/xdrv_67_mcp23xxx.ino b/tasmota/tasmota_xdrv_driver/xdrv_67_mcp23xxx.ino index 460cda2f4..6b67e0b46 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_67_mcp23xxx.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_67_mcp23xxx.ino @@ -723,6 +723,7 @@ void MCP23xInit(void) { } else { gpio = MCP23xRead16(MCP23X17_GPIOA); // Clear MCP23x17 interrupt } + pinMode(Mcp23x.device[Mcp23x.chip].pin_int, INPUT_PULLUP); attachInterrupt(Mcp23x.device[Mcp23x.chip].pin_int, MCP23xInputIsr, CHANGE); } }