mad-mike hat geschrieben: ↑21. Aug 2022 11:41
Habe die besagte Außenlampe von dem ""Test"" Shelly auf das Relai board umgeklemmt.
~Grummel~ Relais ist ein dem Französischen entlehntes Wort. Einzahl: das Relais. Mehrzahl: die Relais.
Ursprünglich die [Post-] Station, in der der Reiter das Pferd gewechselt hat, später auch die Telegrafenstationen, die Nachrichten per Fahnen/Winkern oder Lichtsignalen weiterleiteten.
mad-mike hat geschrieben: ↑21. Aug 2022 11:41
Gestern hatte ich dann nach dem Testen das Problem das alle 30min immer eine Meldung kam. Ich vermute weil die Rule nicht lesen kann was auf dem Board passiert...
(Board wird über HTTP Binding angesteuert ohne Feedback / Write Only)
Nun habe ich die Rule um ein
erweitert. scheint zu funktionieren.
Nein, das funktioniert nicht.
Die Rule ist zwingend auf den echten Status der Lampe angewiesen.
Wenn das Bord nicht lesbar ist, musst Du dafür sorgen, dass das Item den Status anhand des zuletzt gesendeten Befehls speichert. Natürlich darfst Du dann das Bord keinesfalls unabhängig von openHAB steuern,
Die Gleichheitsszeichen und das Ausrufezeichen:
Code: Alles auswählen
= -> Wertzuweisung. a = b -> a wird der Wert von b zugewiesen
== Vergleich, wahr bei Gleichheit. a == b -> wahr, falls a gleich b ist.
!= Vergleich, wahr bei Ungleichheit, a != b -> wahr, falls a ungleich b ist.
=== Vergleich, wahr, falls identisch. a === b -> unwahr, außer man ergreift spezielle Maßnahmen. a === a -> wahr
!== Vergleich, wahr, falls nicht identisch, a !== b -> immer wahr, außer... a !== a -> unwahr.
! ohne irgendwas: Verneinung, bzw. als logischer Begriff: NOT
Weil das mit den drei = echt nicht simpel ist:
=== vergleicht
nicht den Wert einer Variablen, sondern den
Zeiger der Variablen.
Wenn man einer Variablen den Wert
null zuweist (und nur dann, nur bei exakt diesem Wert, NULL ist etwas anderes!), so wird nicht etwa
null in dieser Variablen gespeichert, sondern der
Zeiger der Variable wird auf eine ganz bestimmte Position im RAM gesetzt. Diese Position ist als
null definiert. Wo im Speicher sich diese Stelle befindet ist unerheblich, und es ist auch egal, welcher Wert in der konkreten Speicherzelle steht (nun ja, natürlich wird dort ein 0-Byte stehen...).
NULL hingegen ist ein gültiger Status, den jedes Item jederzeit annehmen kann. Die Prüfung !== NULL wird immer erfüllt sein, einfach, weil nicht mal NULL identisch zu NULL ist, es ist ja keine konkrete Stelle im Speicher dafür zuständig.
Bei OFF gilt sinngemäß das gleiche
Wie sieht denn die Rule nun tatsächlich aus?
Und ein Tipp, den ich nicht müde werde zu geben: Itemnamen sollten sich möglichst nicht auf Things oder Channel beziehen. Es gibt in openHAB eine strikte Trennung zwischen Funktion und Hardware. Im Thing wird die Verbindung zur Hardware gebildet. der Channel stellt die Verbindung zu einem oder mehreren Items her. Das Item hat aber eine konkrete Funktion, z.B. das Schalten eines Lichts. Es ist nicht sinnvoll, das Item nach der Hardware zu benennen, stattdessen sollte es den Namen der Lampe tragen (hier z.B. Licht_aussen).