# Display mit pcf8574t und einer Ampel LED

Dieses Projekt hängt an der Tür zu meinem Arbeitszimmer und soll der Familie anzeigen, ob ich gerade in einem Meeting bin oder ob man einfach reinplatzen darf.

#### Hardware und Verdrahtung

<p class="callout warning">TODO</p>

#### Home Assistant

In Home Assistant wird in der Konfiguration ein input\_select Dropdownmenü angelegt.

[![Screenshot_20210610_205043.png](https://wiki.magenbrot.net/uploads/images/gallery/2021-06/scaled-1680-/screenshot-20210610-205043.png)](https://wiki.magenbrot.net/uploads/images/gallery/2021-06/screenshot-20210610-205043.png)

Dann hab ich noch 3 Automatisierungen mit denen ich die Ampel und den Displaytext einfach steuern kann.

Grüne Ampel:

```YAML
alias: AZ - Display Hereinspaziert!
description: ''
trigger:
  - platform: state
    entity_id: switch.az_display_led_gruen
    to: 'on'
    from: 'off'
condition: []
action:
  - service: input_select.select_option
    target:
      entity_id: input_select.az_display_door
    data:
      option: Hereinspaziert!
mode: single

```

Gelbe Ampel:

```YAML
alias: AZ - Display nicht stoeren!
description: ''
trigger:
  - platform: state
    entity_id: switch.az_display_led_gelb
    to: 'on'
    from: 'off'
condition: []
action:
  - service: input_select.select_option
    target:
      entity_id: input_select.az_display_door
    data:
      option: nicht stoeren!
mode: single

```

Rote Ampel:

```YAML
alias: AZ - Display Meeting
description: ''
trigger:
  - platform: state
    entity_id: switch.az_display_led_rot
    to: 'on'
    from: 'off'
condition: []
action:
  - service: input_select.select_option
    target:
      entity_id: input_select.az_display_door
    data:
      option: bin im Meeting!
mode: single

```

#### ESPHome Code

```YAML
esphome:
  name: arbeitszimmer_display_door
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: !secret iot_wifi_ssid
  password: !secret iot_wifi_password
  power_save_mode: none
  manual_ip:
    static_ip: 172.16.72.103
    gateway: 172.16.72.1
    subnet: 255.255.255.0
    dns1: 172.16.71.1

  ap:
    ssid: "Arbeitszimmer Display Door"
    password: !secret fallback_password

captive_portal:

logger:

api:

ota:

web_server:
  port: 80

i2c:
  sda: D2
  scl: D1

switch:
  - platform: gpio
    pin: D5
    interlock: &interlock_group [az_display_led_rot, az_display_led_gelb, az_display_led_gruen]
    id: az_display_led_rot
    name: "LED rot"

  - platform: gpio
    pin: D6
    interlock: *interlock_group
    id: az_display_led_gelb
    name: "LED gelb"

  - platform: gpio
    pin: D7
    interlock: *interlock_group
    id: az_display_led_gruen
    name: "LED grün"

display:
  - platform: lcd_pcf8574
    id: my_display
    dimensions: 16x2
    address: 0x27
    lambda: |-
      it.printf(0, 0, "%s", id(my_text).state.c_str());
      it.strftime(0, 1, "%H:%M %d.%m.%Y", id(my_time).now());

text_sensor:
  - platform: homeassistant
    id: my_text
    name: "Text"
    entity_id: input_select.az_display_door

time:
  - platform: homeassistant
    id: my_time
```

Nachdem der Code auf den ESP geladen wurde, sollte diese Node im Home Assistant als neue Integration auftauchen. Wenn alles passt, lassen sich nun LEDs und Display über die zur Integration gehörenden Entities steuern.

<p class="callout info">Ich habe etwas gebraucht, um die i2c-Adresse des Displays herauszufinden. Nach ungefähr einer Stunde habe ich dann festgestellt, dass ESPHome nach dem Boot den ic2-Bus scannt und man dort die Adresse direkt im Log sehen kann.</p>

Alternativ zu dem input\_select würde auch ein input\_text funktionieren. Damit kann man auch freien Text eingeben.

In Lovelace sieht das mit der entity-card so aus:

[![Screenshot_20210610_205539.png](https://wiki.magenbrot.net/uploads/images/gallery/2021-06/scaled-1680-/screenshot-20210610-205539.png)](https://wiki.magenbrot.net/uploads/images/gallery/2021-06/screenshot-20210610-205539.png)