NEWS
Visualisierung mit Node Red erstellen
-
Ok ich wollte Du erklären, wie man das heutige Objekt machst, aber Du hast ja quasi schon das Datum so genommen, wie Du es aus der Node herausbekommen hast. - Alle Achtung. Das heißt Du hast quasi schon ein Datumsobjekt erzeugt.
Wie bist Du denn auf diesen Code gekommen?
-
@mickym Nein, der war so schön als Beispiel auf der Moments eine beschrieben. Und da habe ich den mal eingefügt und auf das Datum von gestern abgeändert.
-
@damrak2022 Ok das heißt Du kannst es nicht erklären.
Aber wir werden später nochmal darauf zurückkommen.Nun gib mal das aktuelle Datumsobjekt aus, wie ich das in meinem Flow da unten mache. Ich hab Dir ja die Stelle in der Bibliothek nicht übersetzt unten gepostet.
-
@mickym Es scheint was mit vor now zu tun zu haben, aber wenn ich das einfüge ist das total falsch. Den Text habe ich mir übersetzt, aber ich tue mich so unendlich schwer daran das zu begreifen.
-
@damrak2022 Nein - erstens schreibst Du kein JAVASchript.
Wenn Du Dir unten die Stelle anschaust, dann heißt es wenn Du die Webseite auf Deutsch übersetzt:
Ich habe Dir die Stelle markiert - und vergiss alles mit var usw.
Unter JSONATA brauchst Du nur $moment. Um also das aktuelle Datum wie bei mir unten rauskommt, musst Du nur ein Moment Objekt ohne Input erzeugen.
Also einfach einfügen, aber keinen Code aus der Bibliothek kopieren, sondern wie Du das bei dem Datum gemacht hast nur entsprechend anpassen.
-
@mickym Kapiere ich nicht. Einfach nur Moment reinschreiben funktioniert nicht. Auch nicht mit () ; Und var now soll ich ja vergessen
-
-
-
@damrak2022 Ich hatte immer das Zeichen vor moment weggelassen
-
@damrak2022 Tja nun funktionierst.
Also was gelernt:
Wenn Du irgendwo mal Dein aktuelles Datum brauchst, einfach ein leeres $moment Objekt erzeugen. OK
@damrak2022 Ich hatte immer das Zeichen vor moment weggelassen
Ja weil Du es nicht mit dem Einfügebutton gemacht hast.
Da wäre Dir das nicht passiert.
-
@mickym Doch habe ich, aber dann wieder was gelöscht und dabei natürlich auch das voranstehende Zeichen.
-
@mickym Okay, für das aktuelle Datum ist das einfach . Das stimmt
-
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Doch habe ich, aber dann wieder was gelöscht und dabei natürlich auch das voranstehende Zeichen.
Na gut Haken dran.
MERKE:
- Alle Funktionen im JSONATA beginnen mit einem $-Zeichen
- Wenn Du ein aktuelles Datumsobjekt brauchst - dann brauchst Du nur ein $moment Objekt erzeugen ohne dass Du es initialisieren musst.
-
So was hast Du gemacht, als Du das $moments Objekt für ein bestimmtes Datum erzeugt hast?
-
@mickym Ich verstehe nicht was Du genau meinst.
Vorhin hatte ich ja nur einen fertigen Code benutzt.moment("12-25-1995", "MM-DD-YYYY");
-
@damrak2022 Gut aber was stand dabei.
Auch hier fehlt wieder das $ Zeichen vorne und da es kein JS Code ist und nur eine Zeile braucht man auch keinen Strichpunkt.
Der richtige Code heißt also
$moment("12-25-1995", "MM-DD-YYYY")
Das würdest ein Datumsobjekt erzeugen am 25.12.1995 um 0:00 Uhr.
In Deinem Post hast Du es auf diesen Code, Dein gewünschtes Datum erzeugt:
$moment("10-27-2022", "MM-DD-YYYY")
Was ja auch geklappt hat.
Nun kommt aber aus Deiner iobroker IN Node das Datum in dieser Form raus:
Wie müsste also der Code aussehen, damit ein String wie 2022-10-17 ebenfalls richtig interpretiert würde?
-
@mickym Ich lese das hier
Der Parser ignoriert standardmäßig nicht-alphanumerische Zeichen, so dass beide der folgenden Elemente dasselbe zurückgeben.
Allerdings müsse ich nicht wie ich das so umwandle das ich als Ausgabe 27.10.2022 erhalte. Gestern habe wird das in der Change Node in 3 Datenpunkte aufgeteilt und dann in der zweiten Zeile bei der Change Node hinzugefügt. -
@damrak2022 sagte in Visualisierung mit Node Red erstellen:
@mickym Ich lese das hier
Der Parser ignoriert standardmäßig nicht-alphanumerische Zeichen, so dass beide der folgenden Elemente dasselbe zurückgeben.Du darfst solche Sätze doch nicht aus dem Zusammenhang reißen. Vollständig heißt doch der Beitrag:
Im 1. Parameter wird das Datum mitgegeben, mit dem Du das $moment Objekt erzeugen willst. Hinter dem Komma steht wie das Datum interpretiert werden soll.
Also sagst Du erst mal
$moment("12-25-1995", "MM-DD-YYYY")
dass die ersten beiden Ziffern den Monat bedeuten, die zweiten beiden Ziffern den Tag und die letzten 4 Ziffern das Jahr und zwischen diesen Zahlen ein Bindestrich steht.
Dieser Satz aber sagt:
Der Parser ignoriert standardmäßig nicht-alphanumerische Zeichen, so dass beide der folgenden Elemente dasselbe zurückgeben.Das heißt auch wenn keine Bindestriche sondern andere nicht-alphanummerische Zeichen (also 0-9 bzw. A-Z), als Trenner verwendet werden, wird dies auch richtig interpretiert.
Sprich auch wenn Schrägstriche, anstelle von Bindestrichen beim Datumsstring verwendet werden, wird das trotzdem richtig interpretiert.
War das soweit verständlich? - Sonst bitte fragen.
========================================================================
Allerdings müsse ich nicht wie ich das so umwandle das ich als Ausgabe 27.10.2022 erhalte. Gestern habe wird das in der Change Node in 3 Datenpunkte aufgeteilt und dann in der zweiten Zeile bei der Change Node hinzugefügt.
Vergiss was wir gestern gemacht haben - wir kümmern uns um die moments Bibliothek die sich mit Datumsobjekten beschäftig. Gestern haben wir eine Zeichenkette mit einem bestimmten Zeichen in ein Array umgewandelt um die einzelnen Objekte einzeln adressieren zu können.
HEUTE nehmen wir einen komplett neuen Ansatz. Das von gestern kannst Du Dir merken - hat aber erst mal nichts mit der moments Bibliothek zu tun, die wir heute mal als Lösung verwenden.
===========================================================
So wie müsste als der Code lauten, damit das Datum, sowie es aus Deiner iobroker-IN Node kommt, richtig interpretiert wird?
-
@mickym sagte in Visualisierung mit Node Red erstellen:
War das soweit verständlich? - Sonst bitte fragen.
Das war verständlich, aber ich habe noch nicht mal ansatzweise eine Ahnung wie ich das in DD.MM.YYYY ändere
-
@damrak2022 Wie wäre es mit Geduld. Ich weiß schon wie das geht. Du brauchst Dir darüber erst mal keinen Kopf zu machen.
Du hast erst mal als Aufgabe - dass mit Hilfe des Datumstrings, der aus der iobroker-IN Node ein korrektes $moments Objekt erzeugst.
Also bitte die 2 Fragen beantworten (und ausser Fragen sonst nichts.
)
- Wie sieht der String aus, der aus Deiner iobroker-IN Node rauskommt?
- Wie konstruierst Du daraus das richtige $moment Objekt mit dem richtigen Datum?