Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. ESP32CAM Bilder mit Intervall auf FTP speichern

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ESP32CAM Bilder mit Intervall auf FTP speichern

    This topic has been deleted. Only users with topic management privileges can see it.
    • bärle
      bärle last edited by

      Hallo zusammen,
      ich habe eine ESP32CAM, auf die ich zugreifen kann und ein Stand-Bild erstellen kann über http://192.168.X.X/capture.
      Nun würde ich gerne dieses Bild per setInterval alle x Minuten auf meine Diskstation per FTP schreiben.
      Leider habe ich bisher nichts passendes gefunden und bin über jede Hilfe sehr dankbar.
      Danke & viele Grüße

      MartinP Codierknecht 2 Replies Last reply Reply Quote 0
      • MartinP
        MartinP @bärle last edited by

        @bärle Kannst Du denn lokal auf dem Iobroker die Bilddatei anlegen?

        Eine zweischrittige Vorgehensweise wäre da vielleicht einfacher.

        Erst eine lokale Datei erzeugen.
        In das lokale Verzeichnis schaut dann regelmäßig ein Cron-Job und kopiert die Datei per FTP auf die Diskstation, und löscht die lokale Datei.

        Ich hatte Probleme, die iobroker Backups auf mein NAS zu bekommen, und habe für den Transfer über einen Cronjob rsync statt FTP bemüht - hier der um das Password erleichterte crontab - Eintrag

        3 5 * * * sshpass -p "sag_ich_nicht" rsync -a /opt/iobroker/backups/* martin@debian:/mnt/backup/Martin/iobroker/
        
        MartinP 1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @bärle last edited by

          @bärle
          Nur so als Anregung.
          Ich hole mir regelmäßig die Snapshots vom Watermeter (ESP32-CAM).

          const objectID = 'mqtt.0.watermeter.main.timestamp';
          const filename = '/opt/iobroker/iobroker-data/files/vis.0/watermeter.jpg';
          
          
          async function updateSnapshot() {
          const command = 'wget --no-check-certificate "http://192.168.178.151/img_tmp/alg_roi.jpg?timestamp=' + new Date().getTime() + '" --output-document ' + filename;
              console.log('Speichere neuen Snapshot "' + filename + '"');
              exec(command);
          }
          
          on({id: objectID, change: "ne"}, async function (obj) {
              updateSnapshot();
          });
          

          Da müsste man ja jetzt "nur noch" das Kopieren auf das NAS hinterherschieben.
          Oder man mountet gleich ein Verzeichnis auf dem NAS und speichert dort.

          Übrigens: Deine eigenen lokalen IP-Adressen musst Du nicht aus-X-en. Die sind eh bei fast allen gleich.

          MartinP 1 Reply Last reply Reply Quote 1
          • MartinP
            MartinP @MartinP last edited by

            Nachtrag - Die einfachste Lösung würde den ioBroker wahrscheinlich komplett außen vor lassen (Was diesen Thread zum Fall für die "offtopic" Schublade machen würde 😉 )

            Die Datei in das lokale Verzeichnis über einen Cronjob mit einem wget - Aufruf zu packen, ist eine leichte Fingerübung

            https://wiki.ubuntuusers.de/wget/

            Ein Cronjob, der ein bash skript aufruft, was Schritt für Schritt wget, und dann ftp oder rsync aufruft wäre da sicherlich das Mittel der Wahl

            1 Reply Last reply Reply Quote 0
            • MartinP
              MartinP @Codierknecht last edited by MartinP

              @codierknecht Deine Lösung ist besser für den Thread - weniger Gefahr, in die offtopic - Wüste geschickt zu werden 😉

              Mein ioBroker läuft in einem LXC-Container, was das Mounten von Netzwerk-Shares erschwert ...

              Deshalb schiebe ich Dateien aus dem Container per Rsync auf ein Netzlaufwerk ...

              bärle 1 Reply Last reply Reply Quote 1
              • bärle
                bärle @MartinP last edited by

                @martinp und @Codierknecht
                Vielen Dank für die Tipps und den Code.

                Das Capture bekomme ich nun in ein lokales Verzeichnis geschrieben (z.B. /opt/iobroker/iobroker-data/files/vis.0/cam1/2023-11-09-13-19-05.jpg) - jetzt müsste ich es nur noch schaffen, diese Dateien auf meine DS oder meinen PC zu bekommen.

                Leider habe ich keinerlei Erfahrung mit Cronjobs und bin daher etwas aufgeschmissen und habe bisher nichts brauchbares gefunden.

                Viele Grüße

                MartinP 1 Reply Last reply Reply Quote 0
                • MartinP
                  MartinP @bärle last edited by MartinP

                  @bärle Ist das FTP anonym oder mit Username/Password?

                  man könnte ja in das Javascript von @Codierknecht unter z.B. dem Variablennamen command2 einen String generieren, mit dem Kommandozeilenaufruf des FTP zum Transferieren des lokalen Files auf die Station. dann noch exec(command2); und der Drops ist gelutscht.

                  Ich weiß aber nicht inwieweit sich ftp inzwischen ziert, wenn man der Kommandozeile Username und Password im Klartext mitgibt...

                  Bei rsync brauchte man obenstehenden Schnörkel aus meine früheren Post ...

                  Wenn man die Aufnahmen aufbewahren will, muss man ggfs. auch noch bei der Erzeugung des Dateinamens etwas mehr Mühe aufwenden, und ggfs. das Erstelldatum o. Ä. in den Dateinamen einkodieren...

                  bärle 1 Reply Last reply Reply Quote 0
                  • bärle
                    bärle @MartinP last edited by

                    @martinp Ich habe ein FTP-Account auf meiner DS angelegt mit User und Passwort mit der Berechtigung in einen Ordner schreiben/lesen.

                    MartinP 1 Reply Last reply Reply Quote 0
                    • MartinP
                      MartinP @bärle last edited by MartinP

                      @bärle man kann eine Textdatei verwenden, um ftp zu automatisieren.

                      Siehe
                      https://stackoverflow.com/questions/16158138/how-to-ftp-with-a-batch-file
                      (Zielserver scheint Windows zu sein)

                      Textdatei (abgewandelt) example.txt

                      open 10.155.8.215 
                      user
                      password
                      lcd /D "G:\Subfolder\"
                      cd  folder/
                      binary
                      mput watermeter.jpg
                      disconnect
                      quit
                      

                      Aufruf mit

                      ftp -s:example.txt
                      

                      Dadurch wird example.txt zeilenweise durch FTP abgearbeitet...

                      die Datei "watermeter.jpg" würde natürlich alle 5 Minuten überschrieben, wenn ein neues Foto hereinkommt. Muss man schauen, wenn man das archivieren will ...

                      Jedes Mal eine neue Text Datei mit einem anderen Ziel-Dateinamen erzeugen ist auch nicht gerade toll.

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      979
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      707
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo