Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

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