Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly

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

      Hallo zusammen…

      bin schon eine ganze weile hier im Forum am mitlesen und versuche meinen iobroker Schritt für Schritt zu erweitern.

      Bis jetzt habe ich auch alles soweit ans laufen bekommen, was ich mir vorgenommen habe.

      Auch wenn es mal nicht auf Anhieb lief, konnte ich mir mit etwas Einarbeitung und den Forenbeiträgen weiter helfen.

      Vielen Dank, dass ihr ALLE mir die Möglichkeit gebt dieses schöne Hobby durchzuführen.... 🙂

      Nun habe ich zwei kleine Probleme mit den CRON Regel Blöcken beim Javascribt Adapter 3.3.9(Blockly):

      1).

      Ich habe ein Testscribt mit 2 schedule Funktionen erstellt (Alle 5 Sekunden reagieren):

      schedule1 funktioniert. schedule2 nicht.

      Bild:

      ! 2847_blockly1.jpg

      Code:

      ! ````
      <xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule_create" id=")w*_@kZfp}wh{:,zt^dp" x="13" y="38"><field name="NAME">schedule1</field>
      <value name="SCHEDULE"><shadow type="field_cron" id="#7ROUqI.hP7)4Kgr/B;G"><field name="CRON">/5 * * * * </field></shadow></value>
      <statement name="STATEMENT"><block type="debug" id="f
      l{jms6DNNAlSqT=|xB"><field name="Severity">log</field>
      <value name="TEXT"><shadow type="text" id="P?UPs+!frJ+kMY9vG]+o"><field name="TEXT">test1</field></shadow></value></block></statement></block>
      <block type="schedule_create" id="k?{duPKI(:xeEPrCVNK" x="338" y="38"><field name="NAME">schedule2</field> <value name="SCHEDULE"><shadow type="field_cron" id="w7;h1wL|A;7AFgdJ8WW"><field name="CRON">1 * * * * </field></shadow>
      <block type="cron_builder" id="0IhP
      =FjR6(g{V5hta/^"><mutation seconds="true" as_line="false"></mutation>
      <field name="LINE">FALSE</field>
      <field name="WITH_SECONDS">TRUE</field>
      <value name="DOW"><shadow type="text" id="K/90TAJ0zQz|4N4e+d9Q"><field name="TEXT">
      </field></shadow></value>
      <value name="MONTHS"><shadow type="text" id="dh2x~el1zGc73^^UoMe~"><field name="TEXT"></field></shadow></value>
      <value name="DAYS"><shadow type="text" id="H.IKY8gH9=CRc}%dv2S@"><field name="TEXT">
      </field></shadow></value>
      <value name="HOURS"><shadow type="text" id="NgPBx0/rwQlsl1fv_sB}"><field name="TEXT"></field></shadow></value>
      <value name="MINUTES"><shadow type="text" id="Yo?dPJ6)9~GR9Fo29U"><field name="TEXT">
      </field></shadow></value>
      <value name="SECONDS"><shadow type="text" id="[UH-7(xbbKUda0sLoBUm"><field name="TEXT">*/5</field></shadow></value></block></value>
      <statement name="STATEMENT"><block type="debug" id="H+1uUHhk0_l89VF-]Blc"><field name="Severity">log</field>
      <value name="TEXT"><shadow type="text" id="mZjB4vPTDU@bC7BzYO?P"><field name="TEXT">test2</field></shadow></value></block></statement></block></xml>

      
      Ich habe mir den Code zeigen lassen und kopiert, ein Javascript erstellt und den Code eingefügt. Der sieht so aus:
      
      

      var schedule1, schedule2;

      schedule1 = schedule('*/5 * * * * *', function () {
      console.log('test1');
      });

      schedule2 = schedule('/5' + '' + '' + '' + '' + '', function () {
      console.log('test2');
      });

      
      Da es so natürlich auch nicht geklappt hat, habe ich ein bisschen rum gespielt und den Code mehrfach geändert bis er funktioniert hat :D .
      
      

      var schedule1, schedule2;

      [img][attachment=0]Blockly1.jpg[/attachment][/img]

      schedule1 = schedule('*/5 * * * * *', function () {
      console.log('test1');
      });

      schedule2 = schedule('/5 '+' '+'* '+'* '+'* '+'* ', function () {
      console.log('test2');
      });

      
      Ich habe vor dem "+" die Lehrzeichen entfernt und nach den "*" (oder wert) ein Lehrzeichen eingefügt.
      
      Fortsetzung folgt…
      1 Reply Last reply Reply Quote 0
      • H
        Home4.0 last edited by

        2).

        Auch hier habe ein Testscribt mit 2 schedule Funktionen erstellt:

        Bild:

        ! 2847_blockly2.png

        Code:

        ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
        ! <block type="schedule_create" id="oZd4%dWZ@z#+7sUMcGo" x="63" y="63"><field name="NAME">schedule1</field> ! <value name="SCHEDULE"><shadow type="field_cron" id="~tK3-6Ef4tS0vaL|0,Q"><field name="CRON">1 2 3 4 5 6</field></shadow></value></block>
        ! <block type="schedule_create" id="D{_3~Coo5f+b7gX!80-x" x="388" y="63"><field name="NAME">schedule2</field>
        ! <value name="SCHEDULE"><shadow type="field_cron" id=":NG~7N4sV7pft=xp7m8j"><field name="CRON">* * * * </field></shadow>
        ! <block type="cron_builder" id="HhZNC.;2U^au6
        (gh2"><mutation seconds="true" as_line="false"></mutation>
        ! <field name="LINE">FALSE</field>
        ! <field name="WITH_SECONDS">TRUE</field>
        ! <value name="DOW"><shadow type="text" id=",g|cpO243yOf=Jl%%P+r"><field name="TEXT">6</field></shadow></value>
        ! <value name="MONTHS"><shadow type="text" id="Iw;#Qu1m3?KY24PMc:f|"><field name="TEXT">5</field></shadow></value>
        ! <value name="DAYS"><shadow type="text" id="QOM@vOJk;Txw+7XXo~9"><field name="TEXT">4</field></shadow></value>
        ! <value name="HOURS"><shadow type="text" id="l.AwHbHq1Qm[
        !8Ss4rt"><field name="TEXT">3</field></shadow></value>
        ! <value name="MINUTES"><shadow type="text" id="xQ!OYJs/+%/sf4tm[#/X"><field name="TEXT">2</field></shadow></value>
        ! <value name="SECONDS"><shadow type="text" id="ObrwPIP5p|ad`ShT575f"><field name="TEXT">1</field></shadow></value></block></value></block></xml>

        Wenn man sich jetzt den Code anzeigen lässt, sieht man das die Reihenfolge (Minute, Stund, etc) unterschiedlich ist.

        Es sieht aus als wäre der Monat zwischen Minute und Stunde gerutscht.

        var schedule1, schedule2;
        
        schedule1 = schedule('1 2 3 4 5 6', function () {
        });
        
        schedule2 = schedule('1' + '5' + '2' + '3' + '4' + '6', function () {
        });
        
        

        Ich hoffe meine Vermutung ist richtig, dass da etwas falsch ist und es kann jemand bestätigen.

        Vielen Dank noch mal und weiter so….

        edit: Code eingefügt

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

          Hallo Home4.0

          Kann ich bestätigen.

          Werde den Bug mal bei Trello reinstellen.

          Grüße

          1 Reply Last reply Reply Quote 0
          • H
            Home4.0 last edited by

            Hallo rantanplan,

            Danke fürs Testen und den Trello Eintrag…

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

              @Home4.0:

              Danke fürs Testen und den Trello Eintrag… `
              Ist erledigt. Mal schauen was passiert.

              Grüße

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

                Hallo Home4.0

                Bluefox hat den Fehler in der 3.3.10 behoben.

                Bei mir läuft alles richtig.

                Vor dem Testen altes Script neu speichern.

                Grüße

                1 Reply Last reply Reply Quote 0
                • H
                  Home4.0 last edited by

                  Hallo rantanplan,

                  danke für die Info…

                  Hab es gerade mal ausprobiert und kann leider nur Problem 1 als gelöst melden.

                  Der Block funktioniert nun, allerdings besteht Problem 2. weiterhin...(falsche Reihenfolge Minute, Stunde, Monat, etc)

                  Blockly-Code:

                  ! ````
                  <xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule_create" id="oZd4%dWZ@z#+7sUMcGo" x="63" y="63"><field name="NAME">schedule1</field> <value name="SCHEDULE"><shadow type="field_cron" id="~tK3-6Ef4tS0vaL|0,Q"><field name="CRON">1 2 3 4 5 6</field></shadow></value></block>
                  <block type="schedule_create" id="D{_3~Coo5f+b7gX!80-x" x="388" y="63"><field name="NAME">schedule2</field>
                  <value name="SCHEDULE"><shadow type="field_cron" id=":NG~7N4sV7pft=xp7m8j"><field name="CRON">* * * * </field></shadow>
                  <block type="cron_builder" id="HhZNC.;2U^au6
                  (gh2"><mutation seconds="true" as_line="false"></mutation>
                  <field name="LINE">FALSE</field>
                  <field name="WITH_SECONDS">TRUE</field>
                  <value name="DOW"><shadow type="text" id=",g|cpO243yOf=Jl%%P+r"><field name="TEXT">6</field></shadow></value>
                  <value name="MONTHS"><shadow type="text" id="Iw;#Qu1m3?KY24PMc:f|"><field name="TEXT">5</field></shadow></value>
                  <value name="DAYS"><shadow type="text" id="QOM@vOJk;Txw+7XXo~9"><field name="TEXT">4</field></shadow></value>
                  <value name="HOURS"><shadow type="text" id="l.AwHbHq1Qm[
                  !8Ss4rt"><field name="TEXT">3</field></shadow></value>
                  <value name="MINUTES"><shadow type="text" id="xQ!OYJs/+%/sf4tm[#/X"><field name="TEXT">2</field></shadow></value>
                  <value name="SECONDS"><shadow type="text" id="ObrwPIP5p|ad`ShT575f"><field name="TEXT">1</field></shadow></value></block></value></block></xml>

                  
                  

                  var schedule1, schedule2;

                  schedule1 = schedule('1 2 3 4 5 6', function () {
                  });

                  schedule2 = schedule('1'.trim() + ' ' + '5'.trim() + ' ' + '2'.trim() + ' ' + '3'.trim() + ' ' + '4'.trim() + ' ' + '6'.trim(), function () {
                  });

                  
                  Habe das Update durchgeführt und ein komplett neues Script erstellt.
                  
                  Hast du eine Idee warum es bei mir nicht klappt?
                  
                  @Bluefox; Danke für die schnelle Änderung
                  
                  Grüße….
                  1 Reply Last reply Reply Quote 0
                  • Bluefox
                    Bluefox last edited by

                    @Home4.0:

                    Hallo rantanplan,

                    danke für die Info…

                    Hab es gerade mal ausprobiert und kann leider nur Problem 1 als gelöst melden.

                    Der Block funktioniert nun, allerdings besteht Problem 2. weiterhin...(falsche Reihenfolge Minute, Stunde, Monat, etc)

                    Blockly-Code:

                    ! ````
                    <xml xmlns="http://www.w3.org/1999/xhtml"><block type="schedule_create" id="oZd4%dWZ@z#+7sUMcGo" x="63" y="63"><field name="NAME">schedule1</field> <value name="SCHEDULE"><shadow type="field_cron" id="~tK3-6Ef4tS0vaL|0,Q"><field name="CRON">1 2 3 4 5 6</field></shadow></value></block>
                    <block type="schedule_create" id="D{_3~Coo5f+b7gX!80-x" x="388" y="63"><field name="NAME">schedule2</field>
                    <value name="SCHEDULE"><shadow type="field_cron" id=":NG~7N4sV7pft=xp7m8j"><field name="CRON">* * * * </field></shadow>
                    <block type="cron_builder" id="HhZNC.;2U^au6
                    (gh2"><mutation seconds="true" as_line="false"></mutation>
                    <field name="LINE">FALSE</field>
                    <field name="WITH_SECONDS">TRUE</field>
                    <value name="DOW"><shadow type="text" id=",g|cpO243yOf=Jl%%P+r"><field name="TEXT">6</field></shadow></value>
                    <value name="MONTHS"><shadow type="text" id="Iw;#Qu1m3?KY24PMc:f|"><field name="TEXT">5</field></shadow></value>
                    <value name="DAYS"><shadow type="text" id="QOM@vOJk;Txw+7XXo~9"><field name="TEXT">4</field></shadow></value>
                    <value name="HOURS"><shadow type="text" id="l.AwHbHq1Qm[
                    !8Ss4rt"><field name="TEXT">3</field></shadow></value>
                    <value name="MINUTES"><shadow type="text" id="xQ!OYJs/+%/sf4tm[#/X"><field name="TEXT">2</field></shadow></value>
                    <value name="SECONDS"><shadow type="text" id="ObrwPIP5p|ad`ShT575f"><field name="TEXT">1</field></shadow></value></block></value></block></xml>

                    
                    

                    var schedule1, schedule2;

                    schedule1 = schedule('1 2 3 4 5 6', function () {
                    });

                    schedule2 = schedule('1'.trim() + ' ' + '5'.trim() + ' ' + '2'.trim() + ' ' + '3'.trim() + ' ' + '4'.trim() + ' ' + '6'.trim(), function () {
                    });

                    
                    Habe das Update durchgeführt und ein komplett neues Script erstellt.
                    
                    Hast du eine Idee warum es bei mir nicht klappt?
                    
                    @Bluefox; Danke für die schnelle Änderung
                    
                    Grüße…. `  
                    

                    Fixed in 3.3.11

                    1 Reply Last reply Reply Quote 0
                    • H
                      Home4.0 last edited by

                      jetzt läuft's 😄

                      Vielen Dank für die schnelle Hilfe Bluefox…...

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

                        Hallo

                        habe gelesen das auch andere Probleme mit der den Funktionen "Sendto" in Blockly hatten oder haben.

                        Bei mir kann ich die Objekte einfach nicht aus dem Menü ziehen. Alle anderen Menüs funktionieren.

                        Diverse deinstallationen/reinstallationen/neustarts haben nichts ergeben.

                        Gibt es zu diesem Problem vielleicht eine Idee?

                        Grüsse

                        Michael

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

                          @Elektroman:

                          Habe es schon geschafft [emoji851] `

                          darf ich fragen, wie du das mit dem mediaplayer gelöst hast?

                          1 Reply Last reply Reply Quote 0
                          • I
                            IchBins1982 last edited by

                            Hallo,

                            gibt es eine Möglichkeit einen schedule - Trigger dynamisch zu machen? Also die Zeiten variabel z.B. aus dem VIS zu setzten. Ich habe leider nichts gefunden oder vielleicht je übersehen.

                            Ich bekomme es nämlich nicht hin. Ich muss immer zuerst das Script neu starten damit die Zeiten die sich gerade in den Variablen befinden übernommen werden. Ich habe dafür diese Triggerfunktion genommen.
                            3891_unbenannt.png

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

                              Poste Mal dein komplettes blockly

                              –-----------------------

                              Send from mobile device

                              1 Reply Last reply Reply Quote 0
                              • I
                                IchBins1982 last edited by

                                Würde ich ja machen, bin aber leider nicht zuhause. Also kann ich es erst heute Abend machen.

                                1 Reply Last reply Reply Quote 0
                                • I
                                  IchBins1982 last edited by

                                  Hab mich gerade mal mit dem Handy zuhause drauf geschaltet und einen Screenshot vom Blockly gemacht.

                                  So sieht es aus.

                                  Wie gesagt es funktioniert auch soweit. Nur wenn ich die CRON Zeit per VIS verändere klappt das nicht. Ich muss dann erst das Script neu starten damit diese übernommen wird.
                                  3891_blockly.jpg

                                  1 Reply Last reply Reply Quote 0
                                  • A
                                    andyb last edited by

                                    Das würde mich auch auch brennend interesieren. So wie ich das im Moment gelöst habe ist es bestimmt viel zu umständlich.

                                    Ich habe Datenpunkte wo Minuten/Stunden eingeben werden, da soll dann der schedule auslösen. Damit der schedule aber bei Änderung funktioniert überwache ich in einem anderen Skript die Datenpunkte und löse dann bei Änderung ein Neustart des anderen Skriptes aus.
                                    1586_2017-11-29_09_12_43-iobroker.admin.jpg
                                    1586_2017-11-29_09_13_18-iobroker.admin.jpg

                                    1 Reply Last reply Reply Quote 0
                                    • AlCalzone
                                      AlCalzone Developer last edited by

                                      Mal als Idee wie ich es in JavaScript machen würde, möglicherweise lässt sich das auf Blockly übertragen:

                                      • Code innerhalb des Schedules in eine Funktion packen, diese dann aus dem Schedule aufrufen.

                                      • Eine Variable vorhalten, in der die Referenz auf den Schedule gespeichert wird.

                                      • Bei Skriptstart den Schedule erstellen und die Referenz merken

                                      • Bei Updates der Zeit-DPs den referenzierten Schedule stoppen und einen neuen erstellen (auch wieder merken).

                                      Dann ist kein Skript-Neustart erforderlich. Der Code zum Reagieren auf Änderungen kann aber in beiden Fällen innerhalb des gleichen Skripts liegen. Skripte können sich selbst neu starten.

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

                                        In der Basis wird immer ein Script Neustart nötig sein wen man die cron Regel ändert, der shedule muss sich ja aktivieren und das passiert nur beim Starten des Script

                                        Also Variable geändert = Trigger zum Neustart des Scriptes das könnten man in einem separaten Script als function bauen

                                        –-----------------------

                                        Send from mobile device

                                        1 Reply Last reply Reply Quote 0
                                        • AlCalzone
                                          AlCalzone Developer last edited by

                                          @Dutchman:

                                          In der Basis wird immer ein Script Neustart nötig sein wen man die cron Regel ändert `
                                          Meinst du Blockly statt "Basis"? In JS kann ich den Schedule bei laufendem Skript einfach löschen und neu anlegen. Daher auch mein Vorschlag.

                                          @Dutchman:

                                          Trigger zum Neustart des Scriptes das könnten man in einem separaten Script `
                                          Das muss IMO kein separates Skript sein.

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

                                            Cron Regeln automatisiert ändern und Script neustarten finde ich sehr heikel.

                                            Falsche Regel oder ein falsches Zeichen und schon kann sich der Trigger verschlucken und schlimmstenfalls die ganze Instanz stilllegen.

                                            Warum nicht einen ganz normalen Trigger, der jede Minute Zeiten vergleicht und entsprechend reagiert.

                                            Grüße

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            304
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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