esphome-docs/components/pcf8574.rst
2019-03-14 16:41:37 +01:00

68 lines
2.0 KiB
ReStructuredText

PCF8574 I/O Expander
====================
.. seo::
:description: Instructions for setting up PCF8574 digital port expanders in ESPHome.
:image: pcf8574.jpg
The PCF8574 component allows you to use PCF8574 or PCF8575 I/O expanders
(`datasheet <http://www.ti.com/lit/ds/symlink/pcf8574.pdf>`__,
`Sparkfun`_) in ESPHome. It uses :ref:`I²C Bus <i2c>` for communication.
Once configured, you can use any of the 8 pins (PCF8574) or 16 pins (PCF8575) as
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.
Any option accepting a :ref:`Pin Schema <config-pin_schema>` can theoretically be used, but some more
complicated components that do communication through this I/O expander will
not work.
.. figure:: images/pcf8574-full.jpg
:align: center
:width: 80.0%
PCF8574 I/O Expander.
.. _Sparkfun: https://www.sparkfun.com/products/retired/8130
.. code-block:: yaml
# Example configuration entry
pcf8574:
- id: 'pcf8574_hub'
address: 0x21
pcf8575: False
# Individual outputs
switch:
- platform: gpio
name: "PCF8574 Pin #0"
pin:
pcf8574: pcf8574_hub
# Use pin number 0
number: 0
# One of INPUT, INPUT_PULLUP or OUTPUT
mode: OUTPUT
inverted: False
Configuration variables:
~~~~~~~~~~~~~~~~~~~~~~~~
- **id** (**Required**, :ref:`config-id`): The id to use for this PCF8574 component.
- **address** (*Optional*, int): The I²C address of the driver.
Defaults to ``0x21``.
- **pcf8575** (*Optional*, boolean): Whether this is a 16-pin PCF8575. Defaults to ``False``.
See Also
--------
- :ref:`i2c`
- :doc:`switch/gpio`
- :doc:`binary_sensor/gpio`
- `PCF8574 Arduino Library <https://github.com/skywodd/pcf8574_arduino_library>`__ by `Fabien Batteix <https://github.com/skywodd>`__
- :apiref:`io/pcf8574_component.h`
- :ghedit:`Edit`
.. disqus::