NEWS
[gelöst]nodered mail empfangen
-
könntest du mir einen tipp geben - nodered nutze ich so gut wie nie - lese eine mailbox aus
ich "switche" bestimmte topics (subjects) und diese mails sollen als json-dp gespeichert werden - im debug werden alle mails, die ich brauche angezeigt - im dp steht aber immer nur ein mail-subject - wie sammelt man das ?
wie macht man das, dass alle gefundenen mails als json in einen dp geschrieben werden
-
@liv-in-sky Eine JSON Node dahinter bzw. vor die iobroker-OUT Node klemmen. Musst nicht mal was konfigurieren - die erkennt automatisch am Input was sie machen muss.
-
das ändert nix - es wird kein json erzeugt und es immer noch nur die letze mail
irgendwie fehlt da was, was die einzelnen mails sammelt und dann erst in den dp schreibt
-
@liv-in-sky Was machst du in der Change node? Du hast doch die Debug Node direkt mit der switch Node verbunden und gesagt da ist alles drin. Wenn Du mit dem zufrieden bist - dann schmeiss doch die Change Node weg. Die macht irgendwas kaputt. Ich seh halt nicht was.
Entweder ist in der Debug Node alles drin oder nur jeweils eine einzelne Nachricht. Sehe ja das Debug Fenster nicht, aber gehe nun davin aus. Wenn Du die in einem Array gesammelt haben willst dann musst halt noch eine JOIN Node vorher sammeln. Dann am besten ein Zeitlimit erstellen - da Du ja nicht weisst wieviele Nachrichten.
-
@mickym die change node brauche ich, da sonst nur der email-text kommt
ohne kommt halt der text der letzten mail - ich brauche aber das subject der mails - json wird auch nicht erzeugt
der output im debug sieht so aus - man sieht alle mails - letztlich wird sehr sehr schnell jedes mails-subject in den dp geschrieben - und so bleibt das letzte übrig:
-
@mickym sagte in nodered mail empfangen:
JOIN Node vorher
jetzt sieht es besser aus - habe ein array - leider noch nicht perfekt, da im subject immer ein komma ist - das heißt ich kann das nicht verarbeiten in javascript - aber das komma kann ich ersetzen
die json node macht übrigens garnix -
-
@liv-in-sky Nein - ich verstehe zwar was Du willst - da die iobroker-Out Node nur eine payload verarbeitet. Aber mach halt mal eine E-Mail - die vom Inhalt unkritisch ist auf - und zwar komplett. - Wenn Du das topic drin haben willst - und die originale payload den mail text?? Ich habs gerade nicht im Kopf.
Dann machst Du erst mal folgendes und änderst erst mal die Change Node wie folgt
Dann die Nachrichten via JOIN sammeln und konvertieren und schreiben.
Wenn du das topic zuerst in den Eigenschaften haben willst - musst die Change Node leicht abändern:
Kommas spielen keine Rolle:
EDIT:
Hier zum Import:
... musst also nur noch Deine Switch Node vorne und die iobroker-OUT Node hinten dran klemmen. Und natürlich wird nur die payload von der JSON Node bearbeitet.
Die iobroker-OUT Node schreibt NUR die payload weg - alles andere wird ignoriert - Ich hoffe Du hast den Datenpunkt wohin es geschrieben werden soll - in der iobroker-OUT Node definiert. In JS auf der anderen Seite einfach wieder mit JSON.parse - das Objekt rekonstruieren.
-
@mickym tausend dank - wußte doch, dass du da der richtige bist
jetzt passt der output
-
@liv-in-sky Ja und wenns mal mehr sind - halt in der JOIN Node die Sekunden erhöhen. Man kann das zwar auch mit einem trigger machen - aber warum soll man alles unnötig komplizieren, da Du ja NodeRed sonst nicht weiter einsetzt.
-
habe 10 sekunden eingegeben - dass reicht locker und das ganze ist nicht zeit-abhängig
leider funktionieren die mail-listener nodes nicht mehr (für javascript) seit dem neuen node update und ich finde es einfacher, mails mit nodered zu lesen - nachdem ich jetzt weiß, wie es funktioniert
nochmals danke
-
ich nochmal - ich bräuchte das ganze in anderer reihenfolge - im moment ist das aktuelle mail an letzter stelle - ich würde das ganze gerne in einem inventwo json widget anzeigen und die neuste mai oben haben . macht man da eine function mit z.b array.reverse() oder hast du eine andere idee ?
-
ich habe es so gemacht - oder gibt es dafür eine einstellung oder node ?
-
@liv-in-sky Nein - das passt schon - ansonsten würde man es mit einer Change-Node und JSONATA machen - aber kommt aufs Gleiche raus:
Ach noch eine Ergänzung - da ja lieber JS machst, kannst Du natürlich auch alles in JS in function Nodes codieren - dann brauchst Du gar keine Nodes mehr bzw. nur noch Ein- und Ausgabe. - Geht in meinen Augen zwar der Sinn von der grafischen Darstellung verloren, aber für jemand dem das Codieren mehr liegt hättest Du den ganzen Flow auch in eine Function Node packen können.
-
Ich hänge mich hier mal mit an, @liv-in-sky hat mir das gezeigt. Ich möchte auch gern auf Mails reagieren und zwar die von meinen Kids, wenn sie über Teams Nachrichten bekommen. Ich möchte nicht immer die Accounts switchen um zu schauen obs da was neues gibt. Daher würde ich da gern was auf der VIS machen und Benachrichtigt werden, wenn einer von Ihnen was neues im Account hat.
Müsste ich hiernach filtern ?
So steht das immer im Topic / Betreff drin, also Teams und noch ein Standard Text dazu.
EDIT:
Sieht schon mal nicht schlecht aus.
-
mach ich auch so - imsubject steht immer ein bestimmtes wort - danach filtere ich und bekome aus der mailbox nur diese subjects mit diesem wort
ein wenig komplizierter wird es , wenn in der mailbox mehrere solcher mails sind - dann muss man das ganze in einem javascript/blockly weiterverarbeiten, damit man nur eine nachricht empfängt, wenn es eine neue mail ist! man muss also die schon gelesenen mails in einer kleinen datenbank (json) mitverwalten um einen vergleich zu haben - wenn es immer nur eine mail in der mailbox gibt, wird das einfacher
oder evtl kann man das auch über einen datumsvergleich regeln
-
gelöscht
-
das ist mir klar - aber ich markiere manchmal alte mails als ungelesen um diese im postfach leicht zu finden - daher nicht so schnell urteilen ich habe mir schon was dabei gedacht
-
gelöscht
-
dann übernimm du hier - dann brauchen wir auch nicht rum zu diskutierne
-
gelöscht