NEWS
obeject timestamp zugriff
-
@fred-freund Warum macht ihr es alle so kompliziert und wollt immer programmieren. Ich zeigs Dir gleich - aber wie gesagt wenn es nur darum geht festezustellen, dass sich ein Gerät eine Spanne x nicht gemeldet hat, nimm die trigger Node - aber ich zeigs Dir gleich.
-
@mickym said in obeject timestamp zugriff:
@fred-freund Warum macht ihr es alle so kompliziert und wollt immer programmieren. Ich zeigs Dir gleich - aber wie gesagt wenn es nur darum geht festezustellen, dass sich ein Gerät eine Spanne x nicht gemeldet hat, nimm die trigger Node - aber ich zeigs Dir gleich.
so hab ich das schon gemacht mit den ping...
trigger node wenn false wartet der bist ev. nach 5 minuten true kommt dann ist das der reset falls kein true mehr kommt dann schickt er telegram aus false
aber das leuchtete mir nur ein mit boolean
-
@fred-freund Nein das geht mit jedem Wert - aber ich zeig Dir auch noch das mit den Timestamps. Beim Trigger schickst Du nur einen Wert in den Trigger egal was und schickst einen Alarm wenn sich was nicht gemledet hat. Das was Du gemacht hast ist korrekt - allerdings muss der Haken noch rein, das sich die Spanne verlängert, wenn eine Nachricht kommt. (extend delay ...). Dann wird immer dann der Alarm geschickt, wenn so und so lange nicht angekommen ist. Ausserdem ist das was Du schickst völlig egal - kann aber auch das letzte Nachrichtenobjekt sein.
-
@fred-freund sagte in obeject timestamp zugriff:
trigger node wenn false wartet der bist ev. nach 5 minuten true kommt
Nein das ist verkehrt - es sendet am Anfang ein True und nach 2 Minuten ein false - das hat mit der originalen Nachricht gar nichts zu tun.
-
@mickym said in obeject timestamp zugriff:
@fred-freund sagte in obeject timestamp zugriff:
trigger node wenn false wartet der bist ev. nach 5 minuten true kommt
Nein das ist verkehrt - es sendet am Anfang ein True und nach 2 Minuten ein false - das hat mit der originalen Nachricht gar nichts zu tun.
der ping (Adapter)...schickt nicht dauernd....der aendert true false nur wenn das ding nicht mehr da ist auf false...dh. das Intervall kann Monate oder Jahre sein
das passt da schon...mit welchen die mind. 1x pro Minute oder Stunde schicken kannst das so machen...cool wie du vorgeschlagen hast... cool!! Danke
-
So hier habe ich noch ein paar Zeitberechnung für Dich gemacht:
Das ist der DP vor zwei Zyklen - der Shelly sendet alle 30 sekunden.
Das der payload.ts - immer nur ein paar Millisekunden nach dem Triggern kommt, ist doch klar - da Du der Trigger ja den Zeitstempel selbst aktualisiert. Wenn Du prüfen willst, wann ein DP zuletzt getriggert hat (und nicht aufs triggern wartest, musst Du halt mit Get das Objekt holen.
Wenn Du also mit einen state aktiv auslesen willst OHNE, dass dieser getriggert wurde - hier ein Beipsiel mit GET
Wenn man die Zeit nur im lesbaren Format braucht und nicht auf die genaue Zeitspanne angewiesen ist, dann kann man auch die Durationsangaben verwenden.
AUCH hier geht es mir wieder darum zu zeigen, dass man für solche Aufgaben nicht mit Javascript rumhantieren muss und function Nodes schreiben muss!!! -
-
@mickym Danke fuer deine Muehe!!!
Das mit dem moment hab ich mir auch schon ueberlegt.
time now ist auch meine Frage gewesen...wie bekommst bei der Injekt node den Zeitpunkt am abgefragten Object vorbei
dh. du Fragst das Objekt ab und bekommst Objekt zurueck aber nicht den Zeitpunkt/Zeitstempel...wenn dieser aber viel laenger weil nicht upgedated also Alt ist , ist das egal ob das nur ein paar millis sind!!
Das heb ich mir alles auf !!aber es laeuft mit der Trigger node! super einfach!
Danke nochmal und schoenen Abend...
-
So ich habe noch einen Flow für Dich gebastelt mit dem Du gleich einen ganzen Objektbaum grob untersuchen kannst.
Die Zaubernode ist die iobroker list node. Allerdings hat die Node einen BUG - wenn Du die Werte nicht ausliest, dann kommt anscheinend das Erstellungsdatum als ts und nicht der aktuelle Timestamp.
Ggf. kann man ja ein Issue aufmachen - allerdings die Umgehung ist wohl immer die values auszulesen.
Das ist also wichtig - wenn man aktuelle Timestamps haben will, auch wenn man an den Werten gar nicht interessiert ist.
So kannst Du wie gesagt komplette Bäume aufeinmal durchsuchen und Dir die verschiedene Arrays ausgeben lassen, je nachdem wann ein Wert angefähr zuletzt aktualisiert wurde (also wie aktuell ein Wert ist, ob im Sekunden, Minuten etc. Bereich.
An dem folgenden Screenshot kannst Du dann anhand der Anzahl Elemente in den Array auf einmal sehen, welche Objekte in welchem ungefähren Zeitraum aktualisiert wurden.
Du siehst also von insgesamt 110 Objekten im mqtt Zigbee Bereich wurden:
2 innerhalb von Sekunden
21 innerhalb von Minuten
3 innerhalb von Stunden
43 innerhalb von Tagen
11 innerhalb von Monaten
und
30 innerhalb von Jahren das letzte Mal aktualisiert.Über reguläre Ausdrücke kann man den ganzen Baum auch filtern. Will man also IDs haben, die nur die Küche betreffen, aber die Ordner die Küche alleine als Ordner haben, dann sieht die iobroker.list Node so aus:
Aus den 110 Objekten wurden also 7 Objekte selektiert. Davon wurden 3 innerhalb von Minuten, 4 innerhalb von Tagen das letzte Mal aktualisiert.
Auch wieder mal ein Beispiel, wie man im Vergleich zu den Puzzlefreunden solche Dinge relativ einfach ermitteln kann.
-
@mickym Danke nochmal das hat mir viel geholfen...bezueglich zigbee2mqtt ich habe schon versucht umzusteigen aber wie ich dort Werte bekomme und setze war mir nicht klar...das bekommen sehe ich schon mal ..
Wie ich die states setze muss ich mir ansehen.zigbee2mqtt hat bei mir auch keine Sensoren angelernt..und die Datenbank und ids, keys die ich eingetragen habe haben die Geraete erkannt aber keine Verbindung zum Coordinator hergestellt.
Jedenfalls vielen Dank fuer deine Hilfe.
-
@fred-freund Ich benutze das Zigbee2mqtt halt ohne Adapter - sondern nur mit reinem mqtt. Das zigbee2mqtt kann man von Haus aus programmieren, dass es dei Objekte auseinenander nimmt, aber ich bleibe bei den Objekten. Man kann auch Objekte und diskrete Datenpunkte verwenden.
-
@mickym Ja das hatte ich auch, einen eigenen Container fuer Zigbee2mqtt auf Debian 12.
Irgendwie will ich auf einen gemeinsamen Nenner. welches fuer mich MQTT ist zurueck.
Zwave2 Mqtt hat funktioniert ...aber meine Node Red Flows umzubauen auf MQTT war mir jetzt zuviel habe 1 Woche umgebaut vom Raspi auf Proxmox.Andererseits die Objekte das funktioniert so gut...
-
@fred-freund Ja ich zieh auch auf Proxmox um - und überarbeite aber alle Flows - ich hab ja Zeit.
- Auch wenn alles noch auf den alten Flows läuft und das ganz gut - so ist vieles was ich vor 4 Jahren gemacht habe - halt überaltert und versuche das modularer aufzubauen.
-
@mickym ich habe das Problem das ich vor einiger Zeit gemacht habe nicht mehr Weiss wie das ging...vieles hab ich wieder vergessen .
-
Ich möchte gerne einen DP auf false setzen wenn sich ein Timestamp nicht mehr ändert für x Sekunden, ansonsten soll dieser true sein. Wie mach ich das am Besten? Der DP 170 ist vom Volkszähler
-
Änder die trigger Node wie folgt:
Am Anfang true setzten ,den Haken für Verzögerung bei eingehender Nachricht, dann false. So wird ein Alarm gesetzt wenn der Datenpunkt nicht aktualisiert wird. Wenn Du wirklich auf Änderung triggern willst, musst das halt bei der iobroker-In Node festlegen. Ich würde aber lieber die Aktualisierung und nicht Änderung nutzen.
-
@mickym Vielen Dank!!! Es funktioniert. Wie mach ich es wenn ich auf Aktualisierung prüfen will?
-
@peter666666 sagte in obeject timestamp zugriff:
@mickym Vielen Dank!!! Es funktioniert. Wie mach ich es wenn ich auf Aktualisierung prüfen will?
Na so ist ja mit Aktualisierung. Änderung würde ich Dir nicht empfehlen. Das legst du in der iobroker-In Node fest, dass dann halt nur Änderungen Nachrichten erzeugen.
Solange die iobroker-IN Node aber alle Events sendet
prüfst Du auf Aktualisierung.
-
Und wieder mal ein Beispiel - wie einfach NodeRed es einem macht. So kannst Du übrigens alle Zustände in einem Objekt sammeln, wenn Du willst und diese dann in Summe überprüfen. Habe ich aber schon x-Mal gezeigt. Aber wenn Bedarf ist, kann ich das gerne immer wieder zeigen.