Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Blockly

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Blockly

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

      Hallo

      Ich bin gerade dabei meine Heizungsscripte von ScriptGUI nach Blockly zu bringen.

      Wenn ich das durch habe, kann ich CCU.IO ausschalten 😄

      Jetzt vermisse ich aber einen Baustein in Blockly 😞

      Bei ScriptGUI hieß der "Timespan".

      Damit konnte man herausfinden ob die aktuelle Zeit innerhalb einen Zeitbereiches ist oder nicht.
      147_timespan.png

      Ein erzeugtes Script von dem Baustein sieht so aus.

      ! function codebox_21(data) {
      ! var inputlocal_131_out = Start_Zeit_Bereich;
      ! var inputlocal_132_out = Ende_Zeit_Bereich;
      ! var now = new Date();
      ! var time1 = new Date();
      ! var time2 = new Date();
      ! var in1 = inputlocal_131_out;
      ! var in2 = inputlocal_132_out;
      ! var double1 = in1.split(" ");
      ! var double2 = in2.split(" ");
      ! var time;
      ! var date1;
      ! var date2;
      ! if (double1[1]) {
      ! time = double1[1].split(":");
      ! date1 = double1[0].split(".");
      ! date2 = double1[0].split("-");
      ! } else {
      ! time = in1.split(":");
      ! date1 = in1.split(".");
      ! date2 = in1.split("-");
      ! }
      ! if (time.length == 2) {
      ! time1.setHours(time[0]);
      ! time1.setMinutes(time[1]);
      ! }
      ! if (time.length == 3) {
      ! time1.setHours(time[0]);
      ! time1.setMinutes(time[1]);
      ! time1.setSeconds(time[2]);
      ! }
      ! if (date2.length == 3) {
      ! if (date2[0].length == 4) {
      ! time1.setFullYear(date2[0]);
      ! } else {
      ! time1.setFullYear("20" + date2[0]);
      ! }
      ! time1.setMonth(date2[1] - 1);
      ! time1.setDate(date2[2]);
      ! }
      ! if (date1.length == 3) {
      ! if (date1[0].length == 4) {
      ! time1.setFullYear(date1[2]);
      ! } else {
      ! time1.setFullYear("20" + date1[2]);
      ! }
      ! time1.setMonth(date1[1] - 1);
      ! time1.setDate(date1[0]);
      ! }
      ! if (double2[1]) {
      ! time = double2[1].split(":");
      ! date1 = double2[0].split(".");
      ! date2 = double2[0].split("-");
      ! } else {
      ! time = in2.split(":");
      ! date1 = in2.split(".");
      ! date2 = in2.split("-");
      ! }
      ! if (time.length == 2) {
      ! time2.setHours(time[0]);
      ! time2.setMinutes(time[1]);
      ! }
      ! if (time.length == 3) {
      ! time2.setHours(time[0]);
      ! time2.setMinutes(time[1]);
      ! time2.setSeconds(time[2]);
      ! }
      ! if (date2.length == 3) {
      ! if (date2[0].length == 4) {
      ! time1.setFullYear(date2[0]);
      ! } else {
      ! time1.setFullYear("20" + date2[0]);
      ! }
      ! time2.setMonth(date2[1] - 1);
      ! time2.setDate(date2[2]);
      ! }
      ! if (date1.length == 3) {
      ! if (date1[0].length == 4) {
      ! time2.setFullYear(date1[2]);
      ! } else {
      ! time2.setFullYear("20" + date1[2]);
      ! }
      ! time2.setMonth(date1[1] - 1);
      ! time2.setDate(date1[0]);
      ! }
      ! process.send(time1);
      ! process.send(time2);
      ! if (time1.valueOf() < now.valueOf() && time2.valueOf() > now.valueOf()) {
      ! var timespan_57_out = true;
      ! } else {
      ! var timespan_57_out = false;
      ! }
      ! if (timespan_57_out != false && timespan_57_out != undefined && timespan_57_out != 0) {
      ! codebox_43(data);
      ! }
      ! if (timespan_57_out == false || timespan_57_out == undefined || timespan_57_out == '') {
      ! codebox_48(data);
      ! }
      ! };

      @Bluefox - Ist es möglich so einen Baustein in Blockly einzubauen?

      Grüße

      1 Reply Last reply Reply Quote 0
      • R
        robsdobs last edited by

        @Dutchman:

        @apollon77:

        Ein "schedule"-Blockly wo man eine Variable als "Zeit" übergeben kann wäre super. `

        +1 `
        Hallo, Danke für die Antwort (sorry das ich jetzt erst antworte).

        Also ich hab schon mit einer richtigen URL probiert. Aber das Problem ist doch vor dem Bildschirm. Ich hab das Ergebnis (den Rückgabewert) im Parameter result erwartet, dieser ist aber im objekt response.

        der Blockly
        1367_blockly_request.png

        erzeugt den code

         require("request")('http://192.168.178.205/addons/xmlapi/rssilist.cgi', function (error, response, result) {
              LogObject('error', error);
            LogObject('result', result);
            LogObject('response', response);
            });
        
        

        in response ist jetzt ein objekt

        response={"statusCode":200,"body":"ergebniss"}
        

        Wie greife ich jetzt unter Blockly auf das body zu? Muss ich dazu auf eine Javascript Funktion zurückgreifen, die mir das wieder auseinander nimmt oder gibt es da eine einfache Möglichkeit?

        Danke & Gruß

        (LogObject ist folgende Funktion (zum importieren in Blockly):

        ! ````
        <block xmlns="http://www.w3.org/1999/xhtml" type="procedures_defcustomnoreturn" id="=m_sG#h6Qfd+Q`;Q/+-k" x="13" y="-87"><mutation statements="false"><arg name="text"></arg>
        <arg name="data"></arg></mutation>
        <field name="NAME">LogObject</field>
        <field name="SCRIPT">CmNvbnNvbGUubG9nKFN0cmluZyh0ZXh0KSArICc9JyArIEpTT04uc3RyaW5naWZ5KGRhdGEpKTsK</field>
        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment></block>

        1 Reply Last reply Reply Quote 0
        • Bluefox
          Bluefox last edited by

          @robsdobs:

          @Dutchman:

          @apollon77:

          Ein "schedule"-Blockly wo man eine Variable als "Zeit" übergeben kann wäre super. `

          +1 `
          Hallo, Danke für die Antwort (sorry das ich jetzt erst antworte).

          Also ich hab schon mit einer richtigen URL probiert. Aber das Problem ist doch vor dem Bildschirm. Ich hab das Ergebnis (den Rückgabewert) im Parameter result erwartet, dieser ist aber im objekt response.

          der Blockly

          Blockly_request.PNG

          erzeugt den code

           require("request")('http://192.168.178.205/addons/xmlapi/rssilist.cgi', function (error, response, result) {
                LogObject('error', error);
              LogObject('result', result);
              LogObject('response', response);
              });
              
          

          in response ist jetzt ein objekt

          response={"statusCode":200,"body":"ergebniss"}
          

          Wie greife ich jetzt unter Blockly auf das body zu? Muss ich dazu auf eine Javascript Funktion zurückgreifen, die mir das wieder auseinander nimmt oder gibt es da eine einfache Möglichkeit?

          Danke & Gruß

          (LogObject ist folgende Funktion (zum importieren in Blockly):

          ! <block xmlns="http://www.w3.org/1999/xhtml" type="procedures_defcustomnoreturn" id="=m_sG#h6Qfd+Q`;Q/+-k" x="13" y="-87"><mutation statements="false"><arg name="text"></arg> <arg name="data"></arg></mutation> <field name="NAME">LogObject</field> <field name="SCRIPT">CmNvbnNvbGUubG9nKFN0cmluZyh0ZXh0KSArICc9JyArIEpTT04uc3RyaW5naWZ5KGRhdGEpKTsK</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment></block> `
          Es ist komisch, dass result nichts drin hat.

          Laut request doku https://www.npmjs.com/package/request :

          var request = require('request');
          request('http://www.google.com', function (error, response, body) {
            if (!error && response.statusCode == 200) {
              console.log(body) // Show the HTML for the Google homepage. 
            }
          })
          

          muss body in deinem result drin stecken.

          Warum dass nicht so ist, weiß ich nicht, aber ich habe bei mir getestet und es geht mit "result".

          Du kannst mit dem block nicht auf ein Objekt zugreifen. Dafür muss du mit Funktionen arbeiten.

          1 Reply Last reply Reply Quote 0
          • Bluefox
            Bluefox last edited by

            @rantanplan:

            Hallo

            Ich bin gerade dabei meine Heizungsscripte von ScriptGUI nach Blockly zu bringen.

            Wenn ich das durch habe, kann ich CCU.IO ausschalten 😄

            Jetzt vermisse ich aber einen Baustein in Blockly 😞

            Bei ScriptGUI hieß der "Timespan".

            Damit konnte man herausfinden ob die aktuelle Zeit innerhalb einen Zeitbereiches ist oder nicht.

            Timespan.png

            Ein erzeugtes Script von dem Baustein sieht so aus.

            ! function codebox_21(data) {
            ! var inputlocal_131_out = Start_Zeit_Bereich;
            ! var inputlocal_132_out = Ende_Zeit_Bereich;
            ! var now = new Date();
            ! var time1 = new Date();
            ! var time2 = new Date();
            ! var in1 = inputlocal_131_out;
            ! var in2 = inputlocal_132_out;
            ! var double1 = in1.split(" ");
            ! var double2 = in2.split(" ");
            ! var time;
            ! var date1;
            ! var date2;
            ! if (double1[1]) {
            ! time = double1[1].split(":");
            ! date1 = double1[0].split(".");
            ! date2 = double1[0].split("-");
            ! } else {
            ! time = in1.split(":");
            ! date1 = in1.split(".");
            ! date2 = in1.split("-");
            ! }
            ! if (time.length == 2) {
            ! time1.setHours(time[0]);
            ! time1.setMinutes(time[1]);
            ! }
            ! if (time.length == 3) {
            ! time1.setHours(time[0]);
            ! time1.setMinutes(time[1]);
            ! time1.setSeconds(time[2]);
            ! }
            ! if (date2.length == 3) {
            ! if (date2[0].length == 4) {
            ! time1.setFullYear(date2[0]);
            ! } else {
            ! time1.setFullYear("20" + date2[0]);
            ! }
            ! time1.setMonth(date2[1] - 1);
            ! time1.setDate(date2[2]);
            ! }
            ! if (date1.length == 3) {
            ! if (date1[0].length == 4) {
            ! time1.setFullYear(date1[2]);
            ! } else {
            ! time1.setFullYear("20" + date1[2]);
            ! }
            ! time1.setMonth(date1[1] - 1);
            ! time1.setDate(date1[0]);
            ! }
            ! if (double2[1]) {
            ! time = double2[1].split(":");
            ! date1 = double2[0].split(".");
            ! date2 = double2[0].split("-");
            ! } else {
            ! time = in2.split(":");
            ! date1 = in2.split(".");
            ! date2 = in2.split("-");
            ! }
            ! if (time.length == 2) {
            ! time2.setHours(time[0]);
            ! time2.setMinutes(time[1]);
            ! }
            ! if (time.length == 3) {
            ! time2.setHours(time[0]);
            ! time2.setMinutes(time[1]);
            ! time2.setSeconds(time[2]);
            ! }
            ! if (date2.length == 3) {
            ! if (date2[0].length == 4) {
            ! time1.setFullYear(date2[0]);
            ! } else {
            ! time1.setFullYear("20" + date2[0]);
            ! }
            ! time2.setMonth(date2[1] - 1);
            ! time2.setDate(date2[2]);
            ! }
            ! if (date1.length == 3) {
            ! if (date1[0].length == 4) {
            ! time2.setFullYear(date1[2]);
            ! } else {
            ! time2.setFullYear("20" + date1[2]);
            ! }
            ! time2.setMonth(date1[1] - 1);
            ! time2.setDate(date1[0]);
            ! }
            ! process.send(time1);
            ! process.send(time2);
            ! if (time1.valueOf() < now.valueOf() && time2.valueOf() > now.valueOf()) {
            ! var timespan_57_out = true;
            ! } else {
            ! var timespan_57_out = false;
            ! }
            ! if (timespan_57_out != false && timespan_57_out != undefined && timespan_57_out != 0) {
            ! codebox_43(data);
            ! }
            ! if (timespan_57_out == false || timespan_57_out == undefined || timespan_57_out == '') {
            ! codebox_48(data);
            ! }
            ! };

            @Bluefox - Ist es möglich so einen Baustein in Blockly einzubauen?

            Grüße `
            Brauchst du wirklich mit Datum oder nur Tageszeit? Weil Tageszeit ist schon implementiert.

            1 Reply Last reply Reply Quote 0
            • rantanplan
              rantanplan last edited by

              @Bluefox:

              Brauchst du wirklich mit Datum oder nur Tageszeit? Weil Tageszeit ist schon implementiert. `

              Hallo Bluefox

              Danke für Deine Antwort.

              Du meinst wahrscheinlich den Baustein "Aktuelle Zeit ist "{}" "Uhrzeit"".

              Der währe gut, wenn "Uhrzeit" über eine Variable gesteuert werden könnte.

              So "festverdrahtete" Parameter mag ich nicht, weil man für Änderungen IMMER an das Programm muss.

              Das regel ich lieber über Systemvariablen.

              Und "Frau" will auch mal was ändern können. (Und die lasse ich besser nicht ans Programm 😉 )

              Ähnlich "Aktuelle Zeit von "Sonnenaufgang usw." Offset (Minuten).

              Der "Offset" sollte variabel sein.

              Ich habe es Momentan mit einer Funktion gelöst, die true/false zurückgibt.

              {aktuelle Zeit als SS:mm} >= {Zeit_Anfang} UND {aktuelle Zeit als SS:mm} <= {Zeit_Ende}

              Wobei "Zeit_Anfang" und "Zeit_Ende" Systemvariablen sind.

              Dies funktioniert leider nicht tagesübergreifend. Also zwischen "22:00" und "05:00".

              Ein Vergleich mit Zeit/Datum wäre auch nicht schlecht.

              Z.B. von 03.03.2017 bis 20.03.2017 ist Urlaub.

              (Zeitangaben natürlich variabel 😉 )

              Grüße

              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                • 1 auch ich würde mich freuen wen man diese werte (zeit/timer etc) hard Coded UND als Variable setzen könnte, das macht alles flexibler/dynsmischer

                Sent from my iPhone using Tapatalk

                1 Reply Last reply Reply Quote 0
                • M
                  mike2712 last edited by

                  Hallo,

                  das ist ein super Tool, es macht richtig Spaß, aber ich fände es auch gut wenn ein Vergleich von Wochentagen möglich wäre, .B. sollen meine Jalousien am Wochenende mit anderen Zeiten wie in der Woche gesteuert werden, oder gibt es da was und ich habs nur nicht gefunden?

                  Lg Mike

                  1 Reply Last reply Reply Quote 0
                  • rantanplan
                    rantanplan last edited by

                    @mike2712:

                    Hallo,

                    das ist ein super Tool, es macht richtig Spaß, aber ich fände es auch gut wenn ein Vergleich von Wochentagen möglich wäre, .B. sollen meine Jalousien am Wochenende mit anderen Zeiten wie in der Woche gesteuert werden, oder gibt es da was und ich habs nur nicht gefunden?

                    Lg Mike `
                    Hallo

                    Schau Dir mal den Baustein "Aktuelle Zeit als xxx" unter "Datum und Zeit".

                    Da kannst Du z.B. Wochentag als Nummer auswählen.

                    Wochentag 1 = Montag …. Wochentag 7 = Sonntag.

                    Grüße

                    1 Reply Last reply Reply Quote 0
                    • rantanplan
                      rantanplan last edited by

                      Hallo Zusammen

                      Es ist vollbracht 😄

                      Alles von CCU.io nach ioBroker portiert und CCU.io ausgeschaltet!

                      Bis jetzt läuft alles sehr stabil!

                      Eine Kleinigkeit ist mir noch aufgefallen.

                      Ich habe auf der CCU Systemvariablen umbenannt.

                      ioBroker hat das nach 2 Std. immer noch nicht mitbekommen.

                      Erst nach rega-Adapter Neustart stimmte wieder alles.

                      Blockly hat davon nichts mitbekommen.

                      In den Scripten standen die alten Bezeichnungen.

                      Das ist auch OK so.

                      Die Scripte liefen sauber, weil die ID ja gleichgeblieben ist.

                      Aber der alte Variablenname blieb auch im Baustein sichtbar, wenn ich die Variable mit dem neuen Namen ausgewählt habe.

                      Erst Baustein neu anlegen bzw. kopieren übernahm den neuen Variablennamen.

                      Alles in allem bin ich sehr zufrieden!

                      Danke Bluefox. Sehr gute Arbeit!

                      Grüße

                      1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators last edited by

                        @rantanplan:

                        Ich habe auf der CCU Systemvariablen umbenannt.

                        ioBroker hat das nach 2 Std. immer noch nicht mitbekommen.

                        Erst nach rega-Adapter Neustart stimmte wieder alles. `

                        Das ist normal.

                        Bei Änderungen an sysvar oder Programmen oder Namen überhaupt muss der Rega Adapter neu gestartet werden.

                        Ob das auch für den JavaScript Adapter gilt weiss ich nicht.

                        Gruß

                        Rainer

                        1 Reply Last reply Reply Quote 0
                        • rantanplan
                          rantanplan last edited by

                          @Homoran:

                          Das ist normal.

                          Bei Änderungen an sysvar oder Programmen oder Namen überhaupt muss der Rega Adapter neu gestartet werden. `

                          Wusste ich noch nicht.

                          Danke für den Hinweis.

                          Grüße

                          1 Reply Last reply Reply Quote 0
                          • S
                            Solear last edited by

                            Ich finde Blockly total klasse! Gerade für kleinere Sachen zwischendurch, zB schalte Außenlicht ein für 2 Minuten wenn es geklingelt hat. Klappt wunderbar.

                            Nur kriege ich es nicht hin, die Lichteinschaltzeiten nur zwischen Sonnenuntergang Anfang bis Sonnenaufgang Ende einzustellen.

                            Im Javascript Adapter ist Längen/Breitengrad eingestellt.

                            Ich habe folgenden Logikblock versucht (Screenshot zu breit, deshalb als Text):

                            FALLS
                              Aktuelle Zeit SS:MM >= aktuelle Zeit von Sonnenuntergang Anfang 
                                 ODER 
                              Aktuelle Zeit SS:MM <= aktuelle Zeit von Sonnenaufgang Ende
                            DANN...
                            

                            Ich nehme an, die SS:MM kommt nicht der Astrozeit nicht klar, was muss ich stattdessen eingeben?

                            Vielen Dank!!

                            1 Reply Last reply Reply Quote 0
                            • Bluefox
                              Bluefox last edited by

                              @Solear:

                              Ich finde Blockly total klasse! Gerade für kleinere Sachen zwischendurch, zB schalte Außenlicht ein für 2 Minuten wenn es geklingelt hat. Klappt wunderbar.

                              Nur kriege ich es nicht hin, die Lichteinschaltzeiten nur zwischen Sonnenuntergang Anfang bis Sonnenaufgang Ende einzustellen.

                              Im Javascript Adapter ist Längen/Breitengrad eingestellt.

                              Ich habe folgenden Logikblock versucht (Screenshot zu breit, deshalb als Text):

                              FALLS
                                Aktuelle Zeit SS:MM >= aktuelle Zeit von Sonnenuntergang Anfang 
                                   ODER 
                                Aktuelle Zeit SS:MM <= aktuelle Zeit von Sonnenaufgang Ende
                              DANN...
                              

                              Ich nehme an, die SS:MM kommt nicht der Astrozeit nicht klar, was muss ich stattdessen eingeben?

                              Vielen Dank!! `
                              Es muss UND sein.

                              Auf dem git liegt eine Version, wo so was möglich ist:
                              48_2016-09-25_22_34_01-iobroker.admin.png

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators last edited by

                                Jetzt habe ich mich endlich auch an Javascript getraut und mit Blockly angefangen rumzuspielen.

                                Wenn ich mir dann den Code ansehe steht dort :

                                on({id: "hm-rpc.1.MEQ1848733.1.PRESS_SHORT"/*BWM_Bad:1.PRESS_SHORT*/, change: "ne"}, function (obj) {
                                  var value = obj.state.val;
                                  var oldValue = obj.oldState.val;
                                });
                                setState("sayit.0.tts.text", "de;100;" + 'Jetzt ist wieder Ruhe');
                                console.debug("telegram[de][Volume - 100]: " + 'Jetzt ist wieder Ruhe');
                                
                                

                                es ist sayit ausgewählt, aber im debug steht telegram.

                                ist das ok?

                                Gruß

                                Rainer

                                1 Reply Last reply Reply Quote 0
                                • rantanplan
                                  rantanplan last edited by

                                  @Homoran:

                                  es ist sayit ausgewählt, aber im debug steht telegram.

                                  ist das ok? `

                                  Hallo Homoran

                                  Habe gerade bei mir nachgeschaut.

                                  Wenn ich die Debug-Ausgabe aktiviere, steht auch bei mir "Telegram".

                                  Wird wohl ein "copy/paste" Fehler sein. 😉

                                  Grüße

                                  1 Reply Last reply Reply Quote 0
                                  • Bluefox
                                    Bluefox last edited by

                                    BTW: Alle blocke die je gefragt wurden,sind implementiert.

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      Solear last edited by

                                      Yeha!

                                      Zeit "zwischen xxx und xxx" funktioniert!

                                      Hier mein Klingelblockly, welches das Carportlicht bei Klingeldruck zwischen Sonnenunter- und -aufgang einschaltet. Klappt hervorragend!

                                      Danke Bluefox!! :ugeek:
                                      1145_klingellicht.jpg

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        Sral last edited by

                                        Hi Leute!

                                        kleine frage ist es mit ioBrocker und Blockly möglich die Gipos des Raspberrys anzusteuern?

                                        Gruß Sral

                                        1 Reply Last reply Reply Quote 0
                                        • E
                                          Elektroman last edited by

                                          Moin

                                          Ich habe auch eine kleine Frage [emoji12]

                                          Wie kann ich unter Blockly einen URL Post absetzen damit home24 player angesprochen wird ?

                                          1 Reply Last reply Reply Quote 0
                                          • E
                                            Elektroman last edited by

                                            Habe es schon geschafft [emoji851]

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            669
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            32
                                            332
                                            73480
                                            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