Ankündigung

Einklappen
Keine Ankündigung bisher.

Bedingter eval_trigger

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Bedingter eval_trigger

    Hallo ihr alle,

    ich habe ein einfaches Problem, für welches mir aber keine einfache, eigentlich gar keine, Lösung einfallen will. Ich bekomme regelmäßig folgendes warning im log:
    Code:
    2024-11-20  19:36:31 WARNING  lib.item.item       Item 'beet0.miflora': problem evaluating 'sh.beet0.sensors()['Flora12bfa1']' - KeyError (in dict)
    Der Grund ist schnell gefunden: beet0.sensors wird via MQTT von meinen Tasmota ESP32 "Satelliten" befüllt:
    Code:
    {'Time': '2024-11-20T20:50:07', 'Flora12bfa1': {'mac': '5c857e12bfa1', 'Temperature': 2.4, 'Illuminance': 305, 'Moisture': 8, 'Fertility': 1, 'RSSI': -72}, 'Flora12ce66': {'mac': '5c857e12ce66', 'Temperature': 20.9, 'Illuminance': 168, 'Moisture': 22, 'Fertility': 999, 'RSSI': -90}, 'TempUnit': 'C'}
    beet0.sensors triggert den eval-Ausdruck von beet0.miflora:
    Code:
        miflora:
            name: MiFlora
            type: dict
            eval: sh...sensors()['Flora12bfa1']
            eval_trigger: ..sensors
            cache: yes
    Eigentlich kein Problem, jedoch sendet mein 'Satellit' nicht jedes Mal die Sensordaten:
    Code:
    {'Time': '2024-11-20T20:51:30', 'wasser': 'ON', 'deckel': 'OFF'}
    Und jetzt haben wir meinen Fehler reproduziert: Da 'Flora12bfa1' nicht gesetzt ist, kann es logischerweise nicht ausgewertet werden. Also darf der eval_trigger nur auslösen, wenn 'Flora12bfa1' existent ist. Vorschläge?

    Beste Grüße

    Timo

    #2
    Ich habe die KI gefragt. Und ihr Vorschlag ist gut.
    Der Eval Ausdruck lautet nun:
    Code:
    sh.beet0.sensors().get('Flora12bfa1', None)
    Gelöst? Ich muss es noch kurz testen, aber eval Syntax-Prüfer funktioniert es schonmal

    Kommentar


      #3
      sh.beet0.sensors(key='Flora12bfa1', default={})

      Kommentar

      Lädt...
      X