Lesen,Schreiben auf ext. MQTT-Server und Sensordaten an ESP32-Display

Hallo,

kurze Vorgeschichte: Ich migriere meine bestehende kleine Smart-Home-Umgebung von iobroker zu home-assistant. Deswegen ist vieles einfach komplett neu für mich.

Ich habe einen ha-Server und einen separaten mqtt Server.

Jetzt möchte ich Daten aus Entitäten in meinen mqtt schreiben und dann mit einem ESP32 (esphome) abfragen und auf einem Display anzeigen. Das Ganze habe ich in iobroker damals schön hinbekommen. Derzeit scheitere ich aber ganz furchtbar am skripten. Früher habe ich das einfach mit blockly gemacht. Jetzt habe ich die Automation in ha versucht.

Also, was bisher geht:
Ich nehme Daten z.B. aus meinem SMA-Wechselrichter und schreibe diese per Automation minütlich per mqtt publish in meinen mqtt-server.

Das sieht z.B. so aus:

action: mqtt.publish
data:
  qos: "0"
  retain: false
  topic: esp32-kuechendisplay/Ertrag_Heute
  payload: "\"{{states('sensor.stp_daily_yield')}}\""

Der ESP32 funktioniert zunächst schonmal wieder mit dem Display, nur die Daten kann ich nicht abrufen oder anzeigen. Da bin ich mir nicht sicher…

Die config in Teilen auf dem ESP sieht so aus:

mqtt:
  broker: 192.168.1.14 # IP-Adresse des ioBroker-MQTT-Servers
  port: 1883
  username: 123 # Benutzername aus der MQTT-Konfiguration
  password: supersicherespasswort123 # Passwort aus der MQTT-Konfiguration

sensor:
 
  - platform: mqtt_subscribe
    id: Ertrag_Heute
    topic: esp32-kuechendisplay/Ertrag_Heute
    unit_of_measurement: "Wh"
    state_class: measurement

display:
  - platform: waveshare_epaper
    cs_pin: 25
    dc_pin: 26
    busy_pin: 
      number: GPIO14
      inverted: true
    reset_pin: 27
    model: 7.50inv2
    update_interval: 60s
    reset_duration: 2ms
    id: my_display
    pages:
      - id: page1
        lambda: |-

                     
           it.printf(0, 40, id(font1), "Ertrag heute: %.0f Wh", id(Ertrag_Heute).state);

Auf dem mit ESP-Home eingerichteten esp32 können die Sensordaten aber nicht verarbeitet werden. Da bekomme ich als Fehlermeldung immer:

[16:44:00][W][mqtt_subscribe.sensor:018]: Can't convert '"32344.0"' to number!
[16:44:00][D][sensor:094]: 'Ertrag_Heute': Sending state nan kWh with 1 decimals of accuracy

Würde mich über Hilfe bei meinem Vorhaben freuen.
Als Sahnehäubchen würde mich interessieren, ob ich
a) mit den Automatisierungen ausreichend klar kommen werde oder ich mir besser
b) doch direkt Node-Red aneignen sollte, da ich
c)blockly wohl nicht mehr in ha bekomme?

VG und schonmal Danke!

Um Sensordaten von Home Assistant in MQTT zu veröffentlichen würde ich Dir die MQTT Statestream Integration empfehlen, ist einfacher als für jeden einzelnen Sensor eine Automatisierung zu erstellen.

Wie die Daten am MQTT Broker genau ankommen, schaust Du Dir am besten über den MQTT Explorer an, kannst Du als Home Assistant Add-On installieren.

Zum Thema ESPHome kann ich Dir nicht weiter Helfen, ist nicht so meinen Stärke.

Gruß
Osorkon

Ich habe noch nie MQTT auf einem ESP32 gemacht aber müsste die Ausgabezeile nicht “id(Aktuelle_Erzeugung)” anstelle “id(Ertrag_Heute)” lauten?
Du forderst etwas mit der ID “Aktuelle_Erzeugung” an und gibst etwas mit der ID “Ertrag_Heute” aus…

BTW: Wenn die Daten bereits als Entitäten in Home Assistant verfügbar sind, warum dann noch der Umweg über MQTT.
ESPHome ist bestens in Home Assistant integriert, kannst also direkt auf die Daten zugreifen.

Gruß
Osorkon

Stimmt Osorkon hat recht (Wald vor lauter Bäume…)

Im ESPHome Teil

-- platform: homeassistant
    id: Aktuelle_Erzeugung
    name: "Aktuelle_Erzeugung"
    entity_id: ENTITY_ID_HOMEASSISTANT

…aber mit den richtigen Einrückungen…

:crayon:by HarryP: Post formatiert

Sry, leider nur ein Copy-Paste fehler, weil ich natürlich noch eine Reihe anderer Sensoren hin und her schiebe. Habs im Text angepasst.

Die Integration schau ich mir mal an.

Warum den Umweg? Ich müsste mich nochmal mit allen Geräten beschäftigen. Die meisten Dinge fahren aber prima über MQTT, ob ich alles aufs Homeassistant nachher migriert bekomme, weiß ich noch nicht.

Habs jetzt wie o.b. direkt mit der homeassitant gemacht. ohne mqtt dazwischen.