Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Datenpunkt als Datei speichern

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Datenpunkt als Datei speichern

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

      Wie kann ich den Inhalt eines Datenpunktes als Datei speichern?

      Ich bekomme in einen Datenpunkt über den MQTT-Adapter von Frigate einen Snapshot. Diesen möchte ich gerne über den Pushover-Adapter an mein Handy senden.

      Leider kann ich in Blockly den Datenpunkt nicht einfach als "Anhang" beim Pushover-Block angeben (funktioniert nicht). Was aber funktioniert ist, wenn ich eine Datei aus dem Linux-Dateisystem mit Pfad als "Anhang" angebe. Deshalb möchte ich den Snapshot aus dem Datenpunkt zuerst im Dateisystem (Debian) als Datei speichern und anschließend über Pushover versenden.

      Das speichern bekomme ich aber nicht hin und ich finde auch nirgends ein Beispiel.

      Cinimod 1 Reply Last reply Reply Quote 0
      • Cinimod
        Cinimod Most Active @ChrisBGL last edited by Cinimod

        @chrisbgl

        Das senden einer Datei kann man über den Standart "senden block" lösen, den einfach auf pushover stellen und als parameter "file" angeben.

        Bildschirmfoto 2022-12-07 um 21.55.29.png

        Das Speichern funktioniert etwa so:

        Bildschirmfoto 2022-12-07 um 22.01.00.png

        wget --output-document /opt/iobroker/meinverzeichnis/meinbild.jpg 'hier_der_Link_zum_Schnappschuss'
        
        Cinimod 1 Reply Last reply Reply Quote 0
        • Cinimod
          Cinimod Most Active @Cinimod last edited by

          wenn dein Schnappschuss Link in einem Datenpunkt steht kannst du es so machen:

          Bildschirmfoto 2022-12-07 um 22.16.24.png

          wget --output-document /opt/iobroker/meinverzeichnis/meinbild.jpg '
          
          Homoran 1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @Cinimod last edited by

            @cinimod sagte in Datenpunkt als Datei speichern:

            wenn dein Schnappschuss Link in einem Datenpunkt steht

            nee, da liegt der Schnappschuss selber.
            Er hat keine Datei.
            Die würde er gerne erzeugen un sie zu verschicken.

            Cinimod 1 Reply Last reply Reply Quote 0
            • Cinimod
              Cinimod Most Active @Homoran last edited by Cinimod

              @homoran ja dann doch eher die erste Variante 💁‍♂️

              @ChrisBGL Stellt sich mir noch die Frage: Ist der SchnappschussName denn immer gleich ?

              Vielleicht zeigst mal was dann über Mqtt ankommt.

              C 1 Reply Last reply Reply Quote 0
              • C
                ChrisBGL @Cinimod last edited by ChrisBGL

                @cinimod Der Schnappschuss ist in dem Datenpunkt (nicht als Link). Deshalb möchte ich den Inhalt des Datenpunktes als Datei speichern.

                da5dc341-a413-4cab-bc29-59c1278870ed-image.png

                5c5a445a-f24c-451d-a681-cc01a39daecb-image.png

                C 1 Reply Last reply Reply Quote 0
                • C
                  ChrisBGL @ChrisBGL last edited by

                  Hat niemand eine Idee bzw. gibt es hier keine Möglichkeit? 😕

                  crunchip 1 Reply Last reply Reply Quote 0
                  • crunchip
                    crunchip Forum Testing Most Active @ChrisBGL last edited by crunchip

                    @chrisbgl vllt https://forum.iobroker.net/post/852618 oder https://forum.iobroker.net/post/652107

                    C 1 Reply Last reply Reply Quote 0
                    • C
                      ChrisBGL @crunchip last edited by

                      @crunchip Danke, das hatte ich schon gelesen. Die anderen Nutzer haben es so gemacht, dass sie das Bild bei Auslösen des Events frisch von der Kamera oder Frigate ziehen. Das könnte ich auch machen, aber ist halt irgendwie unsinnig, wenn ich das Bild schon als Datenpunkt in iobroker drin habe. Ich kann es halt nur nicht speichern um es dann zu versenden.

                      liv-in-sky 1 Reply Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @ChrisBGL last edited by

                        @chrisbgl

                        ich mache sowas mit einem png file - ob das miteinem jfif auch geht, weiß ich nicht

                        mein dp sieht so aus:

                        Image 128.png

                        das script sichert letztlich diesen code in ein bild im vis-folder zur anzeige in der vis - du müßtest es halt versenden

                        teil script:

                        const fs = require('fs');
                        let myArrFiles=[] 
                        let counter=0 ;
                        let myPather='/opt/iobroker/iobroker-data/files/vis.0/armin/img'
                         
                         log("schreibe file mit " + nameOfPic)
                         //log(Buffer.from(x))
                        
                        
                        var data = x.replace(/^data:image\/\w+;base64,/, "");
                        //var buf = new Buffer(data, 'base64');
                        
                        
                        
                        //writeFile('vis.0',"/PicFromBrowserUpload/"+nameOfPic,Buffer.from(x), function (){
                        writeFile('vis.0','/armin/img/'+nameOfPic,Buffer.from(data,'base64'), function (){    
                        
                        
                        //fs.readdir('/opt/iobroker/iobroker-data/files/vis.0/PicFromBrowserUpload', (err, files) => {
                        fs.readdir(myPather, (err, files) => {    
                          if (err)
                            console.log(err);
                          else {
                           // console.log("\nCurrent directory filenames:");
                            files.forEach(file => {
                              //console.log(fs.read());
                            counter++;
                            let sizer=fs.statSync(myPather+'/'+file).size;
                            myArrFiles.push({"Anzahl":counter,"Filename":file,"Größe":sizer})
                            })
                          }
                          
                          //log(JSON.stringify(files))
                          setState('0_userdata.0.UPLOADinVIS.VerzeichnisUploads',JSON.stringify(myArrFiles))
                        })
                        
                         } )
                        
                        C 1 Reply Last reply Reply Quote 0
                        • C
                          ChrisBGL @liv-in-sky last edited by

                          @liv-in-sky Ich bekomme das einfach nicht ans laufen. Wo genau im Skript definiere ich denn den Datenpunkt, dessen Inhalt ich speichern möchte?

                          liv-in-sky 1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @ChrisBGL last edited by

                            @chrisbgl das ist hier im script auch nicht drin - das ist kein laufendes script, sondern sollte nur ein paar befehle zeigen

                            in dieser zeile wird die datei, die im datenpunkt ist verändert - ohne ging es nicht - x wäre dann der inhalt des datenpunktes

                            var data = x.replace(/^data:image\/\w+;base64,/, "");
                            

                            diese zeile schreibt das file ins fiesystem, damit es von iobroker aus als file existiert

                            writeFile('vis.0','/armin/img/'+nameOfPic,Buffer.from(data,'base64'), function (){...
                            
                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            853
                            Online

                            32.0k
                            Users

                            80.5k
                            Topics

                            1.3m
                            Posts

                            5
                            12
                            786
                            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