Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter ioBroker.imap latest/stable

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

Test Adapter ioBroker.imap latest/stable

Geplant Angeheftet Gesperrt Verschoben Tester
410 Beiträge 26 Kommentatoren 93.3k Aufrufe 21 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M MeinhardRisch

    Hallo,

    bin mir nicht ganz sicher, ob ich hier richtig bin...

    Aber ich habe das kleine Problem, dass der Adapter bei Abrufen einer Email folgenden Fehler auslöst:

    Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
    unhandled promise rejection: Cannot read properties of undefined (reading 'seqno')
    TypeError: Cannot read properties of undefined (reading 'seqno') at Imap.updatejson (/opt/iobroker/node_modules/iobroker.imap/main.js:638:49) at EventEmitter.<anonymous> (/opt/iobroker/node_modules/iobroker.imap/lib/imap_event.js:600:30) at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    Cannot read properties of undefined (reading 'seqno')

    Danach wird er neu gestartet und wartet auf den Eingang einer neuen Mail

    M Offline
    M Offline
    MeinhardRisch
    schrieb am zuletzt editiert von
    #357

    @meinhardrisch
    Sorry, nehme alles zurück... es fehlte wohl das Symbol ... 🙂

    L 1 Antwort Letzte Antwort
    0
    • M MeinhardRisch

      @meinhardrisch
      Sorry, nehme alles zurück... es fehlte wohl das Symbol ... 🙂

      L Online
      L Online
      Lucky_ESA
      Developer Most Active
      schrieb am zuletzt editiert von
      #358

      @meinhardrisch sagte in Test Adapter ioBroker.imap latest/stable:

      @meinhardrisch
      Sorry, nehme alles zurück... es fehlte wohl das Symbol ... 🙂

      Dann ist ja alles gut. Du bist hier auch richtig. Auch wenn du was vergessen hast, darf der Adapter nicht crashen sondern sollte mit Fehleingaben umgehen können.
      Was genau hast du gemacht?

      Gruß//Lucky

      1 Antwort Letzte Antwort
      0
      • L Lucky_ESA
        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


        bild4.png
        Screenshot 2023-03-07 221651.png

        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.

        Eine VIEW von @sigi234

        Gmail login

        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

        David G.D Offline
        David G.D Offline
        David G.
        schrieb am zuletzt editiert von
        #359

        @lucky_esa

        Klasse Adapter, hab ihn seit dem Testrelease stabil am laufen.
        Jedoch nur sehr begrenzt, Betreff oder Nachricht triggert nur bestimmte Aktionen.

        Nun würde ich gerne Nachrichten löschen (nicht nur zu gelöscht verschieben) können.
        Geht das? Am liebsten über blockly und die id der Mail.

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        L 2 Antworten Letzte Antwort
        0
        • David G.D David G.

          @lucky_esa

          Klasse Adapter, hab ihn seit dem Testrelease stabil am laufen.
          Jedoch nur sehr begrenzt, Betreff oder Nachricht triggert nur bestimmte Aktionen.

          Nun würde ich gerne Nachrichten löschen (nicht nur zu gelöscht verschieben) können.
          Geht das? Am liebsten über blockly und die id der Mail.

          L Online
          L Online
          Lucky_ESA
          Developer Most Active
          schrieb am zuletzt editiert von
          #360

          @david-g

          Nun würde ich gerne Nachrichten löschen (nicht nur zu gelöscht verschieben) können.
          Geht das? Am liebsten über blockly und die id der Mail.

          Es tut mir Leid aber über imap kann man keine Mails löschen. Du kannst diese nur in den Mülleimer verschieben.

          Gruß//Lucky

          David G.D 1 Antwort Letzte Antwort
          0
          • David G.D David G.

            @lucky_esa

            Klasse Adapter, hab ihn seit dem Testrelease stabil am laufen.
            Jedoch nur sehr begrenzt, Betreff oder Nachricht triggert nur bestimmte Aktionen.

            Nun würde ich gerne Nachrichten löschen (nicht nur zu gelöscht verschieben) können.
            Geht das? Am liebsten über blockly und die id der Mail.

            L Online
            L Online
            Lucky_ESA
            Developer Most Active
            schrieb am zuletzt editiert von
            #361

            @david-g Muss meine Aussage zurückziehen. Man könnte per Adapter einen neuen Ordner erstellen, dann dort die gewünschten Mails hineinschieben und dann den Ordner löschen.

            Wäre das OK?

            Gruß//Lucky

            David G.D 1 Antwort Letzte Antwort
            0
            • L Lucky_ESA

              @david-g Muss meine Aussage zurückziehen. Man könnte per Adapter einen neuen Ordner erstellen, dann dort die gewünschten Mails hineinschieben und dann den Ordner löschen.

              Wäre das OK?

              Gruß//Lucky

              David G.D Offline
              David G.D Offline
              David G.
              schrieb am zuletzt editiert von
              #362

              @lucky_esa

              Wäre zumindest ein Workarround.
              Mal schauen ob ich das im Blockly schaffe.

              Ist das evtl eine Möglichkeit die Funktion "Mail löschen" in den Adapter einzubauen die im Hintergrund so arbeitet?

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              L 1 Antwort Letzte Antwort
              0
              • David G.D David G.

                @lucky_esa

                Wäre zumindest ein Workarround.
                Mal schauen ob ich das im Blockly schaffe.

                Ist das evtl eine Möglichkeit die Funktion "Mail löschen" in den Adapter einzubauen die im Hintergrund so arbeitet?

                L Online
                L Online
                Lucky_ESA
                Developer Most Active
                schrieb am zuletzt editiert von
                #363

                @david-g Du kannst gerne mal von GIT laden.

                Zum anlegen oder löschen muss ZWINGEND die inbox + delimiter voran setzen. Siehe Beispiel im Objekt imap.0.xxx.remote.change_folder

                    "states": {
                      "INBOX": "INBOX",
                      "INBOX.Spam": "INBOX.Spam",
                      "INBOX.Drafts": "INBOX.Drafts",
                      "INBOX.Sent": "INBOX.Sent",
                      "INBOX.Trash": "INBOX.Trash",
                    }
                

                <inbox><delimiter>Spam

                Um den Ordner imap anzulegen muss ich also INBOX.imap eintragen.

                Neuen Ordner anlegen:
                .remote.mailbox_folder_create

                Dann mit move die gewünschten Mails dort einfügen und damit wieder löschen.
                .remote.mailbox_folder_delete

                Gruß//Lucky

                David G.D 1 Antwort Letzte Antwort
                1
                • L Lucky_ESA

                  @david-g Du kannst gerne mal von GIT laden.

                  Zum anlegen oder löschen muss ZWINGEND die inbox + delimiter voran setzen. Siehe Beispiel im Objekt imap.0.xxx.remote.change_folder

                      "states": {
                        "INBOX": "INBOX",
                        "INBOX.Spam": "INBOX.Spam",
                        "INBOX.Drafts": "INBOX.Drafts",
                        "INBOX.Sent": "INBOX.Sent",
                        "INBOX.Trash": "INBOX.Trash",
                      }
                  

                  <inbox><delimiter>Spam

                  Um den Ordner imap anzulegen muss ich also INBOX.imap eintragen.

                  Neuen Ordner anlegen:
                  .remote.mailbox_folder_create

                  Dann mit move die gewünschten Mails dort einfügen und damit wieder löschen.
                  .remote.mailbox_folder_delete

                  Gruß//Lucky

                  David G.D Offline
                  David G.D Offline
                  David G.
                  schrieb am zuletzt editiert von
                  #364

                  @lucky_esa

                  Cool,
                  das klappt wunderbar.
                  Ich habe ein Postfach was als "trigger" für manche Scripte dient von Geräten die Mails senden können und keine http Befehle senden können.
                  Jetzt kann man den Kram direkt löschen.

                  Zeigt eure Lovelace-Visualisierung klick
                  (Auch ideal um sich Anregungen zu holen)

                  Meine Tabellen für eure Visualisierung klick

                  1 Antwort Letzte Antwort
                  0
                  • L Lucky_ESA

                    @david-g

                    Nun würde ich gerne Nachrichten löschen (nicht nur zu gelöscht verschieben) können.
                    Geht das? Am liebsten über blockly und die id der Mail.

                    Es tut mir Leid aber über imap kann man keine Mails löschen. Du kannst diese nur in den Mülleimer verschieben.

                    Gruß//Lucky

                    David G.D Offline
                    David G.D Offline
                    David G.
                    schrieb am zuletzt editiert von
                    #365

                    @lucky_esa sagte in Test Adapter ioBroker.imap latest/stable:

                    Es tut mir Leid aber über imap kann man keine Mails löschen. Du kannst diese nur in den Mülleimer verschieben.

                    Ich habe eben folgendes gelesen im Bezug auf imap:

                    1. Sie löschen eine E-Mail → Die E-Mail wird in den Papierkorb verschoben.
                    
                    
                    2. Sie leeren den Papierkorb → Die E-Mail wird als gelöscht markiert (\Deleted).
                    
                    
                    3. Der Mail-Client führt den Expunge-Befehl aus → Die E-Mail wird endgültig vom Server entfernt.
                    
                    
                    
                    Unterschiedliche Implementierungen
                    
                    Einige Mail-Clients wie Gmail nutzen eine spezielle Implementierung: Hier wird das Verschieben in den Papierkorb direkt als Löschaktion betrachtet. Wird der Papierkorb geleert, ist die E-Mail sofort weg.
                    
                    
                    Das Löschen von E-Mails im Papierkorb funktioniert, weil der Mail-Client in der Regel den Expunge-Befehl ausführt. Ohne diesen Befehl bliebe die E-Mail technisch noch vorhanden, wäre aber als gelöscht markiert und für den Benutzer unsichtbar.
                    

                    Kann man diesen "Expunge-Befehl" nicht irgewie ausführen?
                    Evtl wäre das eine sauberer Lösung.

                    Zeigt eure Lovelace-Visualisierung klick
                    (Auch ideal um sich Anregungen zu holen)

                    Meine Tabellen für eure Visualisierung klick

                    L 1 Antwort Letzte Antwort
                    0
                    • David G.D David G.

                      @lucky_esa sagte in Test Adapter ioBroker.imap latest/stable:

                      Es tut mir Leid aber über imap kann man keine Mails löschen. Du kannst diese nur in den Mülleimer verschieben.

                      Ich habe eben folgendes gelesen im Bezug auf imap:

                      1. Sie löschen eine E-Mail → Die E-Mail wird in den Papierkorb verschoben.
                      
                      
                      2. Sie leeren den Papierkorb → Die E-Mail wird als gelöscht markiert (\Deleted).
                      
                      
                      3. Der Mail-Client führt den Expunge-Befehl aus → Die E-Mail wird endgültig vom Server entfernt.
                      
                      
                      
                      Unterschiedliche Implementierungen
                      
                      Einige Mail-Clients wie Gmail nutzen eine spezielle Implementierung: Hier wird das Verschieben in den Papierkorb direkt als Löschaktion betrachtet. Wird der Papierkorb geleert, ist die E-Mail sofort weg.
                      
                      
                      Das Löschen von E-Mails im Papierkorb funktioniert, weil der Mail-Client in der Regel den Expunge-Befehl ausführt. Ohne diesen Befehl bliebe die E-Mail technisch noch vorhanden, wäre aber als gelöscht markiert und für den Benutzer unsichtbar.
                      

                      Kann man diesen "Expunge-Befehl" nicht irgewie ausführen?
                      Evtl wäre das eine sauberer Lösung.

                      L Online
                      L Online
                      Lucky_ESA
                      Developer Most Active
                      schrieb am zuletzt editiert von
                      #366

                      @david-g Du kannst die Mails direkt in den Papierkorb verschieben
                      [Google Mail]/Papierkorb

                      Vorher noch den Flag Delete mit imap.0.xxx_gmail_com.remote.flag setzen

                      Gruß//Lucky

                      David G.D 1 Antwort Letzte Antwort
                      0
                      • L Lucky_ESA

                        @david-g Du kannst die Mails direkt in den Papierkorb verschieben
                        [Google Mail]/Papierkorb

                        Vorher noch den Flag Delete mit imap.0.xxx_gmail_com.remote.flag setzen

                        Gruß//Lucky

                        David G.D Offline
                        David G.D Offline
                        David G.
                        schrieb am zuletzt editiert von
                        #367

                        @lucky_esa

                        Der Weg wäre doch dann viel "simpler" als das mit dem Ordner anlegen und diesen wieder zu löschen oder?

                        Wenn er auf diesem Weg auch die Mail löscht.

                        P. S.
                        Muss das verschieben nach dem Flaf noch sein? Wenn ich Deleted setze finde ich die Mail mit keinem Mailclient wieder.

                        Zeigt eure Lovelace-Visualisierung klick
                        (Auch ideal um sich Anregungen zu holen)

                        Meine Tabellen für eure Visualisierung klick

                        L 1 Antwort Letzte Antwort
                        0
                        • David G.D David G.

                          @lucky_esa

                          Der Weg wäre doch dann viel "simpler" als das mit dem Ordner anlegen und diesen wieder zu löschen oder?

                          Wenn er auf diesem Weg auch die Mail löscht.

                          P. S.
                          Muss das verschieben nach dem Flaf noch sein? Wenn ich Deleted setze finde ich die Mail mit keinem Mailclient wieder.

                          L Online
                          L Online
                          Lucky_ESA
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #368

                          @david-g

                          Muss das verschieben nach dem Flaf noch sein? Wenn ich Deleted setze finde ich die Mail mit keinem Mailclient wieder.

                          Wenn die Mail weg ist dann funktioniert das löschen wohl so.

                          Gruß//Lucky

                          1 Antwort Letzte Antwort
                          0
                          • L Lucky_ESA

                            @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();
                            
                             
                            
                            
                            falke69F Offline
                            falke69F Offline
                            falke69
                            schrieb am zuletzt editiert von
                            #369

                            @lucky_esa sagte in Test Adapter ioBroker.imap latest/stable:

                            Datei_kopieren

                            Hallo @lucky_esa könntest Du mir vielleicht mit dem Script weiterhelfen.

                            Der Anhang wird anstandslos im entsprechenden Verzeichnis gespeichert.
                            Die Datei, wird aber weder umbenannt, noch kann diese gelöscht werden.
                            Per Telegram bekomme ich auch nur den Pfad zur Datei (/opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/Anrufbeantworter.wav)

                            javascript.0
                            	2025-01-10 18:07:35.354	error	at process.processTimers (node:internal/timers:519:7)
                            javascript.0
                            	2025-01-10 18:07:35.354	error	at listOnTimeout (node:internal/timers:581:17)
                            javascript.0
                            	2025-01-10 18:07:35.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                            javascript.0
                            	2025-01-10 18:07:35.354	error	at Object.<anonymous> (script.js.Test.Skript_1:66:20)
                            javascript.0
                            	2025-01-10 18:07:35.354	error	at ProtectFs.unlink (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:78:9)
                            javascript.0
                            	2025-01-10 18:07:35.354	error	at checkProtected (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:21:19)
                            javascript.0
                            	2025-01-10 18:07:35.354	error	Error in callback: Error: Permission denied
                            javascript.0
                            	2025-01-10 18:07:35.353	error	May not read /opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/10.01.25_14.49_Anruf.XXXXXXXXX.wav - use writeFile instead
                            javascript.0
                            	2025-01-10 18:07:28.354	error	at process.processTimers (node:internal/timers:519:7)
                            javascript.0
                            	2025-01-10 18:07:28.354	error	at listOnTimeout (node:internal/timers:581:17)
                            javascript.0
                            	2025-01-10 18:07:28.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                            javascript.0
                            	2025-01-10 18:07:28.354	error	at Object.<anonymous> (script.js.Test.Skript_1:60:41)
                            javascript.0
                            	2025-01-10 18:07:28.354	error	Error in callback: ReferenceError: Datei_kopieren is not defined
                            

                            Ich vermute, dass sich der eine oder andere Befehl geändert hat.
                            Ein Blockly wäre mir eigentlich am liebsten. Leider fehlt mir der Ansatz dazu.

                            Vielen Dank

                            L 1 Antwort Letzte Antwort
                            0
                            • falke69F falke69

                              @lucky_esa sagte in Test Adapter ioBroker.imap latest/stable:

                              Datei_kopieren

                              Hallo @lucky_esa könntest Du mir vielleicht mit dem Script weiterhelfen.

                              Der Anhang wird anstandslos im entsprechenden Verzeichnis gespeichert.
                              Die Datei, wird aber weder umbenannt, noch kann diese gelöscht werden.
                              Per Telegram bekomme ich auch nur den Pfad zur Datei (/opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/Anrufbeantworter.wav)

                              javascript.0
                              	2025-01-10 18:07:35.354	error	at process.processTimers (node:internal/timers:519:7)
                              javascript.0
                              	2025-01-10 18:07:35.354	error	at listOnTimeout (node:internal/timers:581:17)
                              javascript.0
                              	2025-01-10 18:07:35.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                              javascript.0
                              	2025-01-10 18:07:35.354	error	at Object.<anonymous> (script.js.Test.Skript_1:66:20)
                              javascript.0
                              	2025-01-10 18:07:35.354	error	at ProtectFs.unlink (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:78:9)
                              javascript.0
                              	2025-01-10 18:07:35.354	error	at checkProtected (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:21:19)
                              javascript.0
                              	2025-01-10 18:07:35.354	error	Error in callback: Error: Permission denied
                              javascript.0
                              	2025-01-10 18:07:35.353	error	May not read /opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/10.01.25_14.49_Anruf.XXXXXXXXX.wav - use writeFile instead
                              javascript.0
                              	2025-01-10 18:07:28.354	error	at process.processTimers (node:internal/timers:519:7)
                              javascript.0
                              	2025-01-10 18:07:28.354	error	at listOnTimeout (node:internal/timers:581:17)
                              javascript.0
                              	2025-01-10 18:07:28.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                              javascript.0
                              	2025-01-10 18:07:28.354	error	at Object.<anonymous> (script.js.Test.Skript_1:60:41)
                              javascript.0
                              	2025-01-10 18:07:28.354	error	Error in callback: ReferenceError: Datei_kopieren is not defined
                              

                              Ich vermute, dass sich der eine oder andere Befehl geändert hat.
                              Ein Blockly wäre mir eigentlich am liebsten. Leider fehlt mir der Ansatz dazu.

                              Vielen Dank

                              L Online
                              L Online
                              Lucky_ESA
                              Developer Most Active
                              schrieb am zuletzt editiert von
                              #370

                              @falke69 Schau bitte mal hier
                              Reicht dir das? Wenn nein, dann zeig mal dein Blockly oder Javascript.

                              Gruß//Lucky

                              1 Antwort Letzte Antwort
                              0
                              • L Lucky_ESA

                                @bahnuhr Leider hatte ich noch 2 Fehler. Bitte neu vom GIT laden. Sorry für die Umstände aber ich bekomme den Adapter nicht in latest da apollo77 keine Zeit hat.

                                Versuche dann mal dieses Blockly zu importieren.

                                anhang.txt


                                anhang2.png
                                anhang_1.png

                                seqno ist bei einigen richtig wobei ich hier die uid nehmen musste.

                                anhang_2.png

                                Gruß//Lucky

                                falke69F Offline
                                falke69F Offline
                                falke69
                                schrieb am zuletzt editiert von falke69
                                #371

                                @lucky_esa sagte in Test Adapter ioBroker.imap latest/stable:

                                @bahnuhr Leider hatte ich noch 2 Fehler. Bitte neu vom GIT laden. Sorry für die Umstände aber ich bekomme den Adapter nicht in latest da apollo77 keine Zeit hat.

                                Versuche dann mal dieses Blockly zu importieren.

                                anhang.txt


                                anhang2.png
                                anhang_1.png

                                seqno ist bei einigen richtig wobei ich hier die uid nehmen musste.

                                anhang_2.png

                                Gruß//Lucky

                                Das hier ist das Blockly, was ich hier gefunden habe.
                                Das Spuckt mir aber immer eine Fehlermeldung aus.

                                javascript.0
                                	2025-01-11 06:33:16.859	error	script.js.Test.AB: Cannot parse "timeout": SyntaxError: Unexpected token 'i', "timeout" is not valid JSON
                                imap.0
                                	2025-01-11 06:32:56.860	error	Fehlende Fetch meine_mailadresse_de
                                

                                Habe gedacht, das ich mir damit den Mailanhang per Telegram schicken kann.

                                Dann habe ich das Javascript von Dir gefunden:

                                
                                 
                                // 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();
                                 
                                
                                

                                Hier habe ich eigentlich nur den Speicherpfad angepasst (auch mit dem originalen kommt diese Fehlermeldung)

                                // Datei vom Anrufbeantworter speichern und per telegram senden
                                
                                 
                                
                                function weiter() {
                                
                                 
                                
                                // Variablen
                                
                                    var i, result, j, json, fs = require('fs'), vText = "", vUser = "Telegramuser";
                                
                                    var uid = getState("imap.0.meine_mail_de.email.email_01.uid").val;
                                
                                    var subject = getState("imap.0.meine_mail_de.email.email_01.subject").val;
                                
                                    var text = getState("imap.0.meine_mail_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: "meine@mail.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('0_userdata.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/0_userdata.0/Anrufe/" + getAttr(j, 'filename'), "/opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/Anrufbeantworter.wav"); }, 3000);
                                
                                            // Datei wieder löschen    
                                
                                             setTimeout(function() {
                                
                                                fs.unlink ("/opt/iobroker/iobroker-data/files/0_userdata.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/0_userdata.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/0_userdata.0/Anrufe/Anrufe/Anrufbeantworter.wav', caption: vText});
                                
                                           //     }, 5000);
                                
                                            } } });
                                
                                    } else {
                                
                                        log ("Anrufbeantworter ist im Text nicht enthalten; Script wird abgebrochen.");
                                
                                    }
                                
                                }
                                
                                 
                                
                                on({id: "imap.0.meine_mail_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();
                                
                                 
                                

                                das spuckt mir aber die Fehlermeldungen aus:

                                
                                javascript.0
                                	2025-01-10 18:07:35.354	error	at process.processTimers (node:internal/timers:519:7)
                                javascript.0
                                	2025-01-10 18:07:35.354	error	at listOnTimeout (node:internal/timers:581:17)
                                javascript.0
                                	2025-01-10 18:07:35.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                                javascript.0
                                	2025-01-10 18:07:35.354	error	at Object.<anonymous> (script.js.Test.Skript_1:66:20)
                                javascript.0
                                	2025-01-10 18:07:35.354	error	at ProtectFs.unlink (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:78:9)
                                javascript.0
                                	2025-01-10 18:07:35.354	error	at checkProtected (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:21:19)
                                javascript.0
                                	2025-01-10 18:07:35.354	error	Error in callback: Error: Permission denied
                                javascript.0
                                	2025-01-10 18:07:35.353	error	May not read /opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/10.01.25_14.49_Anruf.XXXXXXXXX.wav - use writeFile instead
                                javascript.0
                                	2025-01-10 18:07:28.354	error	at process.processTimers (node:internal/timers:519:7)
                                javascript.0
                                	2025-01-10 18:07:28.354	error	at listOnTimeout (node:internal/timers:581:17)
                                javascript.0
                                	2025-01-10 18:07:28.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                                javascript.0
                                	2025-01-10 18:07:28.354	error	at Object.<anonymous> (script.js.Test.Skript_1:60:41)
                                javascript.0
                                	2025-01-10 18:07:28.354	error	Error in callback: ReferenceError: Datei_kopieren is not defined
                                
                                

                                In den Script habe ich halt nur die vorhandenen Einstellungen an meine eigenen angepasst.
                                Seit AVM irgendetwas am Codec der Aufnahmedatei geändert hat, kann ich diese nicht mehr mit Spexx in ein wav konvertieren und suche jetzt halt nach einer Alternative, die funktioniert.

                                L 1 Antwort Letzte Antwort
                                0
                                • falke69F falke69

                                  @lucky_esa sagte in Test Adapter ioBroker.imap latest/stable:

                                  @bahnuhr Leider hatte ich noch 2 Fehler. Bitte neu vom GIT laden. Sorry für die Umstände aber ich bekomme den Adapter nicht in latest da apollo77 keine Zeit hat.

                                  Versuche dann mal dieses Blockly zu importieren.

                                  anhang.txt


                                  anhang2.png
                                  anhang_1.png

                                  seqno ist bei einigen richtig wobei ich hier die uid nehmen musste.

                                  anhang_2.png

                                  Gruß//Lucky

                                  Das hier ist das Blockly, was ich hier gefunden habe.
                                  Das Spuckt mir aber immer eine Fehlermeldung aus.

                                  javascript.0
                                  	2025-01-11 06:33:16.859	error	script.js.Test.AB: Cannot parse "timeout": SyntaxError: Unexpected token 'i', "timeout" is not valid JSON
                                  imap.0
                                  	2025-01-11 06:32:56.860	error	Fehlende Fetch meine_mailadresse_de
                                  

                                  Habe gedacht, das ich mir damit den Mailanhang per Telegram schicken kann.

                                  Dann habe ich das Javascript von Dir gefunden:

                                  
                                   
                                  // 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();
                                   
                                  
                                  

                                  Hier habe ich eigentlich nur den Speicherpfad angepasst (auch mit dem originalen kommt diese Fehlermeldung)

                                  // Datei vom Anrufbeantworter speichern und per telegram senden
                                  
                                   
                                  
                                  function weiter() {
                                  
                                   
                                  
                                  // Variablen
                                  
                                      var i, result, j, json, fs = require('fs'), vText = "", vUser = "Telegramuser";
                                  
                                      var uid = getState("imap.0.meine_mail_de.email.email_01.uid").val;
                                  
                                      var subject = getState("imap.0.meine_mail_de.email.email_01.subject").val;
                                  
                                      var text = getState("imap.0.meine_mail_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: "meine@mail.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('0_userdata.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/0_userdata.0/Anrufe/" + getAttr(j, 'filename'), "/opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/Anrufbeantworter.wav"); }, 3000);
                                  
                                              // Datei wieder löschen    
                                  
                                               setTimeout(function() {
                                  
                                                  fs.unlink ("/opt/iobroker/iobroker-data/files/0_userdata.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/0_userdata.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/0_userdata.0/Anrufe/Anrufe/Anrufbeantworter.wav', caption: vText});
                                  
                                             //     }, 5000);
                                  
                                              } } });
                                  
                                      } else {
                                  
                                          log ("Anrufbeantworter ist im Text nicht enthalten; Script wird abgebrochen.");
                                  
                                      }
                                  
                                  }
                                  
                                   
                                  
                                  on({id: "imap.0.meine_mail_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();
                                  
                                   
                                  

                                  das spuckt mir aber die Fehlermeldungen aus:

                                  
                                  javascript.0
                                  	2025-01-10 18:07:35.354	error	at process.processTimers (node:internal/timers:519:7)
                                  javascript.0
                                  	2025-01-10 18:07:35.354	error	at listOnTimeout (node:internal/timers:581:17)
                                  javascript.0
                                  	2025-01-10 18:07:35.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                                  javascript.0
                                  	2025-01-10 18:07:35.354	error	at Object.<anonymous> (script.js.Test.Skript_1:66:20)
                                  javascript.0
                                  	2025-01-10 18:07:35.354	error	at ProtectFs.unlink (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:78:9)
                                  javascript.0
                                  	2025-01-10 18:07:35.354	error	at checkProtected (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:21:19)
                                  javascript.0
                                  	2025-01-10 18:07:35.354	error	Error in callback: Error: Permission denied
                                  javascript.0
                                  	2025-01-10 18:07:35.353	error	May not read /opt/iobroker/iobroker-data/files/0_userdata.0/Anrufe/10.01.25_14.49_Anruf.XXXXXXXXX.wav - use writeFile instead
                                  javascript.0
                                  	2025-01-10 18:07:28.354	error	at process.processTimers (node:internal/timers:519:7)
                                  javascript.0
                                  	2025-01-10 18:07:28.354	error	at listOnTimeout (node:internal/timers:581:17)
                                  javascript.0
                                  	2025-01-10 18:07:28.354	error	at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:3219:34)
                                  javascript.0
                                  	2025-01-10 18:07:28.354	error	at Object.<anonymous> (script.js.Test.Skript_1:60:41)
                                  javascript.0
                                  	2025-01-10 18:07:28.354	error	Error in callback: ReferenceError: Datei_kopieren is not defined
                                  
                                  

                                  In den Script habe ich halt nur die vorhandenen Einstellungen an meine eigenen angepasst.
                                  Seit AVM irgendetwas am Codec der Aufnahmedatei geändert hat, kann ich diese nicht mehr mit Spexx in ein wav konvertieren und suche jetzt halt nach einer Alternative, die funktioniert.

                                  L Online
                                  L Online
                                  Lucky_ESA
                                  Developer Most Active
                                  schrieb am zuletzt editiert von Lucky_ESA
                                  #372

                                  @falke69 Ich verstehe das mit dem kopieren nicht aber egal. Als erstes bitte mal das hier entfernen Datei_kopieren damit die erste Fehlermeldung weg ist. Zum kopieren, schreiben oder löschen immer die Wrappers (Funktion von Java bzw. iobroker) nehmen und nicht fs!
                                  Weiter oben ist doch ein Script...Ich schau mal ob das auch mit Blockly geht...Melde mich...

                                  Hier mal ein Blockly als Bsp.
                                  common.Skript_104.xml

                                  Unter Aktion gibt es noch ein Blockly womit du die Datei einlesen kannst und dann per Telegram versenden.

                                  Screenshot 2025-01-11 115818.png
                                  Der Blockly Data hat dann das Attachment.

                                  Gruß//Lucky

                                  falke69F 1 Antwort Letzte Antwort
                                  0
                                  • L Lucky_ESA

                                    @falke69 Ich verstehe das mit dem kopieren nicht aber egal. Als erstes bitte mal das hier entfernen Datei_kopieren damit die erste Fehlermeldung weg ist. Zum kopieren, schreiben oder löschen immer die Wrappers (Funktion von Java bzw. iobroker) nehmen und nicht fs!
                                    Weiter oben ist doch ein Script...Ich schau mal ob das auch mit Blockly geht...Melde mich...

                                    Hier mal ein Blockly als Bsp.
                                    common.Skript_104.xml

                                    Unter Aktion gibt es noch ein Blockly womit du die Datei einlesen kannst und dann per Telegram versenden.

                                    Screenshot 2025-01-11 115818.png
                                    Der Blockly Data hat dann das Attachment.

                                    Gruß//Lucky

                                    falke69F Offline
                                    falke69F Offline
                                    falke69
                                    schrieb am zuletzt editiert von
                                    #373

                                    @lucky_esa

                                    Perfekt!
                                    Funktioniert wunderbar.
                                    Jetzt bekomme ich wieder meine Nachrichten von der Fritzbox per Telegram.

                                    Ich wünsche Dir noch ein schönes Wochenende. 🙂

                                    David G.D 1 Antwort Letzte Antwort
                                    0
                                    • D3ltoroxpD Offline
                                      D3ltoroxpD Offline
                                      D3ltoroxp
                                      schrieb am zuletzt editiert von
                                      #374

                                      Hallo zusammen,

                                      funktioniert das auch mit einem outlook.office365.com ? Ich bekomme hier Login Fehler.

                                      	Fehler bei Host xxxx@xxxx.de - Error: LOGIN failed. - _login.
                                      

                                      cc0504fb-29dd-445e-aabc-628b9c4fc80b-image.png

                                      1ce89c64-9eb7-4dea-8a1e-93b7da0dbb5f-image.png

                                      Hab ich hier was falsch eingestellt oder geht das nicht wegen dem OAuth2 ?

                                      Ist allerdings nen Schulkonto für Teams. Würde hier gerne auf Nachrichten reagieren und mir Infos über Alexa ansagen lassen.

                                      L 1 Antwort Letzte Antwort
                                      0
                                      • D3ltoroxpD D3ltoroxp

                                        Hallo zusammen,

                                        funktioniert das auch mit einem outlook.office365.com ? Ich bekomme hier Login Fehler.

                                        	Fehler bei Host xxxx@xxxx.de - Error: LOGIN failed. - _login.
                                        

                                        cc0504fb-29dd-445e-aabc-628b9c4fc80b-image.png

                                        1ce89c64-9eb7-4dea-8a1e-93b7da0dbb5f-image.png

                                        Hab ich hier was falsch eingestellt oder geht das nicht wegen dem OAuth2 ?

                                        Ist allerdings nen Schulkonto für Teams. Würde hier gerne auf Nachrichten reagieren und mir Infos über Alexa ansagen lassen.

                                        L Online
                                        L Online
                                        Lucky_ESA
                                        Developer Most Active
                                        schrieb am zuletzt editiert von
                                        #375

                                        @d3ltoroxp

                                        Das funktioniert nicht mit einem Schulkonto. Wenn der Admin des Schulkonto dich frei gibt, dann kannst du dir einen Token erstellen. Die Daten können dann hier eingetragen werden.

                                        Screenshot 2025-01-24 174013.png

                                        D3ltoroxpD 1 Antwort Letzte Antwort
                                        0
                                        • L Lucky_ESA

                                          @d3ltoroxp

                                          Das funktioniert nicht mit einem Schulkonto. Wenn der Admin des Schulkonto dich frei gibt, dann kannst du dir einen Token erstellen. Die Daten können dann hier eingetragen werden.

                                          Screenshot 2025-01-24 174013.png

                                          D3ltoroxpD Offline
                                          D3ltoroxpD Offline
                                          D3ltoroxp
                                          schrieb am zuletzt editiert von D3ltoroxp
                                          #376

                                          @lucky_esa Wie bekommen das dann aber immer die normalen Mail Programme hin, wie Thunder, Better oder Outlook App ?
                                          Was muss er da frei geben ? Ich kann ja spaßhalber mal anfragen ?

                                          L 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          369

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe