Esp DeepSleep Entität nicht verfügbar - Helfer erstellen?

Hi,
ich bin ganz neu im Thema Homeassistant, bitte zerpflückt mich nicht :wink:
In nur zwei Wochen habe ich meinen Saugroboter integriert, ZHA und ESPhome aufgesetzt, Automatisationen geschrieben und und und. Mein jetziges Problem scheint banal, aber mir platzt der Kopf und ich finde keine Lösung.

Ein Esp8266 werkelt erfolgreich mit einem analogen Feuchtigkeitssensor in der Blumenerde (hab ich selbst geschrieben, gab keine Vorlage in ESPhome). Sobald der ESP in den DeepSleep geht, wird er im Dashboard als nicht mehr verfügbar angezeigt. Das Problem scheint bekannt zu sein, leider wurde es noch nicht gefixt.

Meine Idee:

Ich habe eine Helfer “Blumenwert” vom Typ Number angelegt. Dieser soll stattdessen im Dashboard angezeigt und für weitere Automatisationen verwendet werden (z.B. zu trocken → bitte giessen).
Der Trigger in meiner Automatisation löst aus, wenn der ESP wieder verfügbar ist.
Soweit zu gut.
Ich scheitere aber daran, den Wert an den Helfer zu übergeben, sodass ich im Dashboard den Wert des Helfers anzeigen lassen kann. Dazu habe ich unter Aktionen einen Dienst aufgerufen (input_number.set_value), aber ich kann dann nur einen Wert manuell eingeben, nicht aber den Wert vom ESP übergeben. Also hab ich mir gedacht, ich öffne das mal in YAML und schreib das so:

alias: Test Blumensensor
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.esp8266_dev2_porzelanblume_feuchtigkeit
condition: []
action:
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - service: input_number.set_value
    target:
      entity_id: input_number.blumenwert
    data:
      value: float(states('sensor.esp8266_dev2_porzelanblume_feuchtigkeit')
mode: single

Fehlermeldung: expected float for dictionary value @ data[‘value’]. Got None

Ist meine Idee grundsätzlich ok oder bin ich auf dem Holzweg. Ich sehe den Wald vor lauter Bäumen nicht mehr. Ich wäre so dankbar über jede Hilfe.

Beste Grüße Vansen

Weiß wirklich niemand, ob/ wie man einem Helfer in einer Automatisation den Zustandswert einer anderen Entität (Esp8266) zuweisen kann?

Hier ist die Lösung, einfacher YAML-Code für Profis, für Anfänger eine Herausforderung.

Das Problem:
Im Dashboard werden die Feuchtigkeitswerde nicht angezeigt, wenn der ESP nicht verfügbar ist (Deep Sleep) Ich brauche das aber, da der Sensor über eine Batterie läuft.

Lösung:

  1. Einen numerischen Helfer (habe diesen Blumenwert genannt - siehe YAML Code unten) anlegen (input.number), minimaler Wert 0 und maximaler Wert 100, Schrittgröße 1.
  2. Automatisation erstellen (Trigger: Zustandsänderung des ESP, Aktion: Dienst input_number.set_value) Dann auf YAML umschalten und folgenden Code einfügen, man kann tatsächlich statt Zahlen auch “Variablen” übergeben.
{{ states('sensor.esp8266_dev2_porzelanblume_feuchtigkeit') | float }}

Da das aber nur die halbe Wahrheit ist, hier der vollständige Code:

Feuchtigkeit über A0 messen, irgendein billiger Feuchtigkeitsmesser von funduino.de. Ich kenne noch nicht einmal die Bezeichnung. Gibt bei mir eine Spannung von 0 bis 0,59 V aus (Sensor im Wasserglas). Hab dann einen linearen Filter draufgelegt, damit mir die Werte in Prozent von 0 bis 100 umgerechnet werden.

deep_sleep:
  run_duration: 20s
  sleep_duration: 3600s

sensor:
  - platform: adc
    pin: A0
    name: "Porzelanblume Feuchtigkeit"
    icon: "mdi:water-percent"
    unit_of_measurement: "%"
    state_class: "measurement"
    accuracy_decimals: 0
    update_interval: 5s
    filters:
      - calibrate_linear:
        - 0.0 -> 0.0
        - 0.59 -> 100.0

Und hier dser YAMLCode für die Automatisation:

alias: Test Blumensensor
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.esp8266_dev2_porzelanblume_feuchtigkeit
condition: []
action:
  - service: input_number.set_value
    target:
      entity_id: input_number.blumenwert
    data:
      value: |
        {{ states('sensor.esp8266_dev2_porzelanblume_feuchtigkeit') | float }}
mode: single

Mein Erklärungsversuch: Normalerweise steht hinter “value:” der Zahlenwert. In meinem Fall wird rufe ich den Wert der im Zustand meines ESP gespeichert ist auf und gebe den mit dem “|” Zeichen weiter zur Umwandlung in einen Float. Ich vermute mal wie eine Pipe in Linux. Kann aber auch ganz falsch liegen. Vielleicht mag ja doch noch ein Profi hier ein kleines Kommentar dazu schreiben. Z.B. auch warum es zwei geschweifte klammern sind und warum man noch dem Value ein “|” Zeichen verwendet und dann in die nächste Zeile muss. Warum nicht gleich in die gleiche Zeile schreiben? Na egal, jetzt funktioniert es wie gewünscht.

Das ist schon mal richtig!

Nicht schlagen wenn es falsch erklärt ist.

erwartet Daten in der 1. Klammer, die 2. wird genutzt weil die Daten erst “zusammengebaut” werden die 2. Klammer könnte wegbleiben wenn da ein fester Wert rein geschrieben wird.
Hoffe das ist so richtig erkllärt