Seite 1 von 1
Null in Item oder Channel abfangen
Verfasst: 17. Jul 2024 14:56
von Jensemann_P
Hi Leute,
ich suche gerade nach einer Möglichkeit "NULL" abzufangen. Ich habe einige Sensoren über MQTT, bei denen auch mal länger ein update auf diesem Topic ausbleibt und daher eben NULL bleibt. Leider werdne diese dann z.b. in der HABpanel-Timeline nicht dargestellt (Zustand "NULL" mag er nicht).
Wie kann ich denn am besten dafür sorgen, dass bei diesen Items aus "NULL" z.B. "OPEN" wird?
LG
Jens
Re: Null in Item oder Channel abfangen
Verfasst: 17. Jul 2024 21:09
von udo1toni
Also, es kommt dabei natürlich nicht unwesentlich auf den Itemtyp an.
Einen Typ Number würde ich immer mittels if(myNumberItem.state instanceof Number) testen. Ist die Bedingung nicht erfüllt, so enthält der Status keine gültige Zahl (und ist damit NULL oder UNDEF)
Für "Bit"-Items (Contact oder Switch) würde ich auf die gültigen Werte testen:
if(mySwitchItem.state != ON) mySwitchItem.postUpdate(OFF) oder if(myContactItem.state != CLOSED) myContactItem.postUpdate(OPEN)
Hier wird auf den einzigen gültigen Wert getestet, der ungleich dem "default" Wert ist.
Man könnte natürlich hintereinander auf beide Werte testen, das wäre dann aber ein weiterer Vergleich, der nur unnötig Zeit kostet.
Natürlich kannst Du auch explizit auf NULL testen if(myContactItem.state == NULL) myContactItem.postUpdate(OPEN) aber wie gesagt gibt es mindestens noch einen weiteren möglichen "fehlerhaften" Wert (UNDEF).
Re: Null in Item oder Channel abfangen
Verfasst: 18. Jul 2024 12:08
von Jensemann_P
Danke dir, das hat -wie immer- geholfen. Ich habe den code so ähnlich in eine Rule eingebaut, die Zyklisch mal durschaut und alle relevanten Items setzt (ändert sich ja über MQTT nichts, wenn nicht aktiv werte kommen).