NEWS
Visualisierung mit Node Red erstellen
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Okay, sorry
So aber Du scheinst das nun verstanden haben - wie Du aus einem beliebigen Datumsformat das korrekte $moments Objekt konstruiert.
Also die einzige richtige Lösung ist:
$moment("2022-10-26", "YYYY-MM-DD")
2022-10-26 ist das Format, das aus der iobroker IN Node rauskommt.
$moment("2022-10-26", "MM-DD-YYYY") schreibst kommt invalidate Date - also ungültiges Datum, da vorne doch eine 4stellige Zahl steht die nicht als Monat interpretiert werden kann. Oder welches ist der 20. Monat im Jahr. Ich denke der wurde noch nicht erfunden.
Soweit klar?
-
@mickym Ja, das ist vollkommen klar. War auch nur ein Versuch, ob er das dann ändert.
-
@damrak2022 Gut nachdem wir nun das richtige $moment Objekt erzeugt haben - kümmern wir uns jetzt um die Ausgabeformat des moments Objekts.
Das steht hier: https://momentjs.com/docs/#/displaying/
Das heißt an das moments Objekt schließen wir eine format Ausgabe an. Wie könnte die Aussehen - im Prinzip hast Du es in diesem Post schon beschrieben.
Wenn Du es geschaft hast, wieder den JSONATA Code Deiner Change Node und das Debug Fenster als Beweis posten.
-
@mickym So, hier bitte:
Da kann ich das Leerzeichen zwischen DD. und MM. YYYY wahrscheinlich weglassen
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym So, hier bitte:
Da kann ich das Leerzeichen zwischen DD. und MM. YYYY wahrscheinlich weglassen
Na das schaut doch schon mal sehr gut aus - ja und ich würde das Leerzeichen lieber weglassen, damit das Datum auch schön aussieht - aber letztlich siehst Du, dass Du da reinschreiben kannst was Du willst und das Datum wird genau so ausgeben. Wenn Du also lieber ein Datum mit Leerzeichen schreiben willst - dann kannst Du das wie Du siehst tun.
-
@mickym Danke Dir , was eine schwere Geburt - zumindest für mich - Gefühle 5 Stunden um ein Datum korrekt darzustellen.
-
@damrak2022 Na noch ist es ja nicht fertig, weil Du hast ja das Datum fix eingetragen hast - das musst Du nun noch ändern in die Nachrichteneigenschaft, in der das Datum steckt.
Also in welcher Eigenschaft des Nachrichtenobjekts ist das Datum?
Wie schaut also der finale Code der Change Node aus? -
@mickym Es ist ein string den ich erhalte, aber was ich bei der Change Node ändern muss, weiß ich jetzt auf Anhieb nicht.
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Es ist ein string den ich erhalte, aber was ich bei der Change Node ändern muss, weiß ich jetzt auf Anhieb nicht.
So nachdem der Datumsstring aus payload der iobroker-In Node kommt:
muss man halt das fixe Datum durch die payload ersetzen.
Die finale Lösung sieht also so aus:
$moment(payload, "YYYY-MM-DD").format("DD.MM.YYYY")
Das wars dann von meiner Seite.
-
@mickym Ach okay, ich muss den payload nur unten mit eintragen. Danke - erhole Dich jetzt mal von dem Stress mit mir.
-
@mickym sagte in Visualisierung mit Node Red erstellen:
Die finale Lösung sieht also so aus:
Spricht was gegen die Nutzng der moment-Node?
Damit bekommt man auch ohne JSONata die Aufgabe gelöst. Ich stand vor dem Problem eine Zeitstempel in die gewünschte Form zu bekommen und dazu noch die Zeit um 2 Stunden zu korrigieren.
Der Ausgabewert aus dem Stromzähler über M-Bus sieht wie folgt aus:
Gewünscht war diese Form der Ausgabe:
Und diese Eintragungen in der moment Node waren notwendig:
Deinen Weg finde ich allerdings auch prima, allerdings wie man da jetzt noch 2h aufaddiert, da hatte ich jetzt nicht viel Lust drauf, dies herauszufinden.
-
@garf Gegen die Nutzung der moment Node spricht, das alles über JSONATA in der Standard-Change Node enthalten ist und somit keinen Mehrwert bietet und nicht mal einen Bruchteil der moments Bibliothek. Da ich generell keine Nodes installiere, die keinen Mehrwert bieten, habe ich die wieder runter geschmissen nachdem ich mit der Moment Bibliothek im Detail beschäftigt habe.
-
@mickym
Alles klar und nachvollziehbar. Mal ne blöde Frage. Wie kann ich einzelne Werte in einem payload objekt anpassen und nachher wieder zu einem Objekt zusammenfassen? Mir fällt dazu nur das function node ein.Kleines Beispiel: timezone Wert 1 durch Klartext ersetzen und wieder als Objekt weitergeben.
Irgendwie komme ich auf keine Lösung.
-
@garf Du brauchst doch in einer Change Node nur den Wert payload.1130968.timezone ändern
-
@mickym
War nur ein einfaches Besispiel. Das Objekt ist viel größer. Klartext ich lese die Daten aus einer Cloud aus und habe die unterschiedlichsten msg. Teile davon schreibe ich in eine Tabelle, aber z.B. den Zeitstempel möchte ich optisch ändern. Die Tabelle muss allerdings zeitgleich alle Werte erhalten.
Im Feld für den Status möchte ich noch aus der 1 den Status Betrieb machen.
Edit:
Mit Hile der change Node und flow Variablen habe ich schon einmal die gewünschten Änderungen vorgenommen. Jetzt frage ich mich nur noch wie ich die Variablen wieder zu einem Objekt zusammenfasse. Grübel. JSONata?
Ach ja, Datum mit dem von dir Gelernten geändert.Edit2:
Ich habe es gelöst. Vielleicht geht es noch einfacher. Aber das Ergebnis ist schon einmal so wie gewünscht. -
@mickym Ich finde auf der Seite gerade den Teil nicht wo das mit der Umrechnung der Zeit beschrieben ist, da ich Minuten in Stunden und Minuten umwandeln will.
Habe nur das aber hier ist es nicht ausführlich beschrieben.
https://docs.jsonata.org/date-time-functions -
-
@mickym Danke habe es hinbekommen.
-
@mickym Ich habe meine ganze Darstellung der Gesundheitsdaten geändert.
-
@damrak2022 Na schaut doch gut aus
- bis auf dass Du zu wenig schläfst.