Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Timer mit Input / Zeitsteuerung Blockly

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Timer mit Input / Zeitsteuerung Blockly

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

      Hallo

      ich stehe auf dem Schlauch und habe mein Problem schon mit diesem Beitrag hier zu lösen versucht, leider gelingt mir dies nicht 😞

      Ich habe das widget ctrl-input datetime verwendet um eine Eingabe der Zeit zu realisieren.

      ctrl Input Datetime.jpg
      Des weiteren hab ich zusätzliche Datenpunkte unter 0_userdata.0 erzeugt

      iobroker.JPG

      im Blockly habe ich folgendes script erstellt

      Timer_Input_Blockly.jpg

      leider funktioniert das aber nicht wie gewollt ... bzw. funktioniert es einmal, nämlich dann wenn ich erst die Zeit im Widget eintrage und erst danach das blockly script starte !
      Wenn ich jetzt erneut eine Start und Endzeit eintrage bekomme ich diese zwar korrekt unter objects->Timer_Input angezeigt aber im Blockly script kommt es zu Fehlermeldungen

      fehler_blockly.JPG

      zum testen hängt da am ende erstmal ein esp8266 mini ...

      was mache ich falsch ? wo liegt mein Denkfehler ?

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @Snupy last edited by paul53

        @snupy sagte: bzw. funktioniert es einmal

        Wenn die Start- und Stoppzeit im Format "YYYY-MM-DD hh:mm:ss" vorliegt, sollte es so funktionieren (Beispiel für Startzeit):

        Bild_2021-04-13_185559.png

        Man muss auf die Änderung der Startzeit triggern und dabei den laufenden Zeitplan stoppen.
        Für Monatsdatum und Monat kann man auch den Stern stehen lassen, wenn nur die Uhrzeit gebraucht wird. Dann funktioniert es auch mit dem Format "hh:mm:ss".

        S 2 Replies Last reply Reply Quote 0
        • S
          Snupy @paul53 last edited by

          @paul53 funktioniert leider nicht ...

          so ich habe es jetzt so gelöst und das scheint gut zu funktionieren, das ganze soll meine 4 Sprenkler Ventile im Garten steueren die aktuell noch mit Blynk laufen.

          Ich habe das schon eingangs bezeichnete widget für den Input der Zeit genutzt.
          Gleichzeitig habe ich jetzt noch einen Schalter mit eingebaut um den Timer ein oder auszuschalten bzw. um zu verhindern das der esp mini über den timer geschalten werden kann.

          vis2.jpg

          Dazu habe ich die Datenpunkte wie im Bild ersichtlich erstellt

          Datenpunkte.JPG

          Das Blockly sieht jetzt so aus

          Timer_Input_mit-_On_Off.jpg

          Ich lade das Blockly dafür als .txt mit hoch ... Blockly_Timer_mit_Input_und_On_Off.txt

          S 1 Reply Last reply Reply Quote 0
          • S
            Snupy @Snupy last edited by Snupy

            gelöscht 😉

            1 Reply Last reply Reply Quote 0
            • S
              Snupy @paul53 last edited by

              @paul53

              ich habe dein blockly heute nochmal probiert komme da aber auf keinen grünen zweig ...
              hast du das mal getestet ? ich bekomme jede mange rote errors 😉 vielleicht kannst du mir ja nochmal auf die Sprünge helfen !

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Snupy last edited by paul53

                @snupy sagte: hast du das mal getestet ?

                Ja, gerade: Habe Startzeit auf "2021-04-15 17:03:00" gesetzt und dann das Skript gestartet, gleich nach 17:03:00 bei laufendem Skript die Startzeit auf 17:04:00 geändert.

                Blockly_temp.JPG

                <xml xmlns="https://developers.google.com/blockly/xml">
                 <variables>
                   <variable id="0/dnk[:V}C~?v.v@.]n%">startzeit</variable>
                   <variable type="cron" id="schedule1">schedule1</variable>
                 </variables>
                 <block type="procedures_callnoreturn" id="EyKkr2b9:=(hJ+Q`ixHf" x="87" y="-87">
                   <mutation name="start"></mutation>
                   <next>
                     <block type="comment" id="eian95Go_0Q2*G=BLO*z">
                       <field name="COMMENT">Startzeit</field>
                       <next>
                         <block type="on_ext" id="_jkCnUMqcOR*1l1EYej9">
                           <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                           <field name="CONDITION">ne</field>
                           <field name="ACK_CONDITION"></field>
                           <value name="OID0">
                             <shadow type="field_oid" id=",Y%6conFs}])9o#*MZ+[">
                               <field name="oid">0_userdata.0.Timer_Input.Startzeit</field>
                             </shadow>
                           </value>
                           <statement name="STATEMENT">
                             <block type="schedule_clear" id="5kA8XHik3Nb;i(naWmKs">
                               <field name="NAME">schedule1</field>
                               <next>
                                 <block type="procedures_callnoreturn" id="afgs_zQh@`O^EmKMLp;i">
                                   <mutation name="start"></mutation>
                                 </block>
                               </next>
                             </block>
                           </statement>
                         </block>
                       </next>
                     </block>
                   </next>
                 </block>
                 <block type="procedures_defnoreturn" id="ZEBjs1GLZIW-n|m;7$lg" x="262" y="12">
                   <field name="NAME">start</field>
                   <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                   <statement name="STACK">
                     <block type="variables_set" id="9n|FtG`?YyK*uOV{{8KL">
                       <field name="VAR" id="0/dnk[:V}C~?v.v@.]n%">startzeit</field>
                       <value name="VALUE">
                         <block type="convert_from_date" id="`7xWyT/UN!,wdF}yUl]j">
                           <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                           <field name="OPTION">object</field>
                           <value name="VALUE">
                             <block type="get_value" id="{ZexKrQmTZs@I]DFZE9C">
                               <field name="ATTR">val</field>
                               <field name="OID">0_userdata.0.Timer_Input.Startzeit</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="schedule_create" id="?[E=a-%a_l*087J%;^C7">
                           <field name="NAME">schedule1</field>
                           <value name="SCHEDULE">
                             <shadow type="field_cron" id=",_qaV`ld5JrZ8B/-N_I;">
                               <field name="CRON">* * * * *</field>
                             </shadow>
                             <block type="cron_builder" id="S)/Ek8/wPO)`h;yHE*R/">
                               <mutation xmlns="http://www.w3.org/1999/xhtml" seconds="false" as_line="false"></mutation>
                               <field name="LINE">FALSE</field>
                               <field name="WITH_SECONDS">FALSE</field>
                               <value name="DOW">
                                 <shadow type="text" id="72[2Nn4WLE-4^ZUcUi6K">
                                   <field name="TEXT">*</field>
                                 </shadow>
                               </value>
                               <value name="MONTHS">
                                 <shadow type="text" id="S.roWs^?9:=9%.cm-l{k">
                                   <field name="TEXT">*</field>
                                 </shadow>
                               </value>
                               <value name="DAYS">
                                 <shadow type="text" id=";XvfK#,o|@dCDcR2zYht">
                                   <field name="TEXT">*</field>
                                 </shadow>
                               </value>
                               <value name="HOURS">
                                 <shadow type="text" id="{%h[4.!lN{Xg4Y}R!Cip">
                                   <field name="TEXT">*</field>
                                 </shadow>
                                 <block type="convert_from_date" id="$)qn%v{T#W[@U6e%6~6$">
                                   <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                   <field name="OPTION">h</field>
                                   <value name="VALUE">
                                     <block type="variables_get" id="j7Rc[KqyM(LhuE8*Il!=">
                                       <field name="VAR" id="0/dnk[:V}C~?v.v@.]n%">startzeit</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <value name="MINUTES">
                                 <shadow type="text" id="cHIYW2y;Xt{Q@+2#To]g">
                                   <field name="TEXT">*</field>
                                 </shadow>
                                 <block type="convert_from_date" id="V}5Lzxq?bnhKoxW$h4tg">
                                   <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                   <field name="OPTION">m</field>
                                   <value name="VALUE">
                                     <block type="variables_get" id="6)65ojQ`)Axe)Vw;_rs@">
                                       <field name="VAR" id="0/dnk[:V}C~?v.v@.]n%">startzeit</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <statement name="STATEMENT">
                             <block type="debug" id=".g^a?WR}*(`-8Y%,=5,0">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id="Ci8KvvD-]PLt$j01^3uM">
                                   <field name="TEXT">Aktion zur Startzeit</field>
                                 </shadow>
                               </value>
                             </block>
                           </statement>
                         </block>
                       </next>
                     </block>
                   </statement>
                 </block>
                </xml>
                

                EDIT: Später auf Zeiten "17:21:00" und "17:23:00" (ohne Datum) geändert: Funktioniert.

                S 1 Reply Last reply Reply Quote 0
                • S
                  Snupy @paul53 last edited by

                  @paul53

                  @paul53

                  vermutlich bin ich echt zu blöd ... das script bringt bei mir sofort error ... habe extra nochmal nen neuen Datenpunkt unter 0_userdata.0.Timer_Input.Timer_Input_Startzeit angelegt
                  irgendwo muß ich da ja was falsch machen 😞

                  Blockly error.JPG

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Snupy last edited by paul53

                    @snupy sagte: irgendwo muß ich da ja was falsch machen

                    Poste mal den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.
                    Welche zusätzlichen Informationen liefert der Tab "Log"?

                    @snupy sagte in Timer mit Input / Zeitsteuerung Blockly:

                    habe extra nochmal nen neuen Datenpunkt unter 0_userdata.0.Timer_Input.Timer_Input_Startzeit angelegt

                    Weshalb? Der von mir angelegte DP entsprach genau Deiner Struktur (Nur der Name war anders).

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      Snupy @paul53 last edited by Snupy

                      @paul53

                      blockly_timer.JPG

                      habe zwischenzeitlich mal die Endzeit mit eingefügt ...
                      wo finde ich den Tab "Log" der zusätzliche Informationen liefert ? 😉 .... du meinst den hier ....

                      log.JPG

                      var startzeit, endzeit, schedule1, schedule2;
                      
                      // Beschreibe diese Funktion …
                      function start() {
                        startzeit = getDateObject(getState("0_userdata.0.Timer_Input.Timer_Input_Startzeit").val).getTime();
                        schedule1 = schedule((getDateObject(startzeit).getMinutes()).trim() + ' ' + getDateObject(startzeit).getHours().trim() + ' ' + '*'.trim() + ' ' + '*'.trim() + ' ' + '*'.trim(), function () {
                          console.log('Aktion zur Startzeit');
                          setState("sonoff.0.DVES_D3CA1E.POWER"/*DVES_D3CA1E POWER*/, true);
                        });
                      }
                      
                      // Beschreibe diese Funktion …
                      function start2() {
                        endzeit = getDateObject(getState("0_userdata.0.Timer_Input.Timer_Input_Endzeit").val).getTime();
                        schedule2 = schedule((getDateObject(endzeit).getMinutes()).trim() + ' ' + getDateObject(endzeit).getHours().trim() + ' ' + '*'.trim() + ' ' + '*'.trim() + ' ' + '*'.trim(), function () {
                          console.log('Aktion zur Endzeit');
                          setState("sonoff.0.DVES_D3CA1E.POWER"/*DVES_D3CA1E POWER*/, false);
                        });
                      }
                      
                      
                      start();
                      on({id: '0_userdata.0.Timer_Input.Timer_Input_Startzeit', change: "ne"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        (function () {if (schedule1) {clearSchedule(schedule1); schedule1 = null;}})();
                        start();
                      });
                      
                      start2();
                      on({id: '0_userdata.0.Timer_Input.Timer_Input_Endzeit', change: "ne"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        (function () {if (schedule2) {clearSchedule(schedule2); schedule2 = null;}})();
                        start2();
                      });
                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @Snupy last edited by paul53

                        @snupy
                        Bei mir enthält die angemeckerte Zeile 6 vor .trim() noch ein .toString()

                          schedule1 = schedule((getDateObject(startzeit).getMinutes()).toString().trim() + ' ' + getDateObject(startzeit).getHours().toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim() + ' ' + '*'.toString().trim(), async function () {
                        

                        Welche Version des javascript-Adapters? Meine: 5.0.5

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          Snupy @paul53 last edited by

                          @paul53

                          habe zwei raspis einen 3+ als Backup und einen 4'er ... auf beiden läuft / lief js 4.8.4
                          auf dem 4'er habe ich gerade js geupdatet auf 5.0.14 ... ergebniss ... nüscht ... geht nicht

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

                            so extra zurück auf 5.0.5 ... raspi neustart ... nüscht

                            javascript.0 2021-04-15 23:17:38.889 error (2508) at Script.runInContext (vm.js:131:20)
                            javascript.0 2021-04-15 23:17:38.888 error (2508) at script.js.Timer_Test:39:3
                            javascript.0 2021-04-15 23:17:38.888 error (2508) at script.js.Timer_Test:22:1
                            javascript.0 2021-04-15 23:17:38.888 error (2508) at start (script.js.Timer_Test:6:64)
                            javascript.0 2021-04-15 23:17:38.887 error (2508) script.js.Timer_Test: TypeError: getDateObject(...).getMinutes(...).trim is not a function

                            var startzeit, endzeit, schedule1, schedule2;
                            
                            // Beschreibe diese Funktion …
                            function start() {
                              startzeit = getDateObject(getState("0_userdata.0.Timer_Input.Timer_Input_Startzeit").val).getTime();
                              schedule1 = schedule((getDateObject(startzeit).getMinutes()).trim() + ' ' + getDateObject(startzeit).getHours().trim() + ' ' + '*'.trim() + ' ' + '*'.trim() + ' ' + '*'.trim(), function () {
                                console.log('Aktion zur Startzeit');
                                setState("sonoff.0.DVES_D3CA1E.POWER"/*DVES_D3CA1E POWER*/, true);
                              });
                            }
                            
                            // Beschreibe diese Funktion …
                            function start2() {
                              endzeit = getDateObject(getState("0_userdata.0.Timer_Input.Timer_Input_Endzeit").val).getTime();
                              schedule2 = schedule((getDateObject(endzeit).getMinutes()).trim() + ' ' + getDateObject(endzeit).getHours().trim() + ' ' + '*'.trim() + ' ' + '*'.trim() + ' ' + '*'.trim(), function () {
                                console.log('Aktion zur Endzeit');
                                setState("sonoff.0.DVES_D3CA1E.POWER"/*DVES_D3CA1E POWER*/, false);
                              });
                            }
                            
                            
                            start();
                            on({id: '0_userdata.0.Timer_Input.Timer_Input_Startzeit', change: "ne"}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              (function () {if (schedule1) {clearSchedule(schedule1); schedule1 = null;}})();
                              start();
                            });
                            
                            start2();
                            on({id: '0_userdata.0.Timer_Input.Timer_Input_Endzeit', change: "ne"}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                              (function () {if (schedule2) {clearSchedule(schedule2); schedule2 = null;}})();
                              start2();
                            });
                            
                            
                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @Snupy last edited by paul53

                              @snupy
                              Vielleicht muss der Block "CRON" gelöscht und neu eingefügt werden?

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                Snupy @paul53 last edited by

                                @paul53

                                👏 👍

                                du bist ein Held ! mach dir ein Bier auf oder was auch immer !!!

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

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                447
                                Online

                                31.7k
                                Users

                                79.8k
                                Topics

                                1.3m
                                Posts

                                2
                                14
                                2101
                                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