NEWS
Zigbee2mqtt installation
-
@mickym said in Zigbee2mqtt installation:
@schmetterfliege Nein in JSONATA ist das msg - Objekt implizit gemeint. Ist anders als bei JS.
War das nicht so, dass Du alle timestamps irgendwo ausgelesen hast und dann in der Kontextvariable abgespeichert hast. das ist doch unabhängig von aktuellen Ereignissen.Importier Dir halt den Flow, den Du noch vor 2 Monaten hattest. Vielleicht wäre es gut - generell auf dem nochmal aufzusetzen.
ah okay
Würde das kaputt gehen wenn ich in JSONATA trotzdem msg. dran hänge? Würde es DAUs wie mir einfacher machen es einfach überall zu machen^^.Dass ich alles ein mal auslese war gaaaanz früher so, als ich die Tabelle noch initialisiert habe anfangs.
Seit ich den Zigbee Adapter nicht mehr benutze, mache ich das allerdings nicht mehr - daher fehlen die Timestamps solange bis die Geräte ein Update senden.Frag mich nicht was ich gemacht habe, aber grade sind wieder alle timestamps da (hatte versuch das Initialisieren wieder einzubauen, was aber eigentlich nicht geklappt hat und.. keine Ahnung.. egal).
Ich bin zwar in Mathe noch deutlich schlechter als in dem allem was wir hier machen, aber ich würde behaupten die Timestamps sind nicht nur ein paar Sekunden auseinander.
Und dennoch bekomme alle Objekte am Ende "vor ein paar Sekunden" reingeklatscht.
Das war definitiv auch schon vor 2 Monaten so kaputt.
Das letzte mal dass das richtig funktioniert hat mit den Timestamps war vor dem gesamtem Re-Work der Tabelle, also in dem Zustand Anfang des Jahres vor meinen 2 Umzügen^^
EDIT:
Das hab ich vor 2 Monaten bloß nicht bemerkt, weil ich da alle Sensoren neu angelernt habe wegen dem Umstieg zu Zigbee2MQTT und daher davon ausgegangen bin dass die wirklich alle grade erst updates gesendet hatten.
Bzw. ich mich schon drüber gefreut habe dass das jetzt überhaupt wieder in der Tabelle steht und dann nicht weiter dran geblieben bin. -
@schmetterfliege sagte in Zigbee2mqtt installation:
ah okay
Würde das kaputt gehen wenn ich in JSONATA trotzdem msg. dran hänge? Würde es DAUs wie mir einfacher machen es einfach überall zu machen^^.Nein - dann bekommst Du Warnmeldungen - mach es einfach nicht.
Na diese ChangeNode - dass nur bei Bedarf die Zeitspanne mithilfe der Change Node gemacht haben - ist definitiv erst in diesem Jahr gewesen. Das dumme ist, dass der Thread inzwischen so lange ist. da ist das ganze zigbee2mqtt mit drin.
-
@mickym Und wenn das halt anders ist und du die zigbee2mqtt später hast, dann hast Du doch mit zigbee2mqtt alles in dem JSON drin. da ist doch der timestamp mit enthalten.
Vielleicht findest ja noch die Stelle, wo wir das mit den Zeitstempeln diskutiert haben. Ansonsten ist es vielleicht wirklich sinnvoller kleinere Threads zu machen.
-
@mickym said in Zigbee2mqtt installation:
@mickym Und wenn das halt anders ist und du die zigbee2mqtt später hast, dann hast Du doch mit zigbee2mqtt alles in dem JSON drin. da ist doch der timestamp mit enthalten.
Das ist schon richtig, nur lese ich ja nirgends das gesamte zigbee2mqtt Objekt aus, sondern die einzelnen Sensoren.
Und da bekomme ich dann auch nur die Werte von denen.
Das initialisieren hatte ich damals so gemacht:
Nur eben für zigbee.*.
Damit hatte ich vorhin versucht das Initialiseren in der Tabelle wieder einzubauen, was aber nicht funktioniert hatte.
Zumindest bekomme ich in der Debug Node keinerlei Output wenn ich das triggere.
Deshalb: Keine Ahnung wieso da dann plötzlich wieder alle Sensoren im Flow gespeichert sind, obwohl die meisten bisher noch kein Update geliefert haben seit ich vor mittlerweile fast einer Stunde NR neu gestartet habe.
Aber, das ist auch aktuell gar nicht mein ProblemAktuell folgende 2 Themen:
- LastUpdate wird nicht richtig berechnet.
- Meine Tabelle ist weiß Gott warum leer und ich komme da ums verrecken nicht dahinter was das Problem ist.
Es wird alles richtig übergeben, und die Änderung die das kaputt gemacht hat wieder rückgängig gemacht wurden.
Aber bevor ich das in Angriff nehme, würde ich halt gerne die Change Node die das LastUpdate berechnet dazu bringen richtig zu funktionieren - hat mit der Tabelle ja jetzt eh erst mal nichts zu tun
-
@schmetterfliege Na ja ich hatte Dir aber auch gesagt, dass ich das auslesen nicht brauche, weil ich die Initialisierung am Anfang verzichte. Mir langt es wenn ich sehe, wie sich die werte füllen. Das wolltest Du aber nicht.
Fehlt da nicht ein Punkt hinter Multisensor?
-
@mickym said in Zigbee2mqtt installation:
@schmetterfliege Na ja ich hatte Dir aber auch gesagt, dass ich das auslesen nicht brauche, weil ich die Initialisierung am Anfang verzichte. Mir langt es wenn ich sehe, wie sich die werte füllen. Das wolltest Du aber nicht.
Fehlt da nicht ein Punkt hinter Multisensor?
Wie gesagt, das initialisieren habe ich ja auch nicht mehr drin. Eben mit der Konsequenz dass die Werte erst mal alle weg sind wenn ich den Flowkontext mal lösche. Dass die Werte gefehlt haben, war ja aber auch gar nicht mein Problem, sondern die beiden erwähnten Themen
Selbst wenn ich den Punkt da hin mache, hatte ich keinerlei Output. Aber is ja auch egal, weil ich eh nicht mehr initialisiere
Und: dort fehlt der Punkt auch und Updates der Sensoren kommen trotzdem rein^^
-
Mal ganz blöd gefragt...
kannst du mal schauen ob bei dir die Tabelle damit funktioniert? Also Werte hat?Nodes:
Werte:
-
@schmetterfliege Nein - das geht nicht.
Aber:
- Deine ChangeNode ist so ja nicht richtig. Wie injizierst Du denn die Daten.
- Daten kommen über ein Array von Objekten rein. Bei Dir sehe ich aber nur Objekte.
-
@mickym said in Zigbee2mqtt installation:
@schmetterfliege Nein - das geht nicht.
Aber:
- Deine ChangeNode ist so ja nicht richtig. Wie injizierst Du denn die Daten.
Welche Daten genau?
- Daten kommen über ein Array von Objekten rein. Bei Dir sehe ich aber nur Objekte.
Okay, das war tatsächlich das Problem. Aber das Split und Join (wo dann ein Array draus gemacht wird) hatte ich deutlich vorher entfernt gehabt - die Tabelle hatte noch was angezeigt. Aber vermutlich nicht geupdated... Danke dir. Anzeigeproblem gelöst
-
@schmetterfliege Ich werde Dir noch eine Methode zeigen, wo man nur mit JSONATA das wandeln kann. Das ist die eleganteste Methode.
Geschafft:
Die eleganteste Methode, die Objekte in ein Array zu verwandeln geht so.
Man mappt einfach.
Also
https://docs.jsonata.org/path-operators
Über eine JOIN Node kann man es auch machen, dann würde ich aber auch eine Reduktion machen.
-
@mickym
Das ist in der Tat deutlich eleganter! Danke -
@schmetterfliege So geht es auch, wenn auch etwas umständlicher - aber eben nicht mehr mit Zeit usw.
-
Hab das den Kontext jetzt auch angepasst dass alles auf gleiche Art benannt ist usw.
Nur das LastUpdate muss ich jetzt halt noch hinbiegen.
Kontext war gelöscht, daher aktuell nur für 1 Sensor der Timestamp da - trotzdem wird bei allen Sensoren die aktuell "da" sind der Wert gleich gesetzt.
-
@mickym said in Zigbee2mqtt installation:
@schmetterfliege So geht es auch, wenn auch etwas umständlicher - aber eben nicht mehr mit Zeit usw.
Okay, da habe ich es lieber in der Change Node und spar mir den Split und komplizierten Join
-
@schmetterfliege Dann musst halt step für Step schauen - Du musst das ganze ja machen bevor du die table Node speist.
Also das Array auftrennen und in jedes Objekt die Differenz eintragen. Geh halt Schritt für Schritt vor. Die Tabelle interessiert doch erst mal nicht. Es interessiert nur das Array, das Du in die Tabelle speist.
Sprich wird der richtige Wert aus dem Kontext geholt und dann die Differenz richtig berechnet. Musst halt Step für Step machen.
-
@mickym said in Zigbee2mqtt installation:
@schmetterfliege Dann musst halt step für Step schauen - Du musst das ganze ja machen bevor du die table Node speist.
Also das Array auftrennen und in jedes Objekt die Differenz eintragen. Geh halt Schritt für Schritt vor. Die Tabelle interessiert doch erst mal nicht. Es interessiert nur das Array, das Du in die Tabelle speist.
Sprich wird der richtige Wert aus dem Kontext geholt und dann die Differenz richtig berechnet. Musst halt Step für Step machen.
Genau das ist mein Problem - ich weiß ja nicht was sich die ChangeNode aus dem Kontext holt^^
"topic" entspricht hier jeweils diesen Strings:
Da übergibt auch jedes Objekt der Change Node den richtigen Wert.
Ist das Problem dass die Timestamps jeweils direkt unter dem Namen gespeichert sind, und es kein "timestamp" unter jedem Objekt gibt? -
@schmetterfliege sagte in Zigbee2mqtt installation:
Ist das Problem dass die Timestamps jeweils direkt unter dem Namen gespeichert sind, und es kein "timestamp" unter jedem Objekt gibt?
Klar das ist es, mach einfach mal das .timestamp hinter der Klammer raus.
Genau das ist mein Problem - ich weiß ja nicht was sich die ChangeNode aus dem Kontext holt^^
Warum weisst Du das nicht. - Du sollst ja den Flow selbst verstehen.
Es gibt den Wert aus, den topic ausgibt. Wahrscheinlich musst Du noch ein x für das Eingabeformat für den Moment eingeben.
-
@mickym said in Zigbee2mqtt installation:
@schmetterfliege sagte in Zigbee2mqtt installation:
Ist das Problem dass die Timestamps jeweils direkt unter dem Namen gespeichert sind, und es kein "timestamp" unter jedem Objekt gibt?
Klar das ist es, mach einfach mal das .timestamp hinter der Klammer raus.
Warum weisst Du das nicht.
Es gibt den Wert aus, den topic ausgibt.
Das ist mir an sich schon klar, mich macht nur fertig dass überall wo es noch keinen Timestamp gibt trotzdem "vor ein paar Sekunden" drin steht
Das dürfte doch eigentlich gar nicht, ich meine so wie ich es hatte (also dass noch .timestamp drin stand) hätte das Teil ja mit nem String gerechnet. Da würde ich eine Fehlermeldung erwarten, und nicht dass er dann einfach sagt "joa, dann mach ich da halt jetzt draus" ^^Geht jetzt jedenfalls und er ersetzt langsam die Werte für Sensoren die Updates liefern.
-
@mickym Nochmal ich glaube der Moment wird nicht richtig gesetzt.Mach mal hinter der topic Klammer noch ein Komma und ein 'x' als Eingabeformat.
Falls Du das nicht verstehst - dann poste es einfach nochmal was jetzt drin steht in CodeTags - habe keine Lust Screenshots abzuschreiben.
-
@mickym said in Zigbee2mqtt installation:
@mickym Nochmal ich glaube der Moment wird nicht richtig gesetzt.Mach mal hinter der topic Klammer noch ein Komma und ein 'x' als Eingabeformat.
Falls Du das nicht verstehst - dann poste es einfach nochmal was jetzt drin steht in CodeTags - habe keine Lust Screenshots abzuschreiben.
Was meinst du denn mit "der Moment"?
EDIT: vergiss die Frage... glaube ich^^$moment($lookup($flowContext("timestamps"), topic)).locale("de").fromNow()