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. [Gelöst] Speicherort eigene Dateien/Files ?

NEWS

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

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

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

[Gelöst] Speicherort eigene Dateien/Files ?

Geplant Angeheftet Gesperrt Verschoben JavaScript
37 Beiträge 7 Kommentatoren 4.4k Aufrufe 7 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.
  • wendy2702W wendy2702

    @mcu Wie oben geschrieben habe ich das directory nicht:

    @mcu sagte in Speicherort eigene Dateien/Files ?:

    0_userdata.0

    Keine Ahnung warum nicht und auch nicht wann es erzeugt wird.

    Unter Objekten gibt es den Ordner ja:

    58d22ea0-67cf-45a6-a962-7e0e5ee85c3f-grafik.png

    haus-automatisierungH Offline
    haus-automatisierungH Offline
    haus-automatisierung
    Developer Most Active
    schrieb am zuletzt editiert von
    #17

    @wendy2702 sagte in Speicherort eigene Dateien/Files ?:

    Keine Ahnung warum nicht und auch nicht wann es erzeugt wird.

    Unter Objekten gibt es den Ordner ja:

    58d22ea0-67cf-45a6-a962-7e0e5ee85c3f-grafik.png

    Objekte vom Typ folder "enthalten" nur andere Objekte (bzw. bilden eine Objekt-Hierarchie ab). Das hat nichts mit Dateien zu tun. Du hast nur das Meta-Objekt. Alles weitere passiert im Dateien-Tab. Bitte nicht Objekte mit Dateien verwechseln.

    Ansonsten sind in der Dokumentation Beispiele. Du kannst mit node:fs natürlich aus anderen Quellen im Dateisystem Daten lesen und diese dann im ioBroker speichern. Aber eben mit writeFile unter Angabe des Meta-Objektes (wird null übergeben, gibt es einen Fallback auf 0_userdata.0).

    https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#writefile

    Ich habe das im ioBroker Master Kurs ausführlich rauf und runter erklärt wo wann welche Dateien liegen und warum man nicht direkt in /opt/iobroker/iobroker-data/files/ schreiben sollte. Macht man das, wird die Datei trotzdem nicht im Dateien-Tab auftauchen (weil die Metadaten fehlen, welche zu der Datei normalerweise geschrieben werden).

    Und mach mal den Expertenmodus aus. Den braucht man in 99% der Fälle nicht.

    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
    📚 Meine inoffizielle ioBroker Dokumentation

    1 Antwort Letzte Antwort
    0
    • wendy2702W wendy2702

      Hi,

      Bis zu meinem heutigen Javascript Adapter update konnte ich eigene Dateien ja z.B. hier Speichern:

      /opt/iobroker/iobroker-data/files/_temp/eingangstuer/
      

      Jetzt ist der Zugriff ja verboten wenn ich z.B. aus einem Script dahin schreiben will.

      Was ist denn der empfohlene Ordner / Pfad ?

      EDIT: Und ist es richtig das ich hier auch keine Ordner mehr per Datei Manager erstellen kann?
      0e482c1e-35f4-432d-b99b-eae9432e5bc0-grafik.png

      Thx.

      BananaJoeB Offline
      BananaJoeB Offline
      BananaJoe
      Most Active
      schrieb am zuletzt editiert von
      #18

      @wendy2702 bevor es zu kompliziert wird: Wenn ich das richtig sehe, speicherst du ein Bild der Kamera um es per Telegram zu senden?

      Dann nimm doch als Pfad einfach
      /tmp/NamedesBildes

      Der /tmp ordner ist dafür da, ich mache das auch mit den Bilder per Telegram und speichere dort.
      Nach einem reboot ist der Ordner halt leer, das Bild muss aber ja auch keinen reboot überleben.

      Anders wäre es wenn du das Bild auch noch in der VIS verwenden wolltest.

      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

      wendy2702W 1 Antwort Letzte Antwort
      1
      • BananaJoeB BananaJoe

        @wendy2702 bevor es zu kompliziert wird: Wenn ich das richtig sehe, speicherst du ein Bild der Kamera um es per Telegram zu senden?

        Dann nimm doch als Pfad einfach
        /tmp/NamedesBildes

        Der /tmp ordner ist dafür da, ich mache das auch mit den Bilder per Telegram und speichere dort.
        Nach einem reboot ist der Ordner halt leer, das Bild muss aber ja auch keinen reboot überleben.

        Anders wäre es wenn du das Bild auch noch in der VIS verwenden wolltest.

        wendy2702W Offline
        wendy2702W Offline
        wendy2702
        schrieb am zuletzt editiert von
        #19

        @bananajoe Hi,

        Danke für die einfache Lösung.

        Mittlerweile hat mein Sohn sich der Sache angenommen und das Script direkt von "request" befreit.

        @haus-automatisierung sagte in Speicherort eigene Dateien/Files ?:

        Ich habe das im ioBroker Master Kurs ausführlich rauf und runter erklärt wo wann welche Dateien liegen und warum man nicht direkt in /opt/iobroker/iobroker-data/files/ schreiben sollte. Macht man das, wird die Datei trotzdem nicht im Dateien-Tab auftauchen (weil die Metadaten fehlen, welche zu der Datei normalerweise geschrieben werden).

        Ja, das mag sein aber wenn ein Script so seit 2017 lief und es jetzt erst die restriktionen gibt ist das für nicht Javascript affine wie mich ein Problem.

        Jetzt werden die Bilder in userdata ordner bzw. weiteren unterordnern gespeichert.

        Allerdings erschließt sich mir hier noch nicht die logik warum die nur solange sichtbar sind wie da eine Datei drin liegt.

        Aber das ist ein anderes Thema.

        Bitte keine Fragen per PN, die gehören ins Forum!

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

        M haus-automatisierungH 2 Antworten Letzte Antwort
        0
        • wendy2702W wendy2702

          @bananajoe Hi,

          Danke für die einfache Lösung.

          Mittlerweile hat mein Sohn sich der Sache angenommen und das Script direkt von "request" befreit.

          @haus-automatisierung sagte in Speicherort eigene Dateien/Files ?:

          Ich habe das im ioBroker Master Kurs ausführlich rauf und runter erklärt wo wann welche Dateien liegen und warum man nicht direkt in /opt/iobroker/iobroker-data/files/ schreiben sollte. Macht man das, wird die Datei trotzdem nicht im Dateien-Tab auftauchen (weil die Metadaten fehlen, welche zu der Datei normalerweise geschrieben werden).

          Ja, das mag sein aber wenn ein Script so seit 2017 lief und es jetzt erst die restriktionen gibt ist das für nicht Javascript affine wie mich ein Problem.

          Jetzt werden die Bilder in userdata ordner bzw. weiteren unterordnern gespeichert.

          Allerdings erschließt sich mir hier noch nicht die logik warum die nur solange sichtbar sind wie da eine Datei drin liegt.

          Aber das ist ein anderes Thema.

          M Online
          M Online
          MCU
          schrieb am zuletzt editiert von
          #20

          @wendy2702 Dann stell bitte das fertige Script rein, damit andere die auf den Post stoßen den richtigen Ansatz haben. Danke.

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          1 Antwort Letzte Antwort
          1
          • wendy2702W Offline
            wendy2702W Offline
            wendy2702
            schrieb am zuletzt editiert von wendy2702
            #21

            Hier mal das Script, ist noch nicht komplett "aufgeräumt" aber da es morgen Früh auf Tour geht ist dafür jetzt keine Zeit mehr.

            
            
            // -------------------------------------------------------------------------
            // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
            // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
            // dieses via Telegram.0-Adapter.
            // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
            // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
            
            // -------------------------------------------------------------------------
             
            // -------------------------------------------------------------------------
            // Konfiguration
            // -------------------------------------------------------------------------
            const adapterId = "0_userdata.0";
            const adapterDir = `/opt/iobroker/iobroker-data/files/${adapterId}`;
            
            // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
            const imageDir = '/cameras/garage_klein_einfahrt'
            // Prefix für die Bildnamen
            const imageNamePrefix = "Garage_Klein_Einfahrt"; 
            
            
                  // Objekt-ID des Bewegungsmelders
            const oidLichtBewmelderTuer = "alias.0.Bewegungsmelder.Bewegungsmelder_Garage_Klein";
                  // URL zur Kamera umn ein Image (jpg) zu erhalten
            const cam_url = "http://192.168.178.212/Streaming/channels/1/picture";
                  // Anzahl der Bilder, die vorgehalten werden sollen
            const imageCountMax = 8;
            
            const cameraUsername = "mxxxxe";
            const cameraPassword = "ixxxx8";
            
             
            // -------------------------------------------------------------------------
            // Scriptteil
            // -------------------------------------------------------------------------
            const axios = require("axios");
            const fs = require("fs");
             
            // Bild an telegram schicken 
            function sendImage (path) { 
                try {
                    var stats = fs.statSync(path);
                    var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
            
                    sendTo('telegram.0', {
                        text:                   path,
                        caption:                msg, 
                        disable_notification:   true,
                        user: 'Mirko',
                    });
                }
                catch(err) { if (err.code != "ENOENT") log(err); }     
            }
             
            
             
            // Bild speichern und senden
            function saveImage() {
                // Bild imageCountMax-1 löschen
                delFile(adapterId, `${imageDir}/${imageNamePrefix}${imageCountMax - 1}.jpg`, function(err) {
                    if (err) {
                        log("Fehler beim löschen des alten Bildes: " + err);
                    }
                });
            
                // Bilder 0..imageCountMax-2 umbenennen
                for (var i = imageCountMax - 2; i >= 0; i-- ) {
                    renameFile(adapterId, `${imageDir}/${imageNamePrefix}${i}.jpg`, `${imageDir}/${imageNamePrefix}${i + 1}.jpg`, function (err) {
                        if (err) {
                            log("Fehler beim umbennen: " + err, "error")
                        }
                    })
                }
            
                const latestFilePath = `${imageDir}/${imageNamePrefix}0.jpg`
                axios(
                    cam_url,
                    {
                        responseType: "arraybuffer",
                        auth: {
                            username: cameraUsername,
                            password: cameraPassword
                        }
                    }
                )
                    .then(response => {
                        writeFile(adapterId,  latestFilePath, response.data, function(err) {
                            if (err) {
                                log('Fehler beim Bild speichern: ' + err, 'warn');
                            } else {
                                sendImage(`${adapterDir}${latestFilePath}`);
                            }
                        }); 
                    });
            }
             
            // sofort ein Bild senden und nach 3 Sek erneut
            //function onEvent() {
            //    saveImage();
            //    setTimeout(function() { saveImage(); }, 10 * 300); 
            //}
             
            // sofort ein Bild senden und nach 3 Sek erneut
            function onEvent() {
                saveImage();
                setTimeout(function() { saveImage(); }, 3 * 1000);
                setTimeout(function() { saveImage(); }, 6 * 1000);
                setTimeout(function() { saveImage(); }, 9 * 1000);
            }
             
            on({ id: 'alias.0.Bewegungsmelder.Bewegungsmelder_Garage_Klein', change: "ne" }, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                if (getState("alias.0.Bewegungsmelder.Bewegungsmelder_Garage_Klein").val === true)
                    onEvent();
            });
             
            // manuelle Ausführung (Test)
            //onEvent();
            
            
            

            Bitte keine Fragen per PN, die gehören ins Forum!

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

            lobomauL 1 Antwort Letzte Antwort
            1
            • wendy2702W wendy2702

              @bananajoe Hi,

              Danke für die einfache Lösung.

              Mittlerweile hat mein Sohn sich der Sache angenommen und das Script direkt von "request" befreit.

              @haus-automatisierung sagte in Speicherort eigene Dateien/Files ?:

              Ich habe das im ioBroker Master Kurs ausführlich rauf und runter erklärt wo wann welche Dateien liegen und warum man nicht direkt in /opt/iobroker/iobroker-data/files/ schreiben sollte. Macht man das, wird die Datei trotzdem nicht im Dateien-Tab auftauchen (weil die Metadaten fehlen, welche zu der Datei normalerweise geschrieben werden).

              Ja, das mag sein aber wenn ein Script so seit 2017 lief und es jetzt erst die restriktionen gibt ist das für nicht Javascript affine wie mich ein Problem.

              Jetzt werden die Bilder in userdata ordner bzw. weiteren unterordnern gespeichert.

              Allerdings erschließt sich mir hier noch nicht die logik warum die nur solange sichtbar sind wie da eine Datei drin liegt.

              Aber das ist ein anderes Thema.

              haus-automatisierungH Offline
              haus-automatisierungH Offline
              haus-automatisierung
              Developer Most Active
              schrieb am zuletzt editiert von
              #22

              @wendy2702 sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

              Ja, das mag sein aber wenn ein Script so seit 2017 lief und es jetzt erst die restriktionen gibt ist das für nicht Javascript affine wie mich ein Problem.

              Verstehe ich, aber die Restriktionen auf das .../files/ Verzeichnis gab es schon immer - nur waren diese nicht vollständig umgesetzt. Und es war auch noch nie richtig da manuell mit node:fs zu schreiben.

              @wendy2702 sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

              Allerdings erschließt sich mir hier noch nicht die logik warum die nur solange sichtbar sind wie da eine Datei drin liegt.

              Du meinst im Dateien-Tab?

              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
              📚 Meine inoffizielle ioBroker Dokumentation

              wendy2702W 1 Antwort Letzte Antwort
              0
              • haus-automatisierungH haus-automatisierung

                @wendy2702 sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

                Ja, das mag sein aber wenn ein Script so seit 2017 lief und es jetzt erst die restriktionen gibt ist das für nicht Javascript affine wie mich ein Problem.

                Verstehe ich, aber die Restriktionen auf das .../files/ Verzeichnis gab es schon immer - nur waren diese nicht vollständig umgesetzt. Und es war auch noch nie richtig da manuell mit node:fs zu schreiben.

                @wendy2702 sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

                Allerdings erschließt sich mir hier noch nicht die logik warum die nur solange sichtbar sind wie da eine Datei drin liegt.

                Du meinst im Dateien-Tab?

                wendy2702W Offline
                wendy2702W Offline
                wendy2702
                schrieb am zuletzt editiert von
                #23

                @haus-automatisierung ja, im Dateien tab.

                Warum ist das so bzw. Wofür soll das gut sein?

                Einmal versehentlich tab geschlossen oder refresh und der/die Ordner sind wieder weg.

                Bitte keine Fragen per PN, die gehören ins Forum!

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

                haus-automatisierungH 1 Antwort Letzte Antwort
                0
                • wendy2702W wendy2702

                  @haus-automatisierung ja, im Dateien tab.

                  Warum ist das so bzw. Wofür soll das gut sein?

                  Einmal versehentlich tab geschlossen oder refresh und der/die Ordner sind wieder weg.

                  haus-automatisierungH Offline
                  haus-automatisierungH Offline
                  haus-automatisierung
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #24

                  @wendy2702 sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

                  @haus-automatisierung ja, im Dateien tab.

                  Du kannst hier umschalten, ob leere Ordner ausgeblendet werden sollen:

                  Screenshot 2024-05-09 at 09.09.51.png

                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                  📚 Meine inoffizielle ioBroker Dokumentation

                  wendy2702W 2 Antworten Letzte Antwort
                  0
                  • haus-automatisierungH haus-automatisierung

                    @wendy2702 sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

                    @haus-automatisierung ja, im Dateien tab.

                    Du kannst hier umschalten, ob leere Ordner ausgeblendet werden sollen:

                    Screenshot 2024-05-09 at 09.09.51.png

                    wendy2702W Offline
                    wendy2702W Offline
                    wendy2702
                    schrieb am zuletzt editiert von
                    #25

                    @haus-automatisierung das meine ich nicht.

                    Bin aber jetzt unterwegs.

                    Zeige ich morgen.

                    Bitte keine Fragen per PN, die gehören ins Forum!

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

                    1 Antwort Letzte Antwort
                    0
                    • haus-automatisierungH haus-automatisierung

                      @wendy2702 sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

                      @haus-automatisierung ja, im Dateien tab.

                      Du kannst hier umschalten, ob leere Ordner ausgeblendet werden sollen:

                      Screenshot 2024-05-09 at 09.09.51.png

                      wendy2702W Offline
                      wendy2702W Offline
                      wendy2702
                      schrieb am zuletzt editiert von
                      #26

                      @haus-automatisierung Ich meine das hier:

                      747263aa-a67c-4bb3-8674-2e19f0c2af28-grafik.png

                      Bitte keine Fragen per PN, die gehören ins Forum!

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

                      1 Antwort Letzte Antwort
                      0
                      • wendy2702W wendy2702

                        Hier mal das Script, ist noch nicht komplett "aufgeräumt" aber da es morgen Früh auf Tour geht ist dafür jetzt keine Zeit mehr.

                        
                        
                        // -------------------------------------------------------------------------
                        // Dieses Script überwaht den Zustand eines Bewegungsmelders und speichert bei
                        // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
                        // dieses via Telegram.0-Adapter.
                        // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
                        // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
                        
                        // -------------------------------------------------------------------------
                         
                        // -------------------------------------------------------------------------
                        // Konfiguration
                        // -------------------------------------------------------------------------
                        const adapterId = "0_userdata.0";
                        const adapterDir = `/opt/iobroker/iobroker-data/files/${adapterId}`;
                        
                        // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
                        const imageDir = '/cameras/garage_klein_einfahrt'
                        // Prefix für die Bildnamen
                        const imageNamePrefix = "Garage_Klein_Einfahrt"; 
                        
                        
                              // Objekt-ID des Bewegungsmelders
                        const oidLichtBewmelderTuer = "alias.0.Bewegungsmelder.Bewegungsmelder_Garage_Klein";
                              // URL zur Kamera umn ein Image (jpg) zu erhalten
                        const cam_url = "http://192.168.178.212/Streaming/channels/1/picture";
                              // Anzahl der Bilder, die vorgehalten werden sollen
                        const imageCountMax = 8;
                        
                        const cameraUsername = "mxxxxe";
                        const cameraPassword = "ixxxx8";
                        
                         
                        // -------------------------------------------------------------------------
                        // Scriptteil
                        // -------------------------------------------------------------------------
                        const axios = require("axios");
                        const fs = require("fs");
                         
                        // Bild an telegram schicken 
                        function sendImage (path) { 
                            try {
                                var stats = fs.statSync(path);
                                var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
                        
                                sendTo('telegram.0', {
                                    text:                   path,
                                    caption:                msg, 
                                    disable_notification:   true,
                                    user: 'Mirko',
                                });
                            }
                            catch(err) { if (err.code != "ENOENT") log(err); }     
                        }
                         
                        
                         
                        // Bild speichern und senden
                        function saveImage() {
                            // Bild imageCountMax-1 löschen
                            delFile(adapterId, `${imageDir}/${imageNamePrefix}${imageCountMax - 1}.jpg`, function(err) {
                                if (err) {
                                    log("Fehler beim löschen des alten Bildes: " + err);
                                }
                            });
                        
                            // Bilder 0..imageCountMax-2 umbenennen
                            for (var i = imageCountMax - 2; i >= 0; i-- ) {
                                renameFile(adapterId, `${imageDir}/${imageNamePrefix}${i}.jpg`, `${imageDir}/${imageNamePrefix}${i + 1}.jpg`, function (err) {
                                    if (err) {
                                        log("Fehler beim umbennen: " + err, "error")
                                    }
                                })
                            }
                        
                            const latestFilePath = `${imageDir}/${imageNamePrefix}0.jpg`
                            axios(
                                cam_url,
                                {
                                    responseType: "arraybuffer",
                                    auth: {
                                        username: cameraUsername,
                                        password: cameraPassword
                                    }
                                }
                            )
                                .then(response => {
                                    writeFile(adapterId,  latestFilePath, response.data, function(err) {
                                        if (err) {
                                            log('Fehler beim Bild speichern: ' + err, 'warn');
                                        } else {
                                            sendImage(`${adapterDir}${latestFilePath}`);
                                        }
                                    }); 
                                });
                        }
                         
                        // sofort ein Bild senden und nach 3 Sek erneut
                        //function onEvent() {
                        //    saveImage();
                        //    setTimeout(function() { saveImage(); }, 10 * 300); 
                        //}
                         
                        // sofort ein Bild senden und nach 3 Sek erneut
                        function onEvent() {
                            saveImage();
                            setTimeout(function() { saveImage(); }, 3 * 1000);
                            setTimeout(function() { saveImage(); }, 6 * 1000);
                            setTimeout(function() { saveImage(); }, 9 * 1000);
                        }
                         
                        on({ id: 'alias.0.Bewegungsmelder.Bewegungsmelder_Garage_Klein', change: "ne" }, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            if (getState("alias.0.Bewegungsmelder.Bewegungsmelder_Garage_Klein").val === true)
                                onEvent();
                        });
                         
                        // manuelle Ausführung (Test)
                        //onEvent();
                        
                        
                        
                        lobomauL Offline
                        lobomauL Offline
                        lobomau
                        schrieb am zuletzt editiert von
                        #27

                        @wendy2702 ich hatte auch die alte Version im Einsatz, die nicht mehr funktioniert und versuche nun deine Version zu übernehmen.

                        wo liegt bei dir der Pfad

                        /cameras/garage_klein_einfahrt
                        

                        ?
                        hier hinter?

                        /opt/iobroker/iobroker-data/files/
                        

                        Und was muss ich in 0-userdata.0 machen... einen Datenpunkt anlegen?

                        Host: NUC8i3 mit Proxmox:

                        • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                        • Slave: Pi4
                        haus-automatisierungH wendy2702W 2 Antworten Letzte Antwort
                        0
                        • lobomauL lobomau

                          @wendy2702 ich hatte auch die alte Version im Einsatz, die nicht mehr funktioniert und versuche nun deine Version zu übernehmen.

                          wo liegt bei dir der Pfad

                          /cameras/garage_klein_einfahrt
                          

                          ?
                          hier hinter?

                          /opt/iobroker/iobroker-data/files/
                          

                          Und was muss ich in 0-userdata.0 machen... einen Datenpunkt anlegen?

                          haus-automatisierungH Offline
                          haus-automatisierungH Offline
                          haus-automatisierung
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #28

                          @lobomau sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

                          Und was muss ich in 0-userdata.0 machen... einen Datenpunkt anlegen?

                          Entweder direkt in das Dateisystem speichern (außerhalb von /opt/iobroker/iobroker-data/files/), ODER mit den ioBroker-Dateien arbeiten. Entweder oder. Anlegen musst Du nichts - das Meta-Objekt existiert in jeder Installation bereits.

                          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                          📚 Meine inoffizielle ioBroker Dokumentation

                          lobomauL 1 Antwort Letzte Antwort
                          0
                          • haus-automatisierungH haus-automatisierung

                            @lobomau sagte in [Gelöst] Speicherort eigene Dateien/Files ?:

                            Und was muss ich in 0-userdata.0 machen... einen Datenpunkt anlegen?

                            Entweder direkt in das Dateisystem speichern (außerhalb von /opt/iobroker/iobroker-data/files/), ODER mit den ioBroker-Dateien arbeiten. Entweder oder. Anlegen musst Du nichts - das Meta-Objekt existiert in jeder Installation bereits.

                            lobomauL Offline
                            lobomauL Offline
                            lobomau
                            schrieb am zuletzt editiert von lobomau
                            #29

                            LÄUFT korrekt! Fehler kommt natürlich beim ersten Mal wenn es die Datei noch nicht gibt. Beim zweiten Durchgang keine Fehlermeldung mehr ;-)

                            @haus-automatisierung Danke. Ich habe es in dieser Sekunde auch hinbekommen. Das Ergebnis ist perfekt, also Bilder an telegram und Ablegen der Dateien. Aber es gibt eine Fehlermeldung

                            javascript.1	19:44:38.010	error	script.js.common.Cam.FDT_neu2: Fehler beim umbennen: Error: Not exists
                            

                            Idee woran es liegt? Script:

                            // -------------------------------------------------------------------------
                            // Dieses Script überwacht den Zustand eines Bewegungsmelders und speichert bei
                            // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
                            // dieses via Telegram.0-Adapter.
                            // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
                            // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
                            
                            // -------------------------------------------------------------------------
                             
                            // -------------------------------------------------------------------------
                            // Konfiguration
                            // -------------------------------------------------------------------------
                            const adapterId = "0_userdata.0";
                            const adapterDir = `/opt/iobroker/iobroker-data/files/${adapterId}`;
                            
                            // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
                            //const imageDir = '/cameras/garage_klein_einfahrt'
                            const imageDir = '/cameras/fdt'
                            // Prefix für die Bildnamen
                            const imageNamePrefix = "FDT"; 
                            
                            
                                  // Objekt-ID des Bewegungsmelders
                            const oidLichtBewmelderTuer = "javascript.0.Variablen.FDT-detection";
                                  // URL zur Kamera umn ein Image (jpg) zu erhalten
                            const cam_url = "http://192.168.1.89/tmpfs/snap.jpg";
                                  // Anzahl der Bilder, die vorgehalten werden sollen
                            const imageCountMax = 8;
                            
                            const cameraUsername = "xxx";
                            const cameraPassword = "yyy";
                            
                             
                            // -------------------------------------------------------------------------
                            // Scriptteil
                            // -------------------------------------------------------------------------
                            const axios = require("axios");
                            const fs = require("fs");
                             
                            // Bild an telegram schicken 
                            function sendImage (path) { 
                                try {
                                    var stats = fs.statSync(path);
                                    var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
                            
                                    sendTo('telegram.0', {
                                        text:                   path,
                                        caption:                msg, 
                                        disable_notification:   true,
                                        user: 'lobomau',
                                    });
                                }
                                catch(err) { if (err.code != "ENOENT") log(err); }     
                            }
                             
                            
                             
                            // Bild speichern und senden
                            function saveImage() {
                                // Bild imageCountMax-1 löschen
                                delFile(adapterId, `${imageDir}/${imageNamePrefix}${imageCountMax - 1}.jpg`, function(err) {
                                    if (err) {
                                        log("Fehler beim löschen des alten Bildes: " + err);
                                    }
                                });
                            
                                // Bilder 0..imageCountMax-2 umbenennen
                                for (var i = imageCountMax - 2; i >= 0; i-- ) {
                                    renameFile(adapterId, `${imageDir}/${imageNamePrefix}${i}.jpg`, `${imageDir}/${imageNamePrefix}${i + 1}.jpg`, function (err) {
                                        if (err) {
                                            log("Fehler beim umbennen: " + err, "error")
                                        }
                                    })
                                }
                            
                                const latestFilePath = `${imageDir}/${imageNamePrefix}0.jpg`
                                axios(
                                    cam_url,
                                    {
                                        responseType: "arraybuffer",
                                        auth: {
                                            username: cameraUsername,
                                            password: cameraPassword
                                        }
                                    }
                                )
                                    .then(response => {
                                        writeFile(adapterId,  latestFilePath, response.data, function(err) {
                                            if (err) {
                                                log('Fehler beim Bild speichern: ' + err, 'warn');
                                            } else {
                                                sendImage(`${adapterDir}${latestFilePath}`);
                                            }
                                        }); 
                                    });
                            }
                             
                            // sofort ein Bild senden und nach 3 Sek erneut
                            //function onEvent() {
                            //    saveImage();
                            //    setTimeout(function() { saveImage(); }, 10 * 300); 
                            //}
                             
                            // sofort ein Bild senden und nach 3 Sek erneut
                            function onEvent() {
                                saveImage();
                                setTimeout(function() { saveImage(); }, 3 * 1000);
                                setTimeout(function() { saveImage(); }, 6 * 1000);
                                setTimeout(function() { saveImage(); }, 9 * 1000);
                            }
                             
                            on({ id: 'javascript.0.Variablen.FDT-detection', change: "ne" }, function (obj) {
                                var value = obj.state.val;
                                var oldValue = obj.oldState.val;
                                if (getState("javascript.0.Variablen.FDT-detection").val === true)
                                    onEvent();
                            });
                             
                            // manuelle Ausführung (Test)
                            //onEvent();
                            
                            
                            

                            Host: NUC8i3 mit Proxmox:

                            • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                            • Slave: Pi4
                            haus-automatisierungH 1 Antwort Letzte Antwort
                            0
                            • lobomauL lobomau

                              LÄUFT korrekt! Fehler kommt natürlich beim ersten Mal wenn es die Datei noch nicht gibt. Beim zweiten Durchgang keine Fehlermeldung mehr ;-)

                              @haus-automatisierung Danke. Ich habe es in dieser Sekunde auch hinbekommen. Das Ergebnis ist perfekt, also Bilder an telegram und Ablegen der Dateien. Aber es gibt eine Fehlermeldung

                              javascript.1	19:44:38.010	error	script.js.common.Cam.FDT_neu2: Fehler beim umbennen: Error: Not exists
                              

                              Idee woran es liegt? Script:

                              // -------------------------------------------------------------------------
                              // Dieses Script überwacht den Zustand eines Bewegungsmelders und speichert bei
                              // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
                              // dieses via Telegram.0-Adapter.
                              // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
                              // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
                              
                              // -------------------------------------------------------------------------
                               
                              // -------------------------------------------------------------------------
                              // Konfiguration
                              // -------------------------------------------------------------------------
                              const adapterId = "0_userdata.0";
                              const adapterDir = `/opt/iobroker/iobroker-data/files/${adapterId}`;
                              
                              // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
                              //const imageDir = '/cameras/garage_klein_einfahrt'
                              const imageDir = '/cameras/fdt'
                              // Prefix für die Bildnamen
                              const imageNamePrefix = "FDT"; 
                              
                              
                                    // Objekt-ID des Bewegungsmelders
                              const oidLichtBewmelderTuer = "javascript.0.Variablen.FDT-detection";
                                    // URL zur Kamera umn ein Image (jpg) zu erhalten
                              const cam_url = "http://192.168.1.89/tmpfs/snap.jpg";
                                    // Anzahl der Bilder, die vorgehalten werden sollen
                              const imageCountMax = 8;
                              
                              const cameraUsername = "xxx";
                              const cameraPassword = "yyy";
                              
                               
                              // -------------------------------------------------------------------------
                              // Scriptteil
                              // -------------------------------------------------------------------------
                              const axios = require("axios");
                              const fs = require("fs");
                               
                              // Bild an telegram schicken 
                              function sendImage (path) { 
                                  try {
                                      var stats = fs.statSync(path);
                                      var msg = formatDate(stats.birthtime,"DD.MM.YYYY hh:mm:ss") + " " + path.substring(path.lastIndexOf('/')+1);
                              
                                      sendTo('telegram.0', {
                                          text:                   path,
                                          caption:                msg, 
                                          disable_notification:   true,
                                          user: 'lobomau',
                                      });
                                  }
                                  catch(err) { if (err.code != "ENOENT") log(err); }     
                              }
                               
                              
                               
                              // Bild speichern und senden
                              function saveImage() {
                                  // Bild imageCountMax-1 löschen
                                  delFile(adapterId, `${imageDir}/${imageNamePrefix}${imageCountMax - 1}.jpg`, function(err) {
                                      if (err) {
                                          log("Fehler beim löschen des alten Bildes: " + err);
                                      }
                                  });
                              
                                  // Bilder 0..imageCountMax-2 umbenennen
                                  for (var i = imageCountMax - 2; i >= 0; i-- ) {
                                      renameFile(adapterId, `${imageDir}/${imageNamePrefix}${i}.jpg`, `${imageDir}/${imageNamePrefix}${i + 1}.jpg`, function (err) {
                                          if (err) {
                                              log("Fehler beim umbennen: " + err, "error")
                                          }
                                      })
                                  }
                              
                                  const latestFilePath = `${imageDir}/${imageNamePrefix}0.jpg`
                                  axios(
                                      cam_url,
                                      {
                                          responseType: "arraybuffer",
                                          auth: {
                                              username: cameraUsername,
                                              password: cameraPassword
                                          }
                                      }
                                  )
                                      .then(response => {
                                          writeFile(adapterId,  latestFilePath, response.data, function(err) {
                                              if (err) {
                                                  log('Fehler beim Bild speichern: ' + err, 'warn');
                                              } else {
                                                  sendImage(`${adapterDir}${latestFilePath}`);
                                              }
                                          }); 
                                      });
                              }
                               
                              // sofort ein Bild senden und nach 3 Sek erneut
                              //function onEvent() {
                              //    saveImage();
                              //    setTimeout(function() { saveImage(); }, 10 * 300); 
                              //}
                               
                              // sofort ein Bild senden und nach 3 Sek erneut
                              function onEvent() {
                                  saveImage();
                                  setTimeout(function() { saveImage(); }, 3 * 1000);
                                  setTimeout(function() { saveImage(); }, 6 * 1000);
                                  setTimeout(function() { saveImage(); }, 9 * 1000);
                              }
                               
                              on({ id: 'javascript.0.Variablen.FDT-detection', change: "ne" }, function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                  if (getState("javascript.0.Variablen.FDT-detection").val === true)
                                      onEvent();
                              });
                               
                              // manuelle Ausführung (Test)
                              //onEvent();
                              
                              
                              
                              haus-automatisierungH Offline
                              haus-automatisierungH Offline
                              haus-automatisierung
                              Developer Most Active
                              schrieb am zuletzt editiert von haus-automatisierung
                              #30

                              @lobomau Ja, das ganze Script ist viel zu kompliziert. Man baut keine Pfade zu 0_userdata.0 ins Dateisystem zusammen (bei Redis liegt da z.B. gar nichts an der Stelle). Alles mit node:fs muss da raus.

                              Schau das mal an:

                              https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#createtempfile

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              lobomauL 1 Antwort Letzte Antwort
                              0
                              • haus-automatisierungH haus-automatisierung

                                @lobomau Ja, das ganze Script ist viel zu kompliziert. Man baut keine Pfade zu 0_userdata.0 ins Dateisystem zusammen (bei Redis liegt da z.B. gar nichts an der Stelle). Alles mit node:fs muss da raus.

                                Schau das mal an:

                                https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#createtempfile

                                lobomauL Offline
                                lobomauL Offline
                                lobomau
                                schrieb am zuletzt editiert von
                                #31

                                @haus-automatisierung ich werde mir das mal anschauen und versuchen es "noch richtiger" zu machen.
                                Was ich aber jetzt schon sagen kann.... es scheint jetzt viel besser zu laufen... viel performanter... total verzögerungsfrei! :-)
                                Es hat sich geändert: request (deprecated) -> http Get, node 18 -> 20.

                                Host: NUC8i3 mit Proxmox:

                                • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                                • Slave: Pi4
                                haus-automatisierungH 1 Antwort Letzte Antwort
                                0
                                • lobomauL lobomau

                                  @haus-automatisierung ich werde mir das mal anschauen und versuchen es "noch richtiger" zu machen.
                                  Was ich aber jetzt schon sagen kann.... es scheint jetzt viel besser zu laufen... viel performanter... total verzögerungsfrei! :-)
                                  Es hat sich geändert: request (deprecated) -> http Get, node 18 -> 20.

                                  haus-automatisierungH Offline
                                  haus-automatisierungH Offline
                                  haus-automatisierung
                                  Developer Most Active
                                  schrieb am zuletzt editiert von haus-automatisierung
                                  #32

                                  @lobomau Ungetestet (nur im Forum programmiert), aber so in die Richtung:

                                  // -------------------------------------------------------------------------
                                  // Dieses Script überwacht den Zustand eines Bewegungsmelders und speichert bei
                                  // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
                                  // dieses via Telegram.0-Adapter.
                                  // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
                                  // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
                                  
                                  // v2.0 - 07.06.2024 - Umgebaut auf neue Funktionen von haus-automatisierung.com / Matthias Kleine
                                  
                                  // -------------------------------------------------------------------------
                                   
                                  // -------------------------------------------------------------------------
                                  // Konfiguration
                                  // -------------------------------------------------------------------------
                                  const adapterId = '0_userdata.0';
                                   
                                  // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
                                  const imageDir = '/cameras/fdt';
                                   
                                  // Prefix für die Bildnamen
                                  const imageNamePrefix = 'FDT';
                                   
                                  // Objekt-ID des Bewegungsmelders
                                  const oidLichtBewmelderTuer = 'javascript.0.Variablen.FDT-detection';
                                   
                                  // Anzahl der Bilder, die vorgehalten werden sollen
                                  const imageCountMax = 8;
                                   
                                  const camUrl = 'http://192.168.1.89/tmpfs/snap.jpg'; 
                                  const cameraUsername = 'xxx';
                                  const cameraPassword = 'yyy';
                                   
                                  // -------------------------------------------------------------------------
                                  // Scriptteil
                                  // -------------------------------------------------------------------------
                                   
                                  // Bild an telegram schicken
                                  function sendImage(path) { 
                                      try {
                                          const caption = `${formatDate(new Date(), 'DD.MM.YYYY hh:mm:ss')} ${path.substring(path.lastIndexOf('/') + 1)}`;
                                   
                                          sendTo('telegram.0', {
                                              text: path,
                                              caption, 
                                              disable_notification: true,
                                              user: 'lobomau',
                                          });
                                      } catch (err) {
                                          log(err);
                                      }
                                  }
                                   
                                  // Bild holen, speichern und senden
                                  async function saveImage() {
                                      const prefix = `${imageDir}/${imageNamePrefix}`;
                                   
                                      await delFileAsync(adapterId, `${prefix}${imageCountMax - 1}.jpg`);
                                   
                                      // Bilder 0..imageCountMax - 2 umbenennen
                                      for (let i = imageCountMax - 2; i >= 0; i-- ) {
                                          await renameFileAsync(adapterId, `${prefix}${i}.jpg`, `${prefix}${i + 1}.jpg`);
                                      }
                                   
                                      const latestFilePath = `${prefix}0.jpg`;
                                   
                                      httpGet(camUrl, {
                                          timeout: 2000,
                                          responseType: 'arraybuffer',
                                          basicAuth: {
                                              user: cameraUsername,
                                              password: cameraPassword,
                                          },
                                      },
                                      (error, response) => {
                                          if (!error) {
                                              writeFile(adapterId, latestFilePath, response.data, (err) => {
                                                  if (err) {
                                                      log('Fehler beim Bild speichern: ' + err, 'warn');
                                                  } else {
                                                      const tempFilePath = createTempFile(latestFilePath, response.data);
                                                      sendImage(tempFilePath);
                                                  }
                                              });
                                          } else {
                                              console.error(error);
                                          }
                                      });
                                  }
                                   
                                  on({ id: oidLichtBewmelderTuer, change: 'ne' }, async (obj) => {
                                      if (obj.state.val) {
                                          // sofort ein Bild senden und nach 3, 6 und 9 Sek erneut
                                          saveImage();
                                   
                                          setTimeout(saveImage, 3 * 1000);
                                          setTimeout(saveImage, 6 * 1000);
                                          setTimeout(saveImage, 9 * 1000);
                                      }
                                  });
                                  

                                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                  📚 Meine inoffizielle ioBroker Dokumentation

                                  lobomauL 1 Antwort Letzte Antwort
                                  1
                                  • lobomauL lobomau

                                    @wendy2702 ich hatte auch die alte Version im Einsatz, die nicht mehr funktioniert und versuche nun deine Version zu übernehmen.

                                    wo liegt bei dir der Pfad

                                    /cameras/garage_klein_einfahrt
                                    

                                    ?
                                    hier hinter?

                                    /opt/iobroker/iobroker-data/files/
                                    

                                    Und was muss ich in 0-userdata.0 machen... einen Datenpunkt anlegen?

                                    wendy2702W Offline
                                    wendy2702W Offline
                                    wendy2702
                                    schrieb am zuletzt editiert von
                                    #33

                                    @lobomau sorry baue gerade unser Gartenzimmer auf und schaue jetzt erst auf Handy.

                                    Hast es ja hinbekommen und sogar noch die Profi Version geliefert bekommen.

                                    Bitte keine Fragen per PN, die gehören ins Forum!

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

                                    1 Antwort Letzte Antwort
                                    1
                                    • haus-automatisierungH haus-automatisierung

                                      @lobomau Ungetestet (nur im Forum programmiert), aber so in die Richtung:

                                      // -------------------------------------------------------------------------
                                      // Dieses Script überwacht den Zustand eines Bewegungsmelders und speichert bei
                                      // Aktivierung ein Bild einer Überwachnungskamera in einem Vereichnis und sendet
                                      // dieses via Telegram.0-Adapter.
                                      // Die Speicherung der Bilder erfolgt als "Stack", d.h. das aktuellste Bild bekommt
                                      // immer den Suffix "0" und es werden n Bilder mit den Suffixen 1..n-1 vorgehalten
                                      
                                      // v2.0 - 07.06.2024 - Umgebaut auf neue Funktionen von haus-automatisierung.com / Matthias Kleine
                                      
                                      // -------------------------------------------------------------------------
                                       
                                      // -------------------------------------------------------------------------
                                      // Konfiguration
                                      // -------------------------------------------------------------------------
                                      const adapterId = '0_userdata.0';
                                       
                                      // Pfadangabe für die Speicherung der Bilder, der Pfad muss existieren
                                      const imageDir = '/cameras/fdt';
                                       
                                      // Prefix für die Bildnamen
                                      const imageNamePrefix = 'FDT';
                                       
                                      // Objekt-ID des Bewegungsmelders
                                      const oidLichtBewmelderTuer = 'javascript.0.Variablen.FDT-detection';
                                       
                                      // Anzahl der Bilder, die vorgehalten werden sollen
                                      const imageCountMax = 8;
                                       
                                      const camUrl = 'http://192.168.1.89/tmpfs/snap.jpg'; 
                                      const cameraUsername = 'xxx';
                                      const cameraPassword = 'yyy';
                                       
                                      // -------------------------------------------------------------------------
                                      // Scriptteil
                                      // -------------------------------------------------------------------------
                                       
                                      // Bild an telegram schicken
                                      function sendImage(path) { 
                                          try {
                                              const caption = `${formatDate(new Date(), 'DD.MM.YYYY hh:mm:ss')} ${path.substring(path.lastIndexOf('/') + 1)}`;
                                       
                                              sendTo('telegram.0', {
                                                  text: path,
                                                  caption, 
                                                  disable_notification: true,
                                                  user: 'lobomau',
                                              });
                                          } catch (err) {
                                              log(err);
                                          }
                                      }
                                       
                                      // Bild holen, speichern und senden
                                      async function saveImage() {
                                          const prefix = `${imageDir}/${imageNamePrefix}`;
                                       
                                          await delFileAsync(adapterId, `${prefix}${imageCountMax - 1}.jpg`);
                                       
                                          // Bilder 0..imageCountMax - 2 umbenennen
                                          for (let i = imageCountMax - 2; i >= 0; i-- ) {
                                              await renameFileAsync(adapterId, `${prefix}${i}.jpg`, `${prefix}${i + 1}.jpg`);
                                          }
                                       
                                          const latestFilePath = `${prefix}0.jpg`;
                                       
                                          httpGet(camUrl, {
                                              timeout: 2000,
                                              responseType: 'arraybuffer',
                                              basicAuth: {
                                                  user: cameraUsername,
                                                  password: cameraPassword,
                                              },
                                          },
                                          (error, response) => {
                                              if (!error) {
                                                  writeFile(adapterId, latestFilePath, response.data, (err) => {
                                                      if (err) {
                                                          log('Fehler beim Bild speichern: ' + err, 'warn');
                                                      } else {
                                                          const tempFilePath = createTempFile(latestFilePath, response.data);
                                                          sendImage(tempFilePath);
                                                      }
                                                  });
                                              } else {
                                                  console.error(error);
                                              }
                                          });
                                      }
                                       
                                      on({ id: oidLichtBewmelderTuer, change: 'ne' }, async (obj) => {
                                          if (obj.state.val) {
                                              // sofort ein Bild senden und nach 3, 6 und 9 Sek erneut
                                              saveImage();
                                       
                                              setTimeout(saveImage, 3 * 1000);
                                              setTimeout(saveImage, 6 * 1000);
                                              setTimeout(saveImage, 9 * 1000);
                                          }
                                      });
                                      
                                      lobomauL Offline
                                      lobomauL Offline
                                      lobomau
                                      schrieb am zuletzt editiert von
                                      #34

                                      @haus-automatisierung nochmals Danke für dein angepasstes Script. Leider kann ich nicht Programmieren und weiß nicht an welcher Stelle ich es für mich anpassen muss. Ich habe erstmal nur user und Passwort angepasst. Das führt dann zu folgendem Fehler, der mir auch nichts sagt:

                                      javascript.0	12:03:31.258	info	Stopping script script.js.common.Cam.FDT2
                                      javascript.1	12:03:31.365	error	script.js.common.Cam.FDT2 compile failed: at script.js.common.Cam.FDT2:104
                                      

                                      Host: NUC8i3 mit Proxmox:

                                      • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                                      • Slave: Pi4
                                      M 1 Antwort Letzte Antwort
                                      0
                                      • lobomauL lobomau

                                        @haus-automatisierung nochmals Danke für dein angepasstes Script. Leider kann ich nicht Programmieren und weiß nicht an welcher Stelle ich es für mich anpassen muss. Ich habe erstmal nur user und Passwort angepasst. Das führt dann zu folgendem Fehler, der mir auch nichts sagt:

                                        javascript.0	12:03:31.258	info	Stopping script script.js.common.Cam.FDT2
                                        javascript.1	12:03:31.365	error	script.js.common.Cam.FDT2 compile failed: at script.js.common.Cam.FDT2:104
                                        
                                        M Online
                                        M Online
                                        mrjeschke
                                        schrieb am zuletzt editiert von
                                        #35

                                        @lobomau
                                        Ich vermute mal das in Zeile 86 eine Klammer fehlt.
                                        Meiner Meinung müsste dort stehen

                                        )};
                                        
                                        lobomauL 1 Antwort Letzte Antwort
                                        2
                                        • M mrjeschke

                                          @lobomau
                                          Ich vermute mal das in Zeile 86 eine Klammer fehlt.
                                          Meiner Meinung müsste dort stehen

                                          )};
                                          
                                          lobomauL Offline
                                          lobomauL Offline
                                          lobomau
                                          schrieb am zuletzt editiert von
                                          #36

                                          @mrjeschke Bingo! Läuft jetzt. :-)

                                          Host: NUC8i3 mit Proxmox:

                                          • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                                          • Slave: Pi4
                                          bergjetB 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

                                          739

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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