NEWS
(gelöst) JSON aus Payload erstellen
-
Tag,
heutiges Projekt war dass ich meine Emails abfange und den jeweiligen Absender in einen iobroker Datenpunkt schreibe.
Dieser Datenpunkt wird per influxdb gelogged.
Ergebnis: ERFOLGREICH !!!Jetzt wollte ich aber (man will ja immer gleich mehr) nicht nur den Absender sondern gleich den kompletten Payload, also den Absender, das Datum, den Betreff und den Inhalt ebenfalls in einen Datenpunkt schreiben. Und das natürlich in JSON damit ich das dann vernünftig visualisieren kann.
Da hängts grad noch.Bin gespannt ob man
das lösen undmir helfen kann.
-
@djmarc75 Nimm einfach eine JSON Node und hänge das vor die iobroker Out Node - diese Node konvertiert ein JS Objekt (also wenn payload ein Objekt ist) automatisch in einen JSON String und umgekehrt. Musst nix einstellen. Ansonsten kannst auch meinen Flow verwenden, der drösselt Dir jedes Objekt in einzelne Datenpunkte auf.
-
@mickym sagte in JSON aus Payload erstellen:
(also wenn payload ein Objekt ist)
hmpf, das weiss ich nicht wie das gemeint ist. Es kommen Strings (denk ich) vom email node.
@mickym sagte in JSON aus Payload erstellen:
Musst nix einstellen
ok
Hier der Debug
-
@djmarc75 Dann musst mal das was aus deiner Mail node rauskommt hier posten. Kannst ja alles sensible unkenntlich machen.
hmpf, das weiss ich nicht wie das gemeint ist. Es kommen Strings (denk ich) vom email node.
Am Besten Du gibst mal in der Debug Node nicht nur die payload, sondern das ganze Objekt aus.
-
-
@djmarc75 sagte in JSON aus Payload erstellen:
@mickym sagte in JSON aus Payload erstellen:
das ganze Objekt aus
öhm... ???
Ich habe gerade mal die E-Mail In Node verwendet und sehe, dass in der Payload nur der Inhalt der Mail steht. Wie hast Du den den Absender rausgefischt mit der Change NOde?
-
@mickym sagte in JSON aus Payload erstellen:
Wie hast Du den den Absender rausgefischt mit der Change NOde?
Ja
Da geht noch mehr zum rausfischen
-
Steht denn bei Dir in der urspünglichen payload auch nur der Nachrichtentext?
-
@mickym sagte in JSON aus Payload erstellen:
und das bekommst Du wenn
Du das msg Object rausfindest.
Ich weiss ja nicht wie das geht !
@mickym sagte in JSON aus Payload erstellen:
Steht denn bei Dir in der urspünglichen payload auch nur der Nachrichtentext?
Jawoll
-
@djmarc75 OK -
Also grundsätzlich, wenn Du es in einem Datenpunkt haben willst, musst Du aus der payload ein Objekt machen.
Nun erst mal zur ersten Frage, das ganze msg Objekt kannst Du Dir anzeigen lassen in dem Du das in der Debug Node einstellst.
Zweitens könntest Du Dir nur selbst ein Objekt wie folgt bauen.
{ "nachricht": "..." "von": "...." }
Dazu verschiebst Du die ursprünglichen payload oder was auch immer. Wenn Du dir dann nicht mehr das Objekt sondern nur noch die payload ausgeben lässt sieht das so aus:
Damit bekommst du dann als payload ein Objekt, dass Du mit der JSON Node wieder in einen JSON String wandeln kannst.
Das gleiche kannst Du dann machen mit dem msg.topic nach msg.payload.topic verschieben. -
@mickym sagte in JSON aus Payload erstellen:
Nun erst mal zur ersten Frage, das ganze msg Objekt kannst Du Dir anzeigen lassen in dem Du das in der Debug Node einstellst.
Erfolgreich erledigt !
Und vieles Andere sicher nachher auch noch, aber DU änderst ja die Bilder die ganze Zeit
Da kann so schnell bei mir nix funktionieren.
-
@djmarc75 Jetzt ist bei mir erst mal bis 23 Uhr Pause^^
-
@mickym sagte in JSON aus Payload erstellen:
Jetzt ist bei mir erst mal bis 23 Uhr Pause^^
und ich probiere Deine Tips aus. Du hast wieder super geholfen und ich werde morgen mal wieder den fertigen Flow präsentieren
-
-
@djmarc75 Du musst nur das date von der moments library benutzen, da diese immer im lokalen Zeitformat ausgibt, wenn man diese formatiert sonst nicht:
Das Format kannst Du beliebig nutzen. Diese Regel fügst Du halt noch vor dem Verschieben von msg.date auf msg.payload.date ein.
-
@mickym Jetzt ist es so wie ich es mir vorgestellt habe. Spitze !
Das mit der Reihenfolge im ChangeNode (im Bild oben) ist bissle tricky besonders in Verbindung mit dem eMailNode. Da muss man wirklich aufpassen aber ich habs hinbekommen dass die JSON korrekt befüllt wird.
-
@djmarc75 weiß zwar nicht was du da für Mail nodes benutzt hast. Bei der Standart E_ Mail in Node, triggers diese selbstständig. Das mit den Delay nodes und das mehrfache Abrufen, finde ich jetzt nicht so prickelnd, aber wenn du zufrieden bist, dann ist ja alles gut. Das einmalige Abrufen und herausfiltern durch die Change Nodes wäre in meinen Augen wesentlich effizienter.
-
Da ich 4 Konten abrufe und in eine JSON schreibe dachte ich dass diese delays schon Sinn machen - nicht dass da etwas durcheinander kommt (in der JSON) und deshalb habe ich auch die email Nodes auf "wenn getriggert" umgestellt.
Ja, ist sicher noch ausbaufähig aber für mein zweites Projekt in Node Red gar nicht übel - meine Meinung -
@djmarc75 ok. Und wenn es 4 Konten sind und wenn du zufrieden bist, dann passt es doch. - inzwischen scheinst du ja langsam Spaß an NR zu finden.
-
@mickym sagte in (gelöst) JSON aus Payload erstellen:
inzwischen scheinst du ja langsam Spaß an NR zu finden
Woran hast Du das bemerkt ?
Und dank Deiner Profitipps klappt auch immer mehr !