NEWS
Adapterentwicklung setState ohne Auslösen einer Funktion
-
Hallo zusammen,
bin gerade bei meinem zweiten Adapter bei, dem Adapter für das Jung/Gira eNet Gateway.
Hier frage ich beim Start des Adapters alle Geräte, Räume etc. ab, schreibe dafür Objekte und setze mittels setState die aktuellen Werte.
Im
adapter.on('stateChange', function (id, state)
rufe ich eine Funktion auf, die den aktuellen Wert für den State am eNet gateway setzt.
Das funktioniert auch soweit.
Zusätzlich habe ich einen Poll Timer, der die aktuellen States vom eNet Gateway abrufen soll und in die States des ioBrokers schreiben soll, allerdings soll dies NUR bei den States geschehen, die sich NICHT verändert haben.
Wie kann ich das lösen? Bzw. wie ermittele ich, ob sich ein State verändert hat?
-
Bei Adaptern ist der „übliche“ weg dir einfach die aktuellen Werte zu merken in einer eigenen Struktur (Objekt mit den ids als key oder so) und dann selbst zu vergleichen und beim Schreiben dann immer dort auch aktualisieren. Es gibt glaube auch ein setStateNotChanged oder so, aber der arbeitet ggf nicht sooo Performant wenn es viele Daten sind.
Üblicherweise sind die Daten diesmal da redundant hält nicht sooo viel.