Skip to content
  • Home
  • 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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Fehler im Script

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    23
    1
    1.3k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Fehler im Script

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 5 Kommentatoren 1.2k Aufrufe 1 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.
  • ChaotC Chaot

    @paul53
    Ok, habe das jetzt scheinbar fehlerfrei auf httpget umgestellt, laufe aber in den nächsten Fehler

    // Klingelscript
    // mit Alexa Routinenaufruf, Bilder erfassen, Versand an 2 Empfänger
    // Stand 06-2023
    
    const debug = false;
    //const cam_img = "http://192.168.xxxx:1984/api/frame.jpeg?src=door";
    const cam_img = "http://192.168.xxxx:8095/192_168_8_xxxxx"
    const img_path = '/opt/iobroker/iobroker-data/files/0_userdata.0';
    
    const fs = require('fs');
    
    var BildSequenz = 0;        // Sequenznummer 0:Bereit, 1: (0s) Bild1+Mail, 2: (+5s) Bild2+Mail, 3: (+10s) Bild3, 4: (+10s) Bild4
    var TBildsequenz = null;    // Timer-Objekt für die Bildsequenz
    var TVis = null;            // Timer um VIS umzuschalten
    
    
    on({id: 'sonoff.0.Eingang.POWER2', val: true}, function (obj) {
       
       // Benachrichtigung über Alexa das es geklingelt hat
       setState("alexa2.0.Echo-Devices.G2A0P3077406xxxx.Routines.11242dac-bf4b-4ab1-9521-37fdf5dae51d", true); //Klingelt auf Echo Theke
       setState("alexa2.0.Echo-Devices.G2A0P3077406xxxx.Routines.519a9af4-c186-4715-9e5d-cb4ac65c0c67", true); //Klingelt auf Dot Anrichte
       setState("onvif.0.192_168_8_xxxxx.remote.snapshot", true, false);
       setState("tr-064.0.states.ring"/*ring*/, '**610 ,20');
       // Soll jedesmal eine Bildsequenz neu gestartet werden, egal ob die vorherige Sequenz abgeschlossen ist, dann diesen Code:
       //BildSequenz = 0;
       //ErstelleBildsequenz();
       //
       // ...ODER soll das Speichern der Bildersequenz komplett abgeschlossen werden und auch ein erneuter Klingeldruck vorher keine neue
       // Sequenz auslösen dann diesen Code:
       if(debug) log("Bildsequenz: " + BildSequenz);
       if(BildSequenz == 0) ErstelleBildsequenz(); // Die Bildsequenz wird nur erstellt wenn vorherige Bildsequenz abgeschlossen ist
    });
    
    function ErstelleBildsequenz()
    {   if(BildSequenz == 0) BildSequenz=1;  // Bildsequenz
       if(debug) log("Bildsequenz: " + BildSequenz);
       // Bild von Cam holen
       httpGet(`http://192.168.xxxx:8095/192_168_8_xxxxx`, { responseType: 'arraybuffer' }, (err, response) => {
       if (err) {
               // Beim holen des Bildes von der Kamera ist ein Fehler aufgetreten
               log('Beim holen des Bildes von der Kamera ist ein Fehler aufgetreten: ' + err);
               BildSequenz = 0; // Die Bildsequenz zurück setzen
           } else
           {   // Bild wurde von der Kamera geladen. Jetzt speichern wir das Bild 
               fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', 'binary', function(err) {
                   if (err) {
                       // Beim Speichern des Bildes ist ein Fehler aufgetreten
                       log('Fehler beim Speichern von Bild ' + img_path + '/alarm' + BildSequenz + '.jpg   Fehler:' + err, 'warn');
                       BildSequenz = 0; // Die Bildsequenz zurück setzen
                   } else {
    
                        // Bild wurde jetzt gespeichert wir können das Bild jetzt weiterverarbeiten
                       switch(BildSequenz)
                       {   case 1: // Bild 1 direkt nach dem drücken des Klingelknopfes aufnehmen und per Mail verschicken
                               // Vis umschalten: Setze View auf Kamerabild
                               if(debug) log(" 1 Bildsequenz: " + BildSequenz);
                               setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Touch/Tuer"}'); 
                               if(TVis) clearTimeout(TVis); // Falls noch ein Timer läuft, diesen beenden.
                               TVis = setTimeout(function () {
                                           setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Touch/Info"}');
       			                    }, 60000); // Nach 60 Sekunden, zeige wieder Start View
                               
                               // Nächstes Bild soll nach 5s aufgenommen werden
                               BildSequenz = 2;                          
                               if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen
                               TBildsequenz = setTimeout(function(){ErstelleBildsequenz();}, 5000);
                               break;                            
                           case 2: // Bild 2, 5s nach dem drücken des Klingelknopfes aufnehmen und per Mail verschicken
                               // Bild per Mail verschicken
                               if(debug) log(" 2 Bildsequenz: " + BildSequenz);
                               
                               // Nächstes Bild soll nach 10s aufgenommen werden                            
                               BildSequenz = 3;
                               if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen                           
                               TBildsequenz = setTimeout(function(){ErstelleBildsequenz();}, 10000);
                               break;                         
                           case 3: // Bild 3 soll nach weiteren 10s gespeichert werden
                               
                               // Nächstes Bild soll nach 10s aufgenommen werden
                               if(debug) log(" 3 Bildsequenz: " + BildSequenz);                                                  
                               BildSequenz = 4;
                               if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen
                               TBildsequenz = setTimeout(function(){ErstelleBildsequenz();}, 10000);
                               break;                                                    
                           case 4: // Bild 4 soll nach weiteren 10s gespeichert werden
                               
                               // Damit ist die Sequenz beendet und die Klingel ist wieder bereit
                               if(debug) log(" 4 Bildsequenz: " + BildSequenz);
                               sendTo("email", "send", {
                                       text: '',
                                       to: 'xxxx@gmail.com',
                                       subject: 'Klingel',
                                       attachments:[{path: img_path + '/alarm1.jpg', cid: "file1"},{path: img_path + '/alarm2.jpg', cid: "file2"},{path: img_path + '/alarm3.jpg', cid: "file3"},{path: img_path + '/alarm4.jpg', cid: "file4"},] });
                               sendTo("email", "send", {
                                       text: '',
                                       to: 'xxxxx@gmail.com',
                                       subject: 'Klingel',
                                       attachments:[{path: img_path + '/alarm1.jpg', cid: "file1"},{path: img_path + '/alarm2.jpg', cid: "file2"},{path: img_path + '/alarm3.jpg', cid: "file3"},{path: img_path + '/alarm4.jpg', cid: "file4"},] });
                               
                               BildSequenz = 0;
                               if(TBildsequenz) clearTimeout(TBildsequenz);  // Falls es einen Timer gibt, diesen erst mal löschen
                            break;
                           default:
                               // Nicht bekannter Sequenzschritt bzw. es gab einen Fehler beim holen oder speichern 
                           break;
                       };
                   };
               });
           };
       });
    }
    

    javascript.0 2024-07-07 12:22:35.274	error	at processTicksAndRejections (node:internal/process/task_queues:95:5)
    javascript.0 2024-07-07 12:22:35.274	error	at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1203:38
    javascript.0 2024-07-07 12:22:35.274	error	at Object.<anonymous> (script.js.Klingel.Klingelsequenz:46:16)
    javascript.0 2024-07-07 12:22:35.274	error	at ProtectFs.writeFile (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:70:9)
    javascript.0 2024-07-07 12:22:35.273	error	at checkProtected (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:21:19)
    javascript.0 2024-07-07 12:22:35.273	error	Error in callback: Error: Permission denied
    javascript.0 2024-07-07 12:22:35.265	error	May not read /opt/iobroker/iobroker-data/files/0_userdata.0/alarm1.jpg - use writeFile instead
    
    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #8

    @chaot sagte: nächsten Fehler

    In Zeile 45 fehlen die zu schreibenden Daten.

               fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', response.data, 'binary', function(err) {
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    ChaotC 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @chaot sagte: nächsten Fehler

      In Zeile 45 fehlen die zu schreibenden Daten.

                 fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', response.data, 'binary', function(err) {
      
      ChaotC Offline
      ChaotC Offline
      Chaot
      schrieb am zuletzt editiert von
      #9

      @paul53 sagte in Fehler im Script:

      response.data,

      Danke, das habe ich ergänzt. Aber ich denke, dass ich da irrgendein Rechteproblem habe.

      javascript.0
      2024-07-07 16:53:14.346	error	at processTicksAndRejections (node:internal/process/task_queues:95:5)
      javascript.0
      2024-07-07 16:53:14.346	error	at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1203:38
      javascript.0
      2024-07-07 16:53:14.345	error	at Object.<anonymous> (script.js.Klingel.Klingelsequenz:46:16)
      javascript.0
      2024-07-07 16:53:14.345	error	at ProtectFs.writeFile (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:70:9)
      javascript.0
      2024-07-07 16:53:14.344	error	at checkProtected (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:21:19)
      javascript.0
      2024-07-07 16:53:14.343	error	Error in callback: Error: Permission denied
      javascript.0
      2024-07-07 16:53:14.335	error	May not read /opt/iobroker/iobroker-data/files/0_userdata.0/alarm1.jpg - use writeFile instead
      

      Zeile 12 "premission denied"

      ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

      T 1 Antwort Letzte Antwort
      0
      • ChaotC Chaot

        @paul53 sagte in Fehler im Script:

        response.data,

        Danke, das habe ich ergänzt. Aber ich denke, dass ich da irrgendein Rechteproblem habe.

        javascript.0
        2024-07-07 16:53:14.346	error	at processTicksAndRejections (node:internal/process/task_queues:95:5)
        javascript.0
        2024-07-07 16:53:14.346	error	at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1203:38
        javascript.0
        2024-07-07 16:53:14.345	error	at Object.<anonymous> (script.js.Klingel.Klingelsequenz:46:16)
        javascript.0
        2024-07-07 16:53:14.345	error	at ProtectFs.writeFile (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:70:9)
        javascript.0
        2024-07-07 16:53:14.344	error	at checkProtected (/opt/iobroker/node_modules/iobroker.javascript/lib/protectFs.js:21:19)
        javascript.0
        2024-07-07 16:53:14.343	error	Error in callback: Error: Permission denied
        javascript.0
        2024-07-07 16:53:14.335	error	May not read /opt/iobroker/iobroker-data/files/0_userdata.0/alarm1.jpg - use writeFile instead
        

        Zeile 12 "premission denied"

        T Offline
        T Offline
        TT-Tom
        schrieb am zuletzt editiert von TT-Tom
        #10

        @chaot

        Ja es gibt jetzt richtige schreib- und lese- Rechte in den Verzeichnissen. Die gab es vorher auch schon, wurden nur nicht konsequent kontrolliert.

        Mit dem neuen JavaScript Adapter ist vieles erweitert worden. Es gab hier schon Beiträge zum Schreiben in Verzeichnisse.

        Edit. Hier was zum lesen

        Gruß Tom
        https://github.com/tt-tom17
        Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

        NSPanel Script Wiki
        https://github.com/joBr99/nspanel-lovelace-ui/wiki

        NSPanel Adapter Wiki
        https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

        ChaotC 1 Antwort Letzte Antwort
        0
        • T TT-Tom

          @chaot

          Ja es gibt jetzt richtige schreib- und lese- Rechte in den Verzeichnissen. Die gab es vorher auch schon, wurden nur nicht konsequent kontrolliert.

          Mit dem neuen JavaScript Adapter ist vieles erweitert worden. Es gab hier schon Beiträge zum Schreiben in Verzeichnisse.

          Edit. Hier was zum lesen

          ChaotC Offline
          ChaotC Offline
          Chaot
          schrieb am zuletzt editiert von
          #11

          @tt-tom Hm, ok. Ich dachte, dass sich das nur auf Systemordner bezieht. In den Ordner 0_userdata.0 müsste ich doch schreiben können. Der ist doch dazu da oder verstehe ich das falsch?
          Oder anders gefragt: Wo kann ich das hinschreiben?

          ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

          T HomoranH 2 Antworten Letzte Antwort
          0
          • ChaotC Chaot

            @tt-tom Hm, ok. Ich dachte, dass sich das nur auf Systemordner bezieht. In den Ordner 0_userdata.0 müsste ich doch schreiben können. Der ist doch dazu da oder verstehe ich das falsch?
            Oder anders gefragt: Wo kann ich das hinschreiben?

            T Offline
            T Offline
            TT-Tom
            schrieb am zuletzt editiert von
            #12

            @chaot

            Bin leider nur am Handy unterwegs. Aber soviel wie ich noch weiß, hat fs nicht alle Rechte oder schreib es nicht richtig. Es gibt aber dafür Befehle, glaube writeFile oder so. Schau mal in die Doku vom Adapter.

            Gruß Tom
            https://github.com/tt-tom17
            Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

            NSPanel Script Wiki
            https://github.com/joBr99/nspanel-lovelace-ui/wiki

            NSPanel Adapter Wiki
            https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

            1 Antwort Letzte Antwort
            0
            • ChaotC Chaot

              @tt-tom Hm, ok. Ich dachte, dass sich das nur auf Systemordner bezieht. In den Ordner 0_userdata.0 müsste ich doch schreiben können. Der ist doch dazu da oder verstehe ich das falsch?
              Oder anders gefragt: Wo kann ich das hinschreiben?

              HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #13

              @chaot sagte in Fehler im Script:

              Wo kann ich das hinschreiben?

              nicht das wo ist das Problem sondern das wie!

              @chaot sagte in Fehler im Script:

              use writeFile instead

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              T ChaotC 2 Antworten Letzte Antwort
              1
              • HomoranH Homoran

                @chaot sagte in Fehler im Script:

                Wo kann ich das hinschreiben?

                nicht das wo ist das Problem sondern das wie!

                @chaot sagte in Fehler im Script:

                use writeFile instead

                T Offline
                T Offline
                TT-Tom
                schrieb am zuletzt editiert von
                #14

                @homoran sagte in Fehler im Script:

                @chaot sagte in Fehler im Script:

                use writeFile instead

                Sag ich ja irgendwas war da. 😁

                Gruß Tom
                https://github.com/tt-tom17
                Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                NSPanel Script Wiki
                https://github.com/joBr99/nspanel-lovelace-ui/wiki

                NSPanel Adapter Wiki
                https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                1 Antwort Letzte Antwort
                0
                • HomoranH Homoran

                  @chaot sagte in Fehler im Script:

                  Wo kann ich das hinschreiben?

                  nicht das wo ist das Problem sondern das wie!

                  @chaot sagte in Fehler im Script:

                  use writeFile instead

                  ChaotC Offline
                  ChaotC Offline
                  Chaot
                  schrieb am zuletzt editiert von
                  #15

                  @homoran
                  Ist das nicht so?

                   fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', 'binary', function(err) {
                  

                  ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • ChaotC Chaot

                    @homoran
                    Ist das nicht so?

                     fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', 'binary', function(err) {
                    
                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von paul53
                    #16

                    @chaot sagte: Ist das nicht so?

                    Es gibt inzwischen eine Funktion writeFile() des Javascript-Adapters.
                    Außerdem fehlen in der gezeigten Zeile wieder die zu schreibenden Daten.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    ChaotC 1 Antwort Letzte Antwort
                    1
                    • paul53P paul53

                      @chaot sagte: Ist das nicht so?

                      Es gibt inzwischen eine Funktion writeFile() des Javascript-Adapters.
                      Außerdem fehlen in der gezeigten Zeile wieder die zu schreibenden Daten.

                      ChaotC Offline
                      ChaotC Offline
                      Chaot
                      schrieb am zuletzt editiert von
                      #17

                      @paul53 Ach so.
                      Kann ich das dann einfach ersetzen?
                      aus

                       fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', response.data, 'binary', function(err) {
                      

                      wird

                       writeFile(img_path+'/alarm' + BildSequenz + '.jpg', response.data, 'binary', function(err) {
                      

                      ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • ChaotC Chaot

                        @paul53 Ach so.
                        Kann ich das dann einfach ersetzen?
                        aus

                         fs.writeFile(img_path+'/alarm' + BildSequenz + '.jpg', response.data, 'binary', function(err) {
                        

                        wird

                         writeFile(img_path+'/alarm' + BildSequenz + '.jpg', response.data, 'binary', function(err) {
                        
                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #18

                        @chaot sagte: Kann ich das dann einfach ersetzen?

                        Keine Ahnung. Ich habe die Funktion writeFile() noch nicht benutzt.

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

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


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        786

                        Online

                        32.5k

                        Benutzer

                        81.7k

                        Themen

                        1.3m

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

                        • Du hast noch kein Konto? Registrieren

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