NEWS
Test Adapter ioBroker.imap latest/stable
-
Aktuelle Test Version 0.3.0 Veröffentlichungsdatum 26.02.2023 Github Link https://github.com/Lucky-ESA/ioBroker.imap Status Nun als Stable 0.1.2 verfügbar Hallo zusammen,
habe mal einen IMAP Adapter gschrieben. Es können beliebig viele IMAP Verbindungen anlegen und überwacht werden.
Updates oder neue Mails werden automatisch erkannt und die Infos in den Datenpunkten geschrieben.Hier nun die Beschreibung:
Einstellung Instanz- Aktiv: IMAP Verbindung aktivieren
- Host: Bsp:. imap.gmail.com
- Posteingang: Standard INBOX
- Port: Standard ist 993
- Benutzername: Dein Loginname
- Passwort: Dein Passwort
- max.: Maximale Anzahl an Mails die als Datenpunkte angelegt werden (max. 99)
- max. HTML: Maximale Anzahl an Mails die als HTML ausgegeben werden (max. 99)
- TLS: TLS Verschlüsselung. Sollte immer true haben
- Flaggen: Hier sind die Flags
- Symbol auswählen: Hier erst über "Symbole Erstellen" ein ICON hochladen. Wird als Folder ICON verwendet
- Token: Bsp.: Für Outlook. Ob das funktioniert kann ich nicht sagen
- tls-Option: Bsp.: {"rejectUnauthorized": false} oder leer lassen {}
- Auto-TLS: Hier lesen
Datenpunkte
- imap.0.xx.email: Hier werden die Mails angelegt wie in der Instanz eigestellt wurde. Habt ihr nur 7 Mails und
max. 10 eingetragen, bleiben die letzten 3 leer. Habt ihr 10 Mails und löscht 3, werden die letzten 3 Mails nicht geleert. - imap.0.xx.remote.html: Hier könnt ihr euren CSS-Style anpassen
- imap.0.xx.remote.criteria: Neue Suchkreterium. Bleibt auch bei einem Neustart aktiv (auch als Blockly möglich)
- imap.0.xx.remote.reload_emails: Änderungen in HTML werden erst bei einer Aktualisierung übernommen. Hiermit kannst du den Code sofort übernehmen.
- imap.0.xx.remote.search_start: show_mails und criteria anwenden
- imap.0.xx.remote.show_mails: Die Anzahl in der Instanz Konfig ändern (auch als Blockly möglich)
- imap.0.xx.html: HTML Code für VIS
- imap.0.xx.last_activity: Letzte Aktivität (Aktualisierung/Neue Post)
- imap.0.xx.last_activity_json: Bsp.: {"flags": ["\Seen"]} für als gelesen markiert
oder {"flags": []} für neue Post. - imap.0.xx.last_activity_timestamp: Letzte Aktivität als Timestamp
- imap.0.xx.online: Mit IMAP verbunden = true
- imap.0.xx.quality: Qualität der Datenpunkte (automatische Prüfung alle 24h)
- imap.0.xx.total: Anzahl aller Mails in deiner Inbox.
- imap.0.xx.remote.change_folder: Hier könnt ihr eure Folder auswählen. Es werden dann alle Daten mit dem Inhalt dieses Folder gefühlt (Mail01, json_table etc). Allerdings wird dann auch nur diese Auswahl überwacht.
- imap.0.xx.active_inbox: Zeigt euch welcher Folder aktiv ist und überwacht wird
- imap.0.xx.total_unread: Anzahl ungelesene Mails im aktiven Folder
- imap.0.xx.total: Anzahl aller Mails im aktiven Folder
Blocklys
Der kleine Blockly steuert die o. g. Datenpunkte um die Suche zu ändern.
Mit dem großen können eigene Anfragen erstellt werden und ihr erhaltet einen Array mit JSON Elemente. ACHTUNG! Es kommen echt viele Daten daher nicht immer mit "debug output" arbeiten. Was möglich ist könnt ihr hier nachlesen.
Habe diesen Adapter für mich und meine Berdürfnisse geschrieben. Nun könnt ihr gerne Wünsche aussern die ich hinzufügen soll.outlook.office365.com 2Fach-Authentifizierung
Bekannte Issues
- Habe noch keine Idee die Mail Total zu aktualisieren - done
- Es wird auch ein Update durchgeführt, wenn Mails ausserhalb der max. liegen. Ihr habt max. 20 eingetragen und die Mail 22 wird als gelesen markiert, dann wird trotzdem ein Update gefahren. - done
Bitte den RAM Verbrauch kontrollieren. Bei 4 IMAP`s komme ich schon auf 120MB.
Viel Spaß beim testen und ich hoffe auch gute Ideen die man auch umsetzen kann
Gruß//Lucky
-
Hallo zusammen,
hier nun eine Erklärung wie ihr die u. a. Datenpunkte nutzen könnt.
Diese Datenpunkte könnt ihr auch mit diesem Blockly setzen:
imap.0.xx.remote.show_mails: Maximal Ausgabe von Mails mit dem u. a. Kriterien. Diese Anzahl ist nicht bregrenzt und kann somit euren ibroker lahmlegen. 1000 Mails benötigt ca. 5 Minuten Ladezeit!Diese Änderung kann nur mit einem Restart oder neues setzen von den Einstellungen aus der Instanz Konfig rückgängig gemacht werden.
imap.0.xx.remote.criteria:
Alle Mails["ALL"]
Alle Mails mit dem Flag „ANSWERED“
["ANSWERED"]
Alle Mails die den Flag „UNANSWERED“ nicht haben
["UNANSWERED"]
Alle Mails mit dem Flag „DELETED“
["DELETED"]
Alle Mails die den Flag „UNDELETED“ nicht haben
["UNDELETED"]
Alle Mails mit dem Flag „DRAFT“
["DRAFT"]
Alle Mails die den Flag „UNDRAFT“ nicht haben
["UNDRAFT"]
Alle Mails mit dem Flag „FLAGGED“
["FLAGGED"]
Alle Mails die den Flag „UNFLAGGED“ nicht haben
["UNFLAGGED"]
Alle Mails mit dem Flag „RECENT“ und kein „SEEN“ Flag
["NEW"]
Alle Mails die den Flag „RECENT“ nicht haben
["OLD"]
Alle Mails mit dem Flag „SEEN“
["SEEN"]
Alle Mails mit dem Flag „UNSEEN“
["UNSEEN"]
Alle Mails mit dem Flag „RECENT“ -> Neue Mails und noch nicht gesehen
["RECENT"]
Oder auch mehrere möglich:
["UNSEEN", "FLAGGED"]
Alle Mails die am 01.03.2023 bis zum 13.03.2023 eingegangen sind. Das ALL kan mit den obrigen ersetzt werden
["ALL",["SINCE","Mar 01, 2023"],["BEFORE","Mar 13, 2023"]]
Alle Mails mit dem Flag „SEEN“ die seit dem 01.06.2022 (auch mit Urzeit) empfangen wurden.
["ALL",["SINCE", "June 01, 2022"]] ["ALL",["SINCE", "Jun 01, 2022"]] ["ALL",["SINCE", '2022-06-01 23:59:00'] ]
Alle Mails von github@luckyskills.de
["ALL", ["HEADER", "FROM", "github@luckyskills.de"]]
Alle Mails von github@luckyskills.de seit dem 01.03.2023
["ALL", ["HEADER", "FROM", "github@luckyskills.de"], ["SINCE", "Mar 01, 2023"]]
Mögliche Headers:
SUBJECT
FROM
TO
TEXTWeitere Beispiele folgen.
Gruß//Lucky
-
@lucky_esa
Kleinigkeiten bei der HTML-Erstellung
-> E-Mail nicht mit den richtigen Daten gefüllt.Ab der 2. Mail wird doppelt angezeigt.
-
@mcu Jetzt wird es schwierig...Was hast du für Einstellungen vorgenommen das es so bei dir aussieht. Wahrscheinlich benötigt ich ein Debug Log per Mail warum Daten bei dir doppelt kommen.
Bitte auf debug umstellen und nach ca. 30 Sekunden wieder auf Info umstellen.
Das Logfile mit zusenden: github@luckyskills.de
Auf keine Fall vergessen auf Info umzustellen. Es kommen echt viele Daten und dein Log kann schnell auf GB anwachsen. Habe zur Sicherheit die Daten der Anhänge aus dem Log genommen.Gruß//Lucky
Gruß//Lucky
-
@lucky_esa Liegt nicht an einem Konto, sondern daran, wenn man mehrere gmail-Konten nutzt.
-
@mcu sagte in Test Adapter ioBroker.imap v0.0.1 GitHub:
@lucky_esa Liegt nicht an einem Konto, sondern daran, wenn man mehrere gmail-Konten nutzt.
Wie hast du mehere Konten in der Instanz Konfig angelegt? Da gibt es doch immer unterschiedliche Benutzernamen...
Die eMail Adesse im Header musst du unter remote.html ändern.Gruß//Lucky
-
-
Wenn möglich bitte die E-Mail Adresse automatisch in
remote.html
setzen. -
zurzeit keine doppelten Einträge in html
-
Im HTML-Code sind 2 Dinge die für jarvis nicht passen .
class "container"
Style -> Tabelle wird falsch angezeigt
div.container { align-items: center; justify-content: center }
Nehme ich die Klasse raus passt es
- Einträge in remote.html werden nicht umgesetzt
<th style="text-align:center; width:auto">  ID  </th> <th style="text-align:center; width:auto">  Von  </th> <th style="text-align:center; width:auto">  Betreff  </th> <th style="text-align:center; width:auto">  Datum  </th> <th style="text-align:center; width:auto">  Inhalt  </th> <th style="text-align:center; width:auto">  Sequenznummer  </th> <th style="text-align:center; width:auto">  Flaggen  </th>
- Bitte auch ein json-DP mit den E-Maildaten
-
-
Was mache ich Falsch?
Fehler bei Host xxxxxxxxx_gmail_com - Error: Application-specific password required: https://support.google.com/accounts/answer/185833 (Failure) at Connection._resTagged (C:\ioBroker\node_modules\node-imap\lib\Connection.js:1272:13) at Parser.<anonymous> (C:\ioBroker\node_modules\node-imap\lib\Connection.js:190:12) at Parser.emit (node:events:513:28) at Parser._resTagged (C:\ioBroker\node_modules\node-imap\lib\Parser.js:169:12) at Parser._parse (C:\ioBroker\node_modules\node-imap\lib\Parser.js:135:18) at Parser._tryread (C:\ioBroker\node_modules\node-imap\lib\Parser.js:77:17) at TLSSocket.Parser._cbReadable (C:\ioBroker\node_modules\node-imap\lib\Parser.js:55:14) at TLSSocket.emit (node:events:513:28) at emitReadable_ (node:internal/streams/readable:578:12) at processTicksAndRejections (node:internal/process/task_queues:82:21) { type: 'no', textCode: 'ALERT', source: 'authentication' }.
-
@lucky_esa sagte in Test Adapter ioBroker.imap v0.0.1 GitHub:
Ich verwende das NPM Modul node-imap und es funktioniert noch. Habe allerdings auch ein aktuelles imapflow gefunden was ich parrallel teste.
Muss ich das node-imap in JS als zusätzliches Modul eintragen?
-
-
@lucky_esa sagte in Test Adapter ioBroker.imap v0.0.1 GitHub:
@sigi234 Gmail hat doch wie immer eine Extrawurst. Du musst nach dieser Anleitung dein PW generieren
Funktioniert!
-
@mcu sagte in Test Adapter ioBroker.imap v0.0.1 GitHub:
Bitte auch ein json-DP mit den E-Maildaten
Ja, und bitte einen DP Json Table
-
Hallo, sehe das nicht als error:
imap.0 2023-02-27 06:41:49.532 error Fehler bei Host xxxxxxxxx_gmail_com - Mailbox is empty.
-
@mcu sagte in Test Adapter ioBroker.imap v0.0.1 GitHub:
- Wenn möglich bitte die E-Mail Adresse automatisch in
remote.html
setzen.
done - Im HTML-Code sind 2 Dinge die für jarvis nicht passen .
Kannst du jetzt mit html.jarvis == true deaktivieren - Einträge in remote.html werden nicht umgesetzt
done - Bitte auch ein json-DP mit den E-Maildaten
done
Gruß//Lucky
- Wenn möglich bitte die E-Mail Adresse automatisch in
-
@sigi234 sagte in Test Adapter ioBroker.imap v0.0.1 GitHub:
Hallo, sehe das nicht als error:
imap.0 2023-02-27 06:41:49.532 error Fehler bei Host xxxxxxxxx_gmail_com - Mailbox is empty.
geändert in Info
Gruß//Lucky
-
Hallo zusammen,
nun zu den JSON. Habe lange Zeit darüber nachgedacht diesen zur Verfügung zu stellen und hatte mich eigentlich dagegen entschieden. Warum? Es sind einfach zu viele Daten die in die DB von iobroker geschrieben werden.
Habe jetzt mal 2 Alternativen implementiert.
Zum testen gibt es den neuen Datenpunkt imap.0.xx.json in dem jetzt die Daten geschrieben werden. Ihr könnt euch da selber mal ein Bild von der enormen Datenmenge machen.
Daher habe ich noch ein Blockly hinzugefügt. Hier könnt ihr den JSON holen oder alle Sequenz ID`s und diese weiter verarbeiten.
Was meint ihr?Gruß//Lucky
-
@lucky_esa Bei
html.jarvis
ist anscheinend nochdiv.container
im style drin. Also Problem noch vorhanden. -
@mcu sagte in Test Adapter ioBroker.imap v0.0.1 GitHub:
@lucky_esa Bei
html.jarvis
ist anscheinend nochdiv.container
im style drin. Also Problem noch vorhanden.Upps, Gedankenfehler. Mach bitte mal im Datenpunkt xxx.html aus
div.container
das hier:
.container
-
@lucky_esa Dann gibt es noch ein Problem mit der Höhe ?
JSON Aufbau müsste geändert werden, damit man es nutzen kann.
[{"Received":"","from":"", "html":"","flag":""}]
Das andere ist für Super-Experten?
-
also muss dann alles raus? Verstehe das nicht wie jarvis das darstellt. Habe den HTML Code mit Validator geprüft und habe 0 Fehler...