Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben)

    This topic has been deleted. Only users with topic management privileges can see it.
    • haus-automatisierung
      haus-automatisierung Developer Most Active last edited by

      Noch eine Erweiterung (7.11.1)

      Für den exec-Block gibt es jetzt (analog zu den anderen Bausteinen) auch einen "Ergebnis"-Block um auf stdout, stderror und error generell zuzugreifen. Damit muss man keine Variablen mehr anlegen, welche genau den richtigen Namen haben müssen (z.B. result).

      Logischerweise prüft der Block ebenfalls, ob er sich im richtigen "Context" befindet.

      Screenshot 2024-03-28 at 16.19.29.png

      Würde mich generell freuen, wenn hier noch etwas Feedback kommt...

      haselchen paul53 2 Replies Last reply Reply Quote 7
      • haselchen
        haselchen Most Active @haus-automatisierung last edited by

        @haus-automatisierung

        Huhu,
        ich fang mal mit dem Feedback an oder nennen wir es mal -> mit einer Frage 🙂
        Aktuell und zeitintensiv lasse ich mir ein Klingelbild einer RingCam als basic Image in meiner VIS abbilden.
        Der Weg muss leider über Snapshot Request des DP gehen , dann writeFile in den RingOrdner und von da in vis.0 , damit es angezeigt wird.
        Dauer = 10sek. Sonst ist das Widget grau und kein Bild da.
        Kann das nun as soon as possible mit Deinen neuen Blöcken erledigt werden?
        Blöd , wenn es klingelt und auf dem Bild ist keiner 🙂

        Und last but not least , ein herzliches Dankeschön für Deine Updates aus dem hohen Norden ✌

        1 Reply Last reply Reply Quote 0
        • E
          Eisbaer721 @haus-automatisierung last edited by

          @haus-automatisierung
          Hallo Matthias
          Ich möchte mich auch mal für deinen Kurs und deine Erweiterung hier im Blockly bedanken.
          Ich habe da eine Frage wie ich bei den neuen Bausteinen die erzeugten .jpg Dateien per Telegram verschicken kann weil sie ja nur als Meta ( Ich habe auch Redis am laufen) abgelegt werden. Telegram schickt mir nur den Pfad zu und nicht das Bild.
          Vielen Dank
          Gruß Marko
          a338f028-c401-4153-9c3f-fe2de8c9b409-image.png

          haus-automatisierung 1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @Eisbaer721 last edited by

            @eisbaer721 Da muss ich den Telegram Adapter noch anpassen damit das klappt

            Hiltex 1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @haus-automatisierung last edited by paul53

              @haus-automatisierung
              Es wäre schön, wenn man in Blockly die Variable scriptName des JS-Adapters als vordefinierte, nur lesbare Variable zur Verfügung hätte.
              PS: Kann mich gerade nicht auf Github anmelden.

              haus-automatisierung 1 Reply Last reply Reply Quote 1
              • haus-automatisierung
                haus-automatisierung Developer Most Active @paul53 last edited by

                @paul53 Das macht mir zwar etwas Angst, weil ich genau heute das gleiche auf die Todo-Liste geschrieben habe, aber: kommt 👍

                haselchen 1 Reply Last reply Reply Quote 1
                • haselchen
                  haselchen Most Active @haus-automatisierung last edited by

                  @haus-automatisierung

                  Und eine Antwort auf meine obige Frage?
                  Kommt bestimmt auch noch 😉

                  haus-automatisierung 1 Reply Last reply Reply Quote 0
                  • haus-automatisierung
                    haus-automatisierung Developer Most Active @haselchen last edited by

                    @haselchen sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                    Und eine Antwort auf meine obige Frage?

                    Kann ich nicht beantworten mit so wenig Infos.

                    haselchen 1 Reply Last reply Reply Quote 0
                    • haselchen
                      haselchen Most Active @haus-automatisierung last edited by haselchen

                      @haus-automatisierung sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                      @haselchen sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                      Und eine Antwort auf meine obige Frage?

                      Kann ich nicht beantworten mit so wenig Infos.

                      Wenig Infos? 🤔
                      Was fehlt Dir (noch) für eine Beantwortung?
                      Bin am Handy.
                      Versuche nachher mal das JavaScript hier abzubilden.

                      Edit:
                      @haus-automatisierung

                      Das Skript ist schon älter, tatsächlich das Einzige, was ich gefunden habe, was funktioniert.
                      Allerdings, wie man an den Timeouts sieht, kommt das Bild nicht 1:1 an, wenn es tatsächlich klingelt.

                      var timeout, timeout1
                      var fs = require('fs'); 
                      
                       on({id: 'hm-rpc.1XXXX.PRESS_SHORT', change: "any"}, function (obj) {
                       var value = obj.state.val;
                       var oldValue = obj.oldState.val;
                       setState("ring.0.cocoa.Snapshot.request"/*New Snapshot Request*/, true);
                       timeout = setTimeout(function () {
                      const picture= fs.readFileSync('/opt/iobroker/iobroker-data/tmp/cocoa/SnapshotRingCam.jpg'); //liest linux-datei-system
                      writeFile('vis.0','alarm.jpg', picture, function (error) { });   //schreibt in iobroker system
                      }, 10000);
                      timeout1 = setTimeout(function () {
                         sendTo("telegram.1", "send", {
                             text: '/opt/iobroker/iobroker-data/files/vis.0/alarm.jpg'
                         });
                       }, 13000);
                       });
                      
                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                      • haus-automatisierung
                        haus-automatisierung Developer Most Active @haselchen last edited by

                        @haselchen Callback-Funktionen sind eigentlich dafür da, dass man diese nutzt (damit man weiß, wann etwas fertig ist). Einfach 10 Sekunden warten, in der Hoffnung dass alles fertig ist, ist nicht besonders gut gelöst.

                        So z.B.

                        const fs = require('node:fs'); 
                         
                        on({ id: 'hm-rpc.1XXXX.PRESS_SHORT', change: 'any' }, (obj) => {
                           setState('ring.0.cocoa.Snapshot.request', true);
                        
                           setTimeout(() => {
                              const picture = fs.readFileSync('/opt/iobroker/iobroker-data/tmp/cocoa/SnapshotRingCam.jpg'); //liest linux-datei-system
                              writeFile('vis.0','alarm.jpg', picture, (error) => {
                                 if (!error) {
                                    sendTo('telegram.1', 'send', {
                                       text: '/opt/iobroker/iobroker-data/files/vis.0/alarm.jpg'
                                    });
                                 }
                              });
                           }, 10000);
                        });
                        

                        Jetzt müsste man noch den zweiten Timeout loswerden. Irgendetwas muss Dir also sagen, dass das Bild gespeichert wurde. Und da sind wir wieder an dem Punkt, wo ich wegen fehlender Infos nicht helfen kann.

                        Aber... das ist hier im Thread alls komplett Offtopic und hat mit den neuen Blockly-Bausteinen nix zu tun.

                        haselchen 1 Reply Last reply Reply Quote 0
                        • haselchen
                          haselchen Most Active @haus-automatisierung last edited by haselchen

                          @haus-automatisierung

                          Ich denke genau das macht der neue Baustein?
                          Bild holen und ablegen ( in quasi Echtzeit).
                          Wenn’s Offtopic wäre , würde ich hier nicht fragen ☝️

                          haus-automatisierung 1 Reply Last reply Reply Quote 0
                          • haus-automatisierung
                            haus-automatisierung Developer Most Active @haselchen last edited by

                            @haselchen sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                            Ich denke genau das macht der neue Baustein?

                            Die neuen Bausteine stellen nur Funktionen in Blockly bereit, welche es in JavaScript schon seit Jahren gibt. Bei dem Ring-Adapter muss man das Bild aber scheinbar anfordern, indem man einen Datenpunkt ansteuert - und es gibt keine HTTP-Url. Daher hilft Dir das alles nicht (wie es aussieht).

                            haselchen 1 Reply Last reply Reply Quote 0
                            • haselchen
                              haselchen Most Active @haus-automatisierung last edited by

                              @haus-automatisierung

                              Okay.
                              Angekommen ich tausch die Kamera aus. ( hat dann eine HTTP URL), wie sehe dann das Blockly aus?
                              HMIP Klingel -> Bild machen -> unmittelbar für die VIS bereitstellen .

                              haus-automatisierung 1 Reply Last reply Reply Quote 0
                              • haus-automatisierung
                                haus-automatisierung Developer Most Active @haselchen last edited by haus-automatisierung

                                @haselchen Steht doch alles oben?

                                Screenshot 2024-03-27 at 09.40.12.png

                                Dann halt vis.0 als Meta-Storage wählen und alarm.jpg als Dateinamen eintragen. Fertig. Muss halt noch ein Trigger drumherum bei Klingeln, ... sollte klar sein 🙂

                                1 Reply Last reply Reply Quote 2
                                • I
                                  ioBroker-lover last edited by

                                  Danke dir für deine Arbeit! Habe mich direkt mal dran gesetzt um die Skripte umzubauen, die derzeit noch JavaScript Funktionen haben (die für mich als Anfänger schwer zu warten sind).

                                  Irgendwie bekomme ich hier jedoch kein Bild als Ergebnis.
                                  Es scheint, als ob die Funktion nicht ausgeführt wird. Habe ich einen Knoten im Kopf?

                                  3d799e66-e0c8-4222-b018-6c2466f8e3ff-image.png

                                  haus-automatisierung 1 Reply Last reply Reply Quote 0
                                  • haus-automatisierung
                                    haus-automatisierung Developer Most Active @ioBroker-lover last edited by

                                    @iobroker-lover Wenn das das ganze Blockly ist, wird die Funktion auch nie aufgerufen. Auch der Pushover Block gehört da nicht hin

                                    I 1 Reply Last reply Reply Quote 0
                                    • I
                                      ioBroker-lover @haus-automatisierung last edited by ioBroker-lover

                                      @haus-automatisierung Das ist nur ein Test-Skript gewesen.
                                      Sorry, in den Pushover-Block gehört natürlich die Funktion. Habe ein paar Versionen durchgespielt und bemerkt, dass die Funktion hier wenn sie im "Anhang"-Eingang ist, scheinbar nicht aufgerufen wird. Der Screenshot alleine macht so wie du sagst keinen Sinn.

                                      Hier der richtige Stand, der nach meinem Verständnis funktionieren müsste - es aber nicht tut.
                                      Dass "pushover" hier alleine steht, kommt nur daher, dass es so beim Skript-start direkt getriggert wird. (Praktisch zum Testen).
                                      Ist es möglich dass ich "data" nicht in eine Variable stecken kann sondern immer schreiben und lesen muss?

                                      3d3cffc0-e372-4999-8a13-04e510389ed8-grafik.png

                                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                                      • haus-automatisierung
                                        haus-automatisierung Developer Most Active @ioBroker-lover last edited by

                                        @iobroker-lover Das geht so auch nicht. Die Variable "Bild" wird zurückgegeben, bevor der Callback des HTTP-Requests ausgeführt wird. Das heißt, dass die Bilddaten immer leer sein werden. Das ist bei allen Blockly-Bausteinen so, da alle mit Callback arbeiten und nicht mit Promises (das ginge nur in JavaScript).

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

                                          Ich muss mal fragen, auch wenn ich mich glaube blamiere....
                                          Wo finde ich die Variablen "Status Code", "data" etc? Wollte gtad das erste Script umbauen und finde es einfach nicht.....

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

                                            @david-g

                                            Data z. B. ist ein eigener Baustein unter Aktionen.

                                            David G. 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            680
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            34
                                            3949
                                            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