NEWS
Test Adapter ioBroker.imap latest/stable
-
@bahnuhr Hast du die aktuelle Version 0.1.1 installiert? Habe da was in der Instanz Config geändert um den Ramverbrauch zu reduzieren. Wenn diese Felder benötigt werden muss du in der Checkbox "ATT" einen Haken setzen.
Gruß//Lucky
-
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Version 0.1.1
na klar
Bei "normalem" Text / einfache Mail kommt bei den DP auch was an.
ATT probier ich aus.
-
so mit att wird in text etwas angezeigt.
Aber nun nächster Fehler:
Dieser Scriptteil funktioniert nicht mehr:
var i, result, j, json; sendTo("imap.0", "getIMAPRequest", { name: "abc@xxx.de", max: 20, search: '["ALL"]', fetch: JSON.parse('{"fetch": true, "seqno": [23063]}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; json = JSON.stringify(getAttr(j, 'content')); // Dein Anhang als Buffer console.log(getAttr(json, 'data')); } } });
Im log kommt:
imap.0 2023-11-05 07:03:35.405 warn Finde keine Übersetzung für Missing fetch.
hast du ne Info für mich, was ich da ändern muss ?
-
@bahnuhr Wenn du eine eMail suchst dann muss das so aussehen.
fetch: JSON.parse('{"fetch": true, "uid": [23063]}'),
Wenn du die letzten 20 eMails duchsuchen willst muss es so aussehen
fetch: JSON.parse('{"fetch": false, "seqno": [23063]}'),
Danke für die Meldung. Fehlt tatsächlich in der Translate Datei. Diese Meldung kommt aber nicht wenn du die Request von oben anwendest.
Gruß//Lucky
-
@lucky_esa
Das hab ich alles schon probiert.Der fetch klappt nicht.
Bin aber einen Schritt weiter. Habe den result auseinander genommen.
Habe nun den Buffer.
Aber das Schreiben als Datei klappt nicht.12:17:25.851 info javascript.0 (655) script.js.Scripte.test4: [120,159,62,34,56,11,1,6,144,8,0,4,0,0,0,0,0,1,0,1,0,1,7,144,6,0,8,0,0,0,228,4,0,0,0,0,0,0,232,0,1,8,129,168,22,218,93,240,137,44,92,2,1,250,15,1,0,0,0,16,0,0,0,140,215,39,216,124,209,115,79,168,22,218,93,240,137,44,92,3,0,254,15,7,0,0,0,3,0,13,52,253,63,165,14,3,0,15,52,253,63,165,14,15,49] 12:17:25.854 info javascript.0 (655) script.js.Scripte.test4: winmail.dat 12:17:25.858 error javascript.0 (655) script.js.Scripte.test4: Error: Parameter "data" needs to be a Buffer but type "object" has been passed
-
@bahnuhr Wie genau versuchst du zu schreiben? Weiter oben ist ja das Script fürs schreiben.
> var i, result, j, json; > sendTo("imap.0", "getIMAPRequest", { > name: "ppc@xxx", > max: 20, > search: '["ALL"]', > fetch: JSON.parse('{"fetch": true, "uid": [21954]}'), > bodie: '{bodies: "", markSeen: false}', > parse: true, > }, async function (result) { > if (!result) { > console.log("No result found!"); > return; > } > for (var i_index in result) { > i = result[i_index]; > var j_list = getAttr(i, 'body.attachments'); > for (var j_index in j_list) { > j = j_list[j_index]; > json = JSON.stringify(getAttr(j, 'content')); > // Dein Anhang als Buffer > // console.log(getAttr(json, 'data')); > console.log(getAttr(j, 'filename')); > writeFile('vis.0', getAttr(j, 'filename'), getAttr(json, 'data'), function (error) { > if(error) { > console.log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); > } else { > console. log('Datei ' + getAttr(j, 'filename') +' wurde gespeichert'); > // Hier an Telegram senden > delFile('vis.0', getAttr(j, 'filename'), function (error) { > if(!error) console.log('Datei ' + getAttr(j, 'filename') +' gelöscht'); > }); > } > }); > } > } > }); > ```
-
@lucky_esa
writeFile funktioniert nicht.
probiert habe ich oben bei fetch: seqno oder uid -> beides klappt nicht.var i, result, j, json; sendTo("imap.0", "getIMAPRequest", { name: "ppc@dbrp-mueller.de", max: 20, search: '["ALL", ["HEADER", "FROM", "dieter@dbrp-mueller.de"]]', fetch: JSON.parse('{"fetch": false, "seqno": [23066]}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { console.log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; var test = getAttr(i, 'attrs.uid'); if (test == 23066) { json = JSON.stringify(getAttr(j, 'content')); // Dein Anhang als Buffer console.log(getAttr(json, 'data')); console.log(getAttr(j, 'filename')); writeFile('vis.0', getAttr(j, 'filename'), getAttr(json, 'data'), function (error) { if(error) { console.log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { console. log('Datei ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); } } } });
In der Mitte hab ich sowas eingebaut, damit ich nur die einzige bekomme, die ich brauche:
var test = getAttr(i, 'attrs.uid'); if (test == 23066) { ... ...
Und dann kommt folgends im log:
15:26:42.374 error javascript.0 (655) script.js.Scripte.test4: Error: Parameter "data" needs to be a Buffer but type "object" has been passed
-
@bahnuhr Muss ich mir mal anschauen. Hatt aber nichts mit dem Adapter zu tun. Melde mich.
-
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Hatt aber nichts mit dem Adapter zu tun.
Dass der fetch nicht funktioniert aber schon.
-
@bahnuhr So sollte es funktionieren. Mit fetch muss ich noch prüfen.
var i, result, j, json; sendTo("imap.0", "getIMAPRequest", { name: "github@luckyskills.de", max: 20, search: '["ALL", ["HEADER", "FROM", "1234@hotmail.com"]]', fetch: JSON.parse('{"fetch": false, "seqno": [23066]}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { console.log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; var test = getAttr(i, 'attrs.uid'); console.log(test); if (test == 84) { json = JSON.stringify(getAttr(j, 'content')); // Dein Anhang als Buffer console.log(getAttr(json, 'data')); console.log(getAttr(j, 'filename')); writeFile('vis.0', getAttr(j, 'filename'), JSON.stringify(getAttr(json, 'data')), function (error) { if(error) { console.log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { console. log('Datei ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); } } } });
Fetch funktionier auch:
var i, result, j, json; sendTo("imap.0", "getIMAPRequest", { name: "github@luckyskills.de", max: 20, search: '["ALL", ["HEADER", "FROM", "1234@hotmail.com"]]', fetch: JSON.parse('{"fetch": true, "uid": [84]}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { console.log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; var test = getAttr(i, 'attrs.uid'); console.log(test); if (test == 84) { json = JSON.stringify(getAttr(j, 'content')); // Dein Anhang als Buffer console.log(getAttr(json, 'data')); console.log(getAttr(j, 'filename')); writeFile('vis.0', getAttr(j, 'filename'), JSON.stringify(getAttr(json, 'data')), function (error) { if(error) { console.log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { console. log('Datei ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); } } } });
-
@lucky_esa
Hallo, ich muss nochmal fragen.Script funktioniert, es wird eine Datei gespeichert.
nur Problem: Die wav wird nicht abgespielt.
Ablauf:
Ich lasse mir per fritzbox den ab Text senden. Sieht so aus:
Die Datei lässt sich am pc per outlook einwandfrei abspielen. (wav Datei)
Bei den Objekten wird bei attach 1 angezeigt.
Dann Script gestartet:// Datei vom Anrufbeantworter speichern und per telegram senden function weiter() { // Variablen var i, result, j, json, fs = require('fs'), vText = "", vUser = "Dieter"; var uid = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.uid").val; var subject = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.subject").val; var text = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.text").val; // Script if (text.indexOf("Anrufbeantworter") > - 1) { // Anrufbeantworter ist im Text enthalten // Variablen var Anruf_von = text.substring(text.indexOf("Der Anrufer:") + 13, text.indexOf("hat für Sie") - 1) var Datum = text.substring(text.indexOf("Datum:") + 7, text.indexOf("Uhrzeit") - 1) var Uhrzeit = text.substring(text.indexOf("Uhrzeit:") + 9, text.indexOf("Aufnahme") - 1) var Laenge = text.substring(text.indexOf("Aufnahme") + 15, text.indexOf("Die Weiter") - 2) + " (min/sek)" // Datei speichern sendTo("imap.0", "getIMAPRequest", { name: "ppc@dbrp-mueller.de", max: 20, search: '["ALL"]', fetch: JSON.parse('{"fetch": true, "uid": [' + uid + ']}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; json = JSON.stringify(getAttr(j, 'content')); //log(getAttr(j, 'filename')); writeFile('vis.0', '/Anrufe/'+ getAttr(j,'filename'), JSON.stringify(getAttr(json, 'data')), function (error) { if(error) { log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { log('Datei: ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); // Datei kopieren mit anderem Filenamen setTimeout(function() { Datei_kopieren("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/" + getAttr(j, 'filename'), "/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav"); }, 3000); // Datei wieder löschen setTimeout(function() { fs.unlink("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/" + getAttr(j, 'filename'), function (err) { if (err) throw err; log('Datei: ' + getAttr(j, 'filename') + ' wurde gelöscht.'); }); fs.unlink("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav", function (err) { if (err) throw err; log('Datei: Anrufbeantworter.wav wurde gelöscht.'); }); }, 10000); // Datei per telegram versenden setTimeout(function() { vText = "Anruf von: " + Anruf_von + "\nDatum: " + Datum + "\nUhrzeit: " + Uhrzeit + "\nAufnahme: " + Laenge; log (vText); //vText = "test"; sendTo('telegram.0', {user: vUser, text: '/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav', caption: vText}); }, 5000); } } }); } else { log ("Anrufbeantworter ist im Text nicht enthalten; Script wird abgebrochen."); } } on({id: "imap.0.ppc_dbrp-mueller_de.email.email_01.uid", change: "ne"}, function(obj) { // uid von Email 1 hat sich geändert log("Auslöser Email imap hat sich geändert; UID= " + obj.state.val); weiter(); }); weiter();
Es wird eine Datei erzeugt; diese ist aber nicht abspielbar.
Siehst du irgendeinen Fehler. -
@bahnuhr Wo genau nicht abspielbar? Telegram oder hast du diese Datei auf dein PC geladen und dort funktioniert es auch nicht?
Gruß//Lucky
-
@lucky_esa
anbei mal eine verkürzte Fassung:var uid = 23066; var i, result, j, json; sendTo("imap.0", "getIMAPRequest", { name: "ppc@dbrp-mueller.de", max: 20, //search: '["ALL", ["HEADER", "FROM", "dieter@dbrp-mueller.de"]]', search: '["ALL"]', fetch: JSON.parse('{"fetch": true, "uid": ['+uid+']}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { console.log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; json = JSON.stringify(getAttr(j, 'content')); // Dein Anhang als Buffer console.log(getAttr(json, 'data')); console.log(getAttr(j, 'filename')); writeFile('vis.0', '/Anrufe/'+ getAttr(j,'filename') + uid, JSON.stringify(getAttr(json, 'data')), function (error) { if(error) { log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { log('Datei: ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); } } });
Datei wird erzeugt und gespeichert.
Sie lässt sich aber nicht abspielen.Was hat sich da nur geändert ?
Adapter, Fritzbox, Script (wo nur ?)
Früher hat es geklappt. -
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Telegram oder hast du diese Datei auf dein PC geladen und dort funktioniert es auch nicht?
beides
kopiert auf win-PC
Alle programme (mediaplayer, vlc, etc.) können die Datei nicht abspielen.Und in telegram klappt es auch nicht.
-
@bahnuhr Habe hier 2 Varianten. Du kannst hier auch fs auskommentieren.
//var fs = require('fs'); var i, result, j, json; sendTo("imap.0", "getIMAPRequest", { name: "github@luckyskills.de", max: 20, search: '["ALL", ["HEADER", "FROM", "1234@hotmail.com"]]', fetch: JSON.parse('{"fetch": true, "uid": [84]}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { console.log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; var test = getAttr(i, 'attrs.uid'); console.log(test); if (test == 84) { json = Buffer.from(getAttr(j, 'content')); // Dein Anhang als Buffer //console.log(JSON.stringify(json)); //console.log(getAttr(json, 'data')); console.log(getAttr(j, 'filename')); //fs.writeFile('/opt/iobroker/temp/' + getAttr(j, 'filename'), json, 'binary', function(err) { // if (err) { // console.log('Fehler beim Bild speichern: ' + err, 'warn'); // } else { // console.log('Fehler beim Bild speichern: ', 'warn'); // } //}); writeFile('vis.0', getAttr(j, 'filename'), json, function (error) { if(error) { console.log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { console. log('Datei ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); } } } });
-
-
@bahnuhr sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Ich bekomme dies nicht hin.
Datei wird erzeugt, aber abspielen geht nicht.
Kannst du mir mal eine kleine .wav an github@luckyskills.de senden.
-
-
@bahnuhr Das sollte funktionieren.
// Datei vom Anrufbeantworter speichern und per telegram senden function weiter() { // Variablen var i, result, j, json, fs = require('fs'), vText = "", vUser = "Dieter"; var uid = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.uid").val; var subject = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.subject").val; var text = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.text").val; // Script if (text.indexOf("Anrufbeantworter") > - 1) { // Anrufbeantworter ist im Text enthalten // Variablen var Anruf_von = text.substring(text.indexOf("Der Anrufer:") + 13, text.indexOf("hat für Sie") - 1) var Datum = text.substring(text.indexOf("Datum:") + 7, text.indexOf("Uhrzeit") - 1) var Uhrzeit = text.substring(text.indexOf("Uhrzeit:") + 9, text.indexOf("Aufnahme") - 1) var Laenge = text.substring(text.indexOf("Aufnahme") + 15, text.indexOf("Die Weiter") - 2) + " (min/sek)" // Datei speichern sendTo("imap.0", "getIMAPRequest", { name: "ppc@dbrp-mueller.de", max: 20, search: '["ALL"]', fetch: JSON.parse('{"fetch": true, "uid": [' + uid + ']}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; json = Buffer.from(getAttr(j, 'content'));; //log(getAttr(j, 'filename')); writeFile('vis.0', '/Anrufe/'+ getAttr(j,'filename'), json, function (error) { if(error) { log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { log('Datei: ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); // Datei kopieren mit anderem Filenamen setTimeout(function() { Datei_kopieren("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/" + getAttr(j, 'filename'), "/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav"); }, 3000); // Datei wieder löschen setTimeout(function() { fs.unlink("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/" + getAttr(j, 'filename'), function (err) { if (err) throw err; log('Datei: ' + getAttr(j, 'filename') + ' wurde gelöscht.'); }); fs.unlink("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav", function (err) { if (err) throw err; log('Datei: Anrufbeantworter.wav wurde gelöscht.'); }); }, 10000); // Datei per telegram versenden setTimeout(function() { vText = "Anruf von: " + Anruf_von + "\nDatum: " + Datum + "\nUhrzeit: " + Uhrzeit + "\nAufnahme: " + Laenge; log (vText); //vText = "test"; sendTo('telegram.0', {user: vUser, text: '/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav', caption: vText}); }, 5000); } } }); } else { log ("Anrufbeantworter ist im Text nicht enthalten; Script wird abgebrochen."); } } on({id: "imap.0.ppc_dbrp-mueller_de.email.email_01.uid", change: "ne"}, function(obj) { // uid von Email 1 hat sich geändert log("Auslöser Email imap hat sich geändert; UID= " + obj.state.val); weiter(); }); weiter();
-
@lucky_esa
Danke, aber es klappt nicht.Am PC kommt im wmp dies:
Edit:
Gabs da nicht einmal einen Hinweis von @apollon77 dass das speichern mit buffer nicht mehr geht. Kann aber auch ein anderer Sachverhalt gewesen sein. Hatten wir aber schon einmal hier in diesem thread.
dieses hier:
https://forum.iobroker.net/topic/63400/test-adapter-iobroker-imap-v0-1-1-latest-stable/234?page=12