TCA6408 ESPHome Component
Full-featured custom component for the TCA6408 8-bit I²C I/O Expander.
This is work in progress and under test
Features
- 8 bidirectional GPIO pins
- Hardware polarity inversion support (inputs)
- Interrupt-driven inputs (active-low INT pin)
- Efficient cached GPIO expander
- Polling fallback mode
- Compatible with ESP32 (including C3/C5/C6), ESP8266, etc.
The INT pin on TCA6408 is open-drain active-low — connect a pull-up resistor (or use internal pull-up on ESP).
Installation
- Download or clone this component into your ESPHome project:
mkdir -p custom_components cp -r TCA6408/custom_components/tca6408 custom_components/
Basic Configuration
i2c:
sda: GPIO4
scl: GPIO5
scan: true
frequency: 400kHz
custom_components:
- source:
type: local
path: custom_components/tca6408
tca6408:
- id: tca6408_hub
address: 0x20 # Default: 0x20 (0x20–0x27 depending on ADDR pins)
interrupt_pin: GPIO6 # Recommended for fast input response
Example: Outputs (Switches)
switch:
- platform: gpio
name: "TCA6408 Output 0"
pin:
tca6408: tca6408_hub
number: 0
mode: OUTPUT
- platform: gpio
name: "TCA6408 Relay (Active Low)"
pin:
tca6408: tca6408_hub
number: 1
mode: OUTPUT
inverted: true
Example: Inputs (Binary Sensors) with Interrupt
binary_sensor:
- platform: gpio
name: "Door Sensor"
pin:
tca6408: tca6408_hub
number: 3
mode: INPUT
inverted: true # Uses hardware polarity inversion
- platform: gpio
name: "Push Button"
pin:
tca6408: tca6408_hub
number: 4
mode: INPUT