MAX6956 I/O Expander
The MAX6956 component allows you to use MAX6956 I/O expanders (datasheet) in ESPHome. It uses I²C Bus for communication.
The max6956 exists in 2 versions 20 or 28 ports, depending on the packaging.
Once configured, you can use any of the 20 or 28 pins for your projects. Within ESPHome they emulate a real internal GPIO pin
and can therefore be used with many of ESPHome’s components such as the GPIO binary sensor or GPIO switch. Interrupt-on-change for inputs is not possible.
Pins can also be individualy configured as led driver and used with Light components. Current value can be set globaly or for each pin, through 16 possible levels. Driving RGB led requires 3 pins.
Any option accepting a Pin Schema can theoretically be used.
Component/Hub
Section titled “Component/Hub”
The max6956 is an I²C Bus slave. Its address is configured using A0 and A1 hardware pins from 0x40 to 0x4F.
max6956: - id: max6956_1 address: 0x40 i2c_id: bus_aConfiguration variables
Section titled “Configuration variables”-
id (Required, ID): The id to use for this
max6956component. -
address (Optional, int): The I²C address of the driver. Defaults to
0x40. -
i2c_id (Optional): The I²C Bus ID Defaults to
false -
brightness_global (Optional): Set the value of the current to be sink by all pins configured as led driver. Defaults to
0 -
brightness_mode (Optional): Define if the current to be sink will be confgured globaly or per pin configured as led driver. Defaults to
global
Binary Sensor Example
Section titled “Binary Sensor Example”max6956 pins can be use as binary sensor. Individual pullup are supported.
# Example configurationbinary_sensor: - platform: gpio name: "MaxIn Pin 4" id: In_4 pin: max6956: max6956_1 number: 4 mode: input: true pullup: true inverted: FalseSwitch Example
Section titled “Switch Example”max6956 pins can be use as switch.
# Example configuration switch: - platform: gpio name: "MaxIn Pin 8" id: In_8 pin: max6956: max6956_1 number: 8 mode: output: true inverted: FalseLed driver Example
Section titled “Led driver Example”max6956 can control a constant-current sink to drive leds, with 16 equal steps from 1.5mA to 24mA.
# Example configuration : pin as led driver, current globalyi2c: id: bus_a sda: GPIOXX scl: GPIOXX
switch: - platform: template name: "Led" id: MaxOut4 optimistic: true turn_on_action: - output.turn_on: maxOut_pin4 turn_off_action: - output.turn_off: maxOut_pin4
number: - platform: template name: "Global brightness" id: global_brightness optimistic: true min_value: 0 max_value: 15 initial_value: 1 step: 1 mode: slider on_value: - max6956.set_brightness_global: id: max6956_1 brightness_global: !lambda return x;
max6956: - id: max6956_1 address: 0x40 i2c_id: bus_a brightness_mode: global brightness_global: 5
#output to useoutput: - platform: max6956 pin: 4 id: maxOut_pin4
#led binded to outputlight: - platform: monochromatic id: Light_1 output: maxOut_pin4# Example configuration : pin as led driver, current managed individualy (RBG led)i2c: id: bus_a sda: GPIOXX scl: GPIOXX
max6956: - id: max6956_1 address: 0x40 i2c_id: bus_a brightness_mode: segment
switch: - platform: template name: "Led Red" id: MaxOut4 optimistic: true turn_on_action: - output.turn_on: maxOut_pin4 turn_off_action: - output.turn_off: maxOut_pin4
- platform: template name: "Led Green" id: MaxOut5 optimistic: true turn_on_action: - output.turn_on: maxOut_pin5 turn_off_action: - output.turn_off: maxOut_pin5
- platform: template name: "Led Blue" id: MaxOut6 optimistic: true turn_on_action: - output.turn_on: maxOut_pin6 turn_off_action: - output.turn_off: maxOut_pin6
number: - platform: template name: "Number Red" id: number_LedRed optimistic: true min_value: 0 max_value: 100 initial_value: 10 step: 1 mode: slider on_value: - output.set_level: id: maxOut_pin4 level: !lambda return x/100;
- platform: template name: "Number Green" id: number_LedGreen optimistic: true min_value: 0 max_value: 100 initial_value: 10 step: 1 mode: slider on_value: - output.set_level: id: maxOut_pin5 level: !lambda return x/100;
- platform: template name: "Number Blue" id: number_LedBlue optimistic: true min_value: 0 max_value: 100 initial_value: 10 step: 1 mode: slider on_value: - output.set_level: id: maxOut_pin6 level: !lambda return x/100;output: - platform: max6956 pin: 4 id: maxOut_pin4 - platform: max6956 pin: 5 id: maxOut_pin5 - platform: max6956 pin: 6 id: maxOut_pin6
light: - platform: rgb id: Light_1 default_transition_length: 0.1s gamma_correct: 1 red: maxOut_pin4 green: maxOut_pin5 blue: maxOut_pin6