Add support for multiple MCP23017 as switch/button/relay

This commit is contained in:
Theo Arends 2023-03-01 10:12:47 +01:00
parent 873567a999
commit 9f30836854
32 changed files with 40 additions and 7 deletions

View File

@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
- Matter read/write and commands (#18000)
- Matter subscriptions (#18017, #18018)
- Matter multi-fabric (#18019)
- Support for multiple MCP23017 as switch/button/relay
### Breaking Changed

View File

@ -206,7 +206,7 @@ enum UserSelectablePins {
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, // MCP23xxx INT
GPIO_MCP23XXX_INT, GPIO_MCP23SXX_CS, // MCP23xxx Int and SPI Chip select
GPIO_SENSOR_END };
// Error as warning to rethink GPIO usage with max 2045
@ -460,7 +460,7 @@ const char kSensorNames[] PROGMEM =
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_MCP23XXX_INT "|" D_SENSOR_MCP23SXX_CS "|"
;
const char kSensorNamesFixed[] PROGMEM =
@ -468,7 +468,7 @@ const char kSensorNamesFixed[] PROGMEM =
// Max number of GPIOs
#define MAX_MAX31865S 6
#define MAX_MCP23XXX 4
#define MAX_MCP23XXX 6
#define MAX_FLOWRATEMETER 2
#define MAX_A4988_MSS 3
#define MAX_WEBCAM_DATA 8
@ -590,6 +590,9 @@ const uint16_t kGpioNiceList[] PROGMEM = {
#if defined(USE_MCP2515) || defined(USE_CANSNIFFER)
AGPIO(GPIO_MCP2515_CS),
#endif // USE_MCP2515
#ifdef USE_MCP23XXX_DRV
AGPIO(GPIO_MCP23SXX_CS) + MAX_MCP23XXX,
#endif // USE_MCP23XXX_DRV
#endif // USE_SPI
#if defined(USE_SDCARD) && defined(ESP32)

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "Effet Hall"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "Effetto hall"
#define D_SENSOR_EPD_DATA "EPD - Dati"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx - Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx - CS"
#define D_SENSOR_MCP2515_CS "MCP2515 - CS"
#define D_SENSOR_HRG15_RX "HRG15 - RX"
#define D_SENSOR_HRG15_TX "HRG15 - TX"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "Efekt Halla"
#define D_SENSOR_EPD_DATA "EPD Dane"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "Efeito Hall"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "Efeito Hall"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -896,6 +896,7 @@
#define D_SENSOR_HALLEFFECT "HallEffect"
#define D_SENSOR_EPD_DATA "EPD Data"
#define D_SENSOR_MCP23XXX_INT "MCP23xxx Int"
#define D_SENSOR_MCP23SXX_CS "MCP23Sxx CS"
#define D_SENSOR_MCP2515_CS "MCP2515 CS"
#define D_SENSOR_HRG15_RX "HRG15 Rx"
#define D_SENSOR_HRG15_TX "HRG15 Tx"

View File

@ -876,7 +876,9 @@ void ResponseAppendFeatures(void)
#if defined(USE_ENERGY_SENSOR) && defined(USE_BIOPDU)
feature9 |= 0x00010000; // xnrg_24_biopdu.ino
#endif
// feature9 |= 0x00020000;
#if (defined(USE_I2C) || defined(USE_SPI)) && defined(USE_MCP23XXX_DRV)
feature9 |= 0x00020000; // xdrv_67_mcp23xxx.ino
#endif
// feature9 |= 0x00040000;
// feature9 |= 0x00080000;

View File

@ -1,5 +1,5 @@
/*
xdrv_67_mcp230xx.ino - MCP23008/MCP23017 GPIO Expander support for Tasmota
xdrv_67_mcp23xxx.ino - MCP23008/MCP23017/MCP23S17 GPIO Expander support for Tasmota
SPDX-FileCopyrightText: 2023 Theo Arends

View File

@ -293,7 +293,7 @@ a_features = [[
"USE_MODBUS_ENERGY","USE_SHELLY_PRO","USE_DALI","USE_BP1658CJ",
"USE_DINGTIAN_RELAY","USE_HMC5883L","USE_LD2410","USE_ME007",
"USE_DISPLAY_TM1650","USE_PCA9632","USE_TUYAMCUBR","USE_SEN5X",
"USE_BIOPDU","","","",
"USE_BIOPDU","USE_MCP23XXX_DRV","","",
"","","","",
"","","","",
"","","",""
@ -324,7 +324,7 @@ else:
obj = json.load(fp)
def StartDecode():
print ("\n*** decode-status.py v12.3.1.6 by Theo Arends and Jacek Ziolkowski ***")
print ("\n*** decode-status.py v12.4.0.1 by Theo Arends and Jacek Ziolkowski ***")
# print("Decoding\n{}".format(obj))