Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Dateien auf FTP / NAS kopieren und anschließend umbenennen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Dateien auf FTP / NAS kopieren und anschließend umbenennen

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      Flixer last edited by Flixer

      Hallo,

      ich habe es mit eurer Hilfe hin bekommen, einen Screenshot (Snapshot) von meiner IPCamera zu machen. Mein ioBroker läuft auf einem RasPi 4 mit 4GB in der aktuellen version mit NODE 14.

      Jetzt muss der Screenshot (Snapshot) noch auf meinen FTP/Datei Server (QNAP NAS). Hierfür habe ich wput über putty nachinstalliert. Es gelingt mir nun, die Snapshotdatei auf meinen NAS zu kopieren. Nachfolgend das TEST-Blockly (nicht wundern, damit teste ich etwas rum und schicke auch per Telegram):

      dfd3e8c7-f01b-44be-aeab-015d3453c411-grafik.png

      var timeout3, timeout, timeout2;
      
      
      exec('wget -O /opt/iobroker/snapshot/bild.jpg \'http://192.168.XXX.XXX:X/picture.jpg\'');
      timeout3 = setTimeout(async function () {
        exec('wput /opt/iobroker/snapshot/bild.jpg ftp://ADMIN:PASSWORD@192.168.XXX.XXX:x);
      }, 2000);
      timeout = setTimeout(async function () {
        sendTo("telegram", "send", {
            text: '/opt/iobroker/snapshot/bild.jpg'
        });
      }, 1000);
      timeout2 = setTimeout(async function () {
        sendTo("telegram", "send", {
            text: 'Türklingel!'
        });
      }, 1000);
      

      Es gibt jetzt noch 2 Dinge:

      1. Ich möchte die Datei umbenennen. Im Idealfall würde die aktuelle Datei "bild.jpg" in "2022.01.22 07.15.55.jpg" umbenannt, also "YYYY.MM.DD - HH.MM.SS". Die Umbenennung sollte möglichst auf dem NAS erfolgen, da ja sonst die SD des RasPi voll wird.

      2. Es gibt ein kleines Problem mit wput. Es wird immer der gesamte Dateipfad, also /opt/iobroker/snapshot auf dem freigegebenen Netzwerkpfad erstellt. Es soll natürlich nicht so erfolgen. Kann man das einstellen?
        "-nd" und "--no-directories" bewirkt nur, dass kein Bild und kein Ordner im Netzlaufwerk erscheinen...

      EDIT:
      Problem 2 ist gelöst. Nach etwas Suchen habe ich folgende Lösung gefunden: Es muss der Pfad als Basename zuvor angelegt werden. Damit kommt der ganze Pfad nicht mehr mit. Das sieht dann bei mir so aus:

      wput --basename=/opt/iobroker/snapshot /opt/iobroker/snapshot/bild.jpg ftp://ADMIN:PASSWORD@192.168.XXX.XXX:X
      

      Bleibt nur noch das Umbenennen mit Datum und Uhrzeit auf dem Server. Alternativ, falls das geht, könnte man die Dateien ja auch auf dem Raspi umbenennen und dann alle im Pfad Ordner "snapshot" löschen?

      MfG Flixer

      David G. 1 Reply Last reply Reply Quote 0
      • David G.
        David G. @Flixer last edited by David G.

        @flixer

        Cool, das kann ich bestimmt auch mal gebrauchen mit dem wput.

        Mit dem Pfad hab ich auch keine Idee. Habe im. Syntax vom wput keine Option für gefunden.

        Zum Dateinamen. Die kannst du doch am iobroker umbenennen. Am Ende vom Script lässt du die Datei dann löschen. Oder wird das Bild noch weiter benötigt?

        EDIT:
        Evtl hilft das bei dem Problem mit dem ganzen Pfad. Ka....

        Verzeichnis-Optionen
        -nd
        --no-directories	Falls Dateien rekursiv hochgeladen werden, so wird auf dem Server kein Ordner erstellt wenn keiner Vorhanden ist.
        --basename=PFAD	Spezifiziert einen Basispfad.
        

        Quelle

        EDIT 2:
        Man kann mittels curl scheinbar Daten am Server umbenennen. (auch hochladen).

        http://www.mukeshkumar.net/articles/curl/how-to-use-curl-command-line-tool-with-ftp-and-sftp

        EDIT 3:

        Dass ganze editieren vom Ausgangspost finde ich ziemlich unpraktisch. Besser weiter unten als Antwort einfügen.
        Erst recht, wenn alle Änderungen auf Antworten anderer User basieren. Wenn jemand den Thread liest findet er kaum den Zusammenhang.

        Das umbenennen und löschen ist ja relativ einfach.
        Das curl vom ersten lesen her auch. Noch nie gemacht.

        F 1 Reply Last reply Reply Quote 0
        • F
          Flixer @David G. last edited by

          @david-g
          Hallo david,

          ich hatte den Ausgangspost editier, da war noch keine Antwort vorhanden.

          Hier der aktuelle Stand:
          8b92811a-d564-4ba3-b63c-cdb091d6faf1-grafik.png

          Langsam komme ich voran. Aktuell speichern das Skript die Datei aber nicht, wenn ich das Datum und/oder die Uhrzeit (einfach nur ohne Sonderzeichen hintereinander weg z.B. als JJJJMMDD) rein schreibe. Nehme ich z.B. nur "Minuten" klappt es wunderbar.

          Mal eine Frage zwischendurch: Wie lösche ich aus Putty heraus eine Datei?

          Ich habe folgenden Pfad: /opt/iobroker/snapshot/

          In diesem Pfad wird eine Datei abgelegt, die ich mit einer Variablen hinterlegt habe (Bildpfad). Mit welchem Befehlt kann ich die Datei löschen? Hintergrund: Nach erfolgreichem Durchlauf soll der Ordner natürlich nicht "zumüllen" und die auf den NAS kopierte Datei soll auf dem raspi entfernt werden.

          David G. bahnuhr 2 Replies Last reply Reply Quote 0
          • David G.
            David G. @Flixer last edited by

            @flixer

            Okay, haben wir uns überschritten ^^.

            Warum er nicht speichert weiß ich nicht. Hast du ein vordefiniertes Format genommen oder ein eigenes bei der Zeit?

            Löschen müsste mit

            rm /opt/iobroker/snapshot/xxx.jpg
            

            funktionieren.
            Kannst du ja auch mit den Variablen zusammensetzen.

            1 Reply Last reply Reply Quote 1
            • bahnuhr
              bahnuhr Forum Testing Most Active @Flixer last edited by

              @flixer sagte in Dateien auf FTP / NAS kopieren und anschließend umbenennen:

              Mit welchem Befehlt kann ich die Datei löschen?

              Per Script mache ich dies so.

              function Datei_loeschen(Datei) {
                  // Pfad immer mit / darstellen
                  // gesamter Befehl somit: Datei_loeschen("/opt/iobroker/iobroker-data/files/vis.0/Daten/test.txt");
                  var fs = require('fs'); 
                  fs.unlink(Datei, function (err) {
                      if (err) throw err;
                      log('Datei: ' + Datei + ' wurde gelöscht.');
                  });
              }
              
              1 Reply Last reply Reply Quote 0
              • F
                Flixer last edited by

                Hallöchen,

                also es läuft.

                Zum Verständnis: Ich habe eine Türsprechanlage (Akuvox R25C), die beim Drücken des Klingeln-Knopfes u.a. einen Web-Befehl an den ioBroker schickt welcher einen Objektwert ändert. Wenn dieser auf "true" gesetzt wird startet das Skript.

                2611157d-526d-4720-8d14-a8ffa3e2cb86-grafik.png

                Als Erläuterung für den Ablauf von oben nach unten (laienhaft beschreiben!):

                • der Bildpfad auf meinem RasPi wird festgelegt, inkl. Datum und Uhrzeit im Dateinamen (hier Tür_Datum_Uhrzeit) => Hinweis: der Ordner Snapshot ist nicht vorhanden und muss z.B. mit Putty erstellt werden)
                • der Befehl für das Holen vom Bild der Camera wird definiert
                • der Befehl für das Kopieren auf den Server wird festgelegt
                • der Befehl für das Löschen der Datei auf meinem Raspi wird definiert
                • Ausführen des Befehlts Speichern
                  -- Timeout mit anshcließendem Senden des Bildes und einer Nahcricht (es hat geklingelt)
                • nach einem Timeout wird die aufgenommene Datei mit dem Befehl Kopieren auf den NAS kopiert und nach anschließender Pause vom RasPi gelöscht
                • abschließend wird das Objekt auf den Werte false gesetzt, sodass beim erneuten Klingeln das Skript wieder startet.

                MfG Flixer

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

                Support us

                ioBroker
                Community Adapters
                Donate

                875
                Online

                32.0k
                Users

                80.5k
                Topics

                1.3m
                Posts

                3
                6
                889
                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