NEWS
LastContact (.lc) von allen States eines Objektes triggern
-
Um einen realen Wert des letzten Kontaktes zu einem Objekt zu erfassen möchte ich die .lc aller States des Objektes prüfen.
Bisher habe ich für jedes Objekt ein Script mit Trigger auf alle Datenpunkte wenn die Änderungen bestätigt sind.
Gibt es da vielleicht auch eine Möglichkeit einen Trigger auszulösen wenn sich irgendein State eines Objektes ändert und den .ts oder .lc dann in eine Variable schreibt? " 0_userdata.0.Dummy.Temperatursensor. * " geht ja so nicht.MfG
-
@klausimausi sagte: " 0_userdata.0.Dummy.Temperatursensor. * " geht ja so nicht.
Doch, im $Selektor.
Im Trigger kann man auch RegExp verwenden:on(/0_userdata\.0\.Dummy\.Temperatursensor\..+/, function(dp) { const lc = dp.state.lc; }); -
Ja, damit komme ich weiter. Vielen Dank!
-
....ich möchte die Werte nun in einem Datenpunkt unter dem jeweiligen Objekt speichern. Im Expertenmodus anlegen ist kein Problem z.B. unter zigbee.0. Nun prüft mein Script ob dieser DP vorhanden ist und schreibt den .lc dort rein. Nun würde ich gerne, dass bei nichtvorhandensein des DP dieser dort angelegt wird. Solange ich noch im Expertenmodus bin geht's. Das automatische hinzufügen nach dem Ausloggen legt dann diese Datenpunkte aber unter Javascript.0.zigbee.0 an weil die admin Rechte fehlen um in zigbee.0. zu speichern. Wie kann ich das Script zum Erzeugen des DP automatisch als Admin ausführen?
MfG
-
Ich kann es einfach nicht so stehen lassen: lc steht für lastChange.
Wir raten davon ab im Objektbaum eines Adapters eigene Objekte an zu legen, das kann zu unerwarteten Problemen führen. Deshalb gibt es 0_userdata.0 das ist dafür vorgesehen eigene Objekte an zu legen.
-
@klausimausi sagte: Script zum Erzeugen des DP automatisch als Admin ausführen?
createState() kann generell nur Datenpunkte unter "javascript.N" oder unter "0_userdata.0" erzeugen.
-
@klausimausi said in LastContact (.lc) von allen States eines Objektes triggern:
....ich möchte die Werte nun in einem Datenpunkt unter dem jeweiligen Objekt speichern. Im Expertenmodus anlegen ist kein Problem z.B. unter zigbee.0. Nun prüft mein Script ob dieser DP vorhanden ist und schreibt den .lc dort rein. Nun würde ich gerne, dass bei nichtvorhandensein des DP dieser dort angelegt wird. Solange ich noch im Expertenmodus bin geht's. Das automatische hinzufügen nach dem Ausloggen legt dann diese Datenpunkte aber unter Javascript.0.zigbee.0 an weil die admin Rechte fehlen um in zigbee.0. zu speichern. Wie kann ich das Script zum Erzeugen des DP automatisch als Admin ausführen?
MfG
NEIN NEIN NEIN
States im Objectbaum eines Adapters zu speichern ist eine ganz ganz schlechte Idee. Lass das gleich wieder sein. States die DU anlegen willst müssen unter 0_userdata_0 angelegt werden. Im Objectbaum eines Adapter hat (von ganz ganz wenigen Ausnahmen abgesehen) ausschließlich der Adapter selbst etwas zu erstellen.
Und wie Jey Cee schon richtig angemerkt hat bedeitet lc last changed. Das hat nichts mit einem Kontakt (wie immer du Kontakt definierst) zu tun.
-
OK . VERSTANDEN

an dich noch mal eine Frage zu
on(/0_userdata\.0\.Dummy\.Temperatursensor\..+/, function(dp) { const lc = dp.state.lc; });...wie kann ich denn hier z.B bei mir die Datenpunkte ".zone" und ".area" ausschließen.
Die werden einmal generiert und ändern sich nie wieder...oder wenn ein Anderer eine Idee hat !
MfG -
@klausimausi sagte: die Datenpunkte ".zone" und ".area" ausschließen.
on(/0_userdata\.0\.Dummy\.Temperatursensor\..+/, function(dp) { if(!(dp.id.endsWith('.zone') || dp.id.endsWith('.area'))) { const lc = dp.state.lc; } });@klausimausi sagte in LastContact (.lc) von allen States eines Objektes triggern:
Die werden einmal generiert und ändern sich nie wieder.
Dann triggern sie auch nur einmal, denn der gezeigte Trigger reagiert nur auf Wertänderung.