Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly mit Bedingung und schedule

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Blockly mit Bedingung und schedule

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

      Nochmal drüber geschaut, Regen counter ändert sich doch nur wen es regnet was Abfrage des Regensensor überflüssig macht?

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

      Send from mobile device

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

        ok, Regencounter als Trigger, dann muss ich aber auch noch die Zeit zwischen den zwei Messwerten in die Rechnung mit aufnehmen.

        Das wollte ich mit dem Schedule vermeiden.

        Aber im MOment triggert er gar nicht und jetzt hat es auch noch aufgehört zu regnen.

        Gruß

        Rainer

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

          mein vorschlag (berechnung und richtigen interval noch selber rein machen) :

          979_regensensor.jpg

          code:

           <block xmlns="http://www.w3.org/1999/xhtml" type="on" id="CKVHK{C@;-WCdd|/6/jS" x="-287.49999999999955" y="162.00000000000034"><field name="OID">javascript.1.regensensor</field>
            <field name="CONDITION">ne</field>
          
            <statement name="STATEMENT"><block type="controls_if" id=";eqydYRi)hw(0c2hzYRr"><mutation else="1"></mutation>
                <value name="IF0"><block type="logic_compare" id="XRg@C4%R}Uvc(jtO@wFN"><field name="OP">EQ</field>
                    <value name="A"><block type="get_value" id="%^44gm#z2NU=||ID5JWZ"><field name="ATTR">val</field>
                        <field name="OID">javascript.1.regensensor</field></block></value> 
                    <value name="B"><block type="logic_boolean" id="{wNK2KE/|taFhGJfaQhy"><field name="BOOL">TRUE</field></block></value></block></value> 
                <statement name="DO0"><block type="timeouts_setinterval" id=";2^a!UX9Z~wMC~7VmeIG"><field name="NAME">interval</field>
                    <field name="INTERVAL">1000</field>
                    <field name="UNIT">ms</field>
                    <statement name="STATEMENT"><block type="debug" id="q5iLJ:;8@o)!Bk_2L?K("><field name="Severity">log</field>
                        <value name="TEXT"><shadow type="text" id="Rdyal|hS7key|KSPuuE5"><field name="TEXT">Hier deine berechnung</field></shadow></value></block></statement></block></statement> 
                <statement name="ELSE"><block type="timeouts_clearinterval" id="`ZX#7qTX-L=A;O*ETN,5"><field name="NAME">interval</field></block></statement></block></statement></block> 
          
          
          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            144_wetter011.jpg
            Der nächste Regen kommt bestimmt!

            Gruß

            Rainer

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

              Nachdem fast der ganze Regen an mir vorbeigegangen ist hat es jetzt endlich angefangen zu regnen.

              mit diesem Blockly (ohne den letzte debug-Block):
              144_regenintensitaet_blockly03.jpg
              kam im log nur "wurde getriggert"

              Als ob der Wert 1 nicht erreicht wurde.

              jetzt habe ich noch einen debug-Block angehängt, der mir den Wert von regensensor_STATE (Number) ausgibt. und genau da hörte der Regen auf 😞

              Dort wird jetzt 0 ausgegeben.

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

                dein regensensor gibt kein true oder false sondern 0 und 1 ?

                glaube dan musst du den mate block mit einem text block tauschen

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

                  Der Funktioniert:
                  144_regenerkennung_blockly.jpg

                  Und so sieht der DP aus:
                  144_regensensor_state.jpg

                  Gruß

                  Rainer

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

                    Eh was funktioniert mit Mathe oder Text Block ?

                    Er kam doch mit dem Mathe Block immer in die oder Schleife?

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

                    Send from mobile device

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

                      Diese Regenerkennungs-Blockly funktioniert mit dem gleichen Trigger und dem Wert von als Mathe Block (Ansagen und Lichtänderung ist korrekt ausgeführt)

                      Das Regenintensität-Blockly funktioniert anscheinend nicht mit der selben Trigger / falls Kombination 😞

                      Der debug-Block "ist getriggert" wird noch ausgelöst, dann kommt nichts mehr :?:

                      Gruß

                      Rainer

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

                        @Homoran:

                        Das Regenintensität-Blockly funktioniert anscheinend nicht mit der selben Trigger / falls Kombination 😞 `

                        meine glaskugel geht gerade nicht, wo ist dein Regenintensität-Blockly ?

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

                          @Dutchman:

                          meine glaskugel geht gerade nicht, wo ist dein Regenintensität-Blockly ? `
                          um das geht es eigentlich die Ganze Zeit:

                          http://forum.iobroker.net/posting.php?m … 87#pr88873

                          Habe inzwischen ganz unten noch einen debug-Block drangehängt, der mir den Wert des regensensor States ausgibt.

                          javascript.0	2017-10-08 16:10:03.336	info	script.js.Regenintensitaet: Check - fertig
                          javascript.0	2017-10-08 16:10:03.336	info	script.js.Regenintensitaet: Der Zustand vom Regensensor ist: 0
                          

                          (Im Moment regnet es mal wieder nicht)

                          Gruß

                          Rainer

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

                            @Homoran:

                            @Dutchman:

                            meine glaskugel geht gerade nicht, wo ist dein Regenintensität-Blockly ? `
                            um das geht es eigentlich die Ganze Zeit:

                            http://forum.iobroker.net/posting.php?m … 87#pr88873

                            Habe inzwischen ganz unten noch einen debug-Block drangehängt, der mir den Wert des regensensor States ausgibt.

                            javascript.0	2017-10-08 16:10:03.336	info	script.js.Regenintensitaet: Check - fertig
                            javascript.0	2017-10-08 16:10:03.336	info	script.js.Regenintensitaet: Der Zustand vom Regensensor ist: 0
                            

                            (Im Moment regnet es mal wieder nicht)

                            Gruß

                            Rainer `

                            hast du meinen block als vorschlag mal probiert ? Also nicht wiederhohle sondern interval

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

                              Noch nicht!

                              Wollte es erst mit meiner Version testen. Ich denke der Fehler liegt woanders. Wenn du mir erklären kannst, warum in meiner Version der debug-block "es regnet" nicht ausgeführt wird wären ich schon ein Stück weiter.

                              Selbst wenn der wiederhole-Block nicht funktioniert hätte doch der debug-Block "es regnet" ausgegeben werden müssen, ODER?

                              Gruß

                              Rainer

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

                                @Homoran:

                                Selbst wenn der wiederhole-Block nicht funktioniert hätte doch der debug-Block "es regnet" ausgegeben werden müssen, ODER? `

                                jup, verstehe ich auch nicht warum er fuer die ansagen geht aber nicht fuer den block mit berechnungen er ist ja gleich.

                                DUe koennste mal zum spass den wert in eine variable schreiben und dan die variable als debug block auslesen vielleicht war er doch was anderes als 1 zu de zeitpunkt?

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

                                  Nachdem keiine Meldungen mehr im Blockly-log kamen und nach neustart des javascript-Adapters Error code7 already running kam, habe ich mir über die Konsole mit top die Prozesse angesehen.

                                  Sobald ich den Block mit falls… unten angehängt hatte, damit er immer läuft stieg der Adapter mit 100% CPU aus.

                                  Da muss ich erst mal nachdenken warum.

                                  Deine Version scheint keine Probleme zu machen.

                                  ...waiting for rain again.

                                  Rainer

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

                                    Bei dem nächsten Regen lief die neue Version nahezu komplett.

                                    nur nach dem Regen hörte sie nicht mehr auf mit dem "Auführen Intervall"

                                    Ich hatte das "sonst - clear interval" vergessen :oops:

                                    Warum der Wert in Liter / Minute immer auf 0 stand??

                                    Ich logge jetzt die Werte mal.

                                    insgesamt fielen 0,3mm Regen - nicht viel aber >0!

                                    Warum meine Version den js-Adapter an die Kapazitätsgrenzen brachte habe ich noch nicht herausbekommen.

                                    Danke für die Hilfe

                                    Rainer

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

                                      @Homoran:

                                      Warum meine Version den js-Adapter an die Kapazitätsgrenzen brachte habe ich noch nicht herausbekommen. `
                                      Wenn Du den Javascript-Code (in Code-Tags) postest, kann Dir vielleicht geholfen werden.

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

                                        Hallo Paul,

                                        ich hoffe ich habe ihn wieder vollständig rekonstruiert:

                                        on({id: 'hm-rpc.0.KEQ1022589.1.STATE', change: "ne"}, function (obj) {
                                          var value = obj.state.val;
                                          var oldValue = obj.oldState.val;
                                          console.log('ist getriggert');
                                          if (getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1) {
                                            console.log('es regnet');
                                            while (!(getState("hm-rpc.0.KEQ1022589.1.STATE").val == 0)) {
                                              schedule("*/3 * * * *", function () {
                                                setState("Messwerte.0.Wetterdaten.Regenintensitaet"/*Regenintensitaet*/, ((getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val) / 3), true);
                                                setStateDelayed("Messwerte.0.Wetterdaten.Regenmenge_alt"/*Regenmenge_alt*/, getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val, true, 200, false);
                                                console.log((String('Die Regenmenge der letzten drei Minuten betrug: ') + String(getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val)));
                                              });
                                            }
                                            console.log('es regnet nicht mehr');
                                          }
                                          console.log('es regnet nicht');
                                        });
                                        console.log('Check - fertig');
                                        console.log((String('Der Zustand vom Regensensor ist: ') + String(getState("hm-rpc.0.KEQ1022589.1.STATE").val)));
                                        

                                        144_regenintensitaet_blockly03.jpg

                                        @paul53:

                                        (in Code-Tags) ` 😄

                                        Das ist der code, den Blockly ausspuckt.

                                        Gruß

                                        Rainer

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

                                          while (!(getState("hm-rpc.0.KEQ1022589.1.STATE").val == 0))
                                          

                                          erzeugt den Dauerstress solange es regnet (Wert > 0). Eine Änderung des Wertes triggert erneut. Also nur

                                          if(value) {
                                             timer = schedule(...)
                                          } else { 
                                             clearSchedule(timer);
                                          }
                                          
                                          console.log('Check - fertig');
                                          console.log((String('Der Zustand vom Regensensor ist: ') + String(getState("hm-rpc.0.KEQ1022589.1.STATE").val)));
                                          

                                          wird nur einmal beim Skriptstart ausgeführt.

                                            if (getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1) {
                                          

                                          Es ist besser mit der Skriptvariablen value zu arbeiten (weniger CPU-Last)

                                            if (value == 1) {
                                          

                                          Ein getState(id) auf die ID, mit der getriggert wurde, sollte man vermeiden.

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

                                            Danke Paul,

                                            das muss ich erst mal verdauen und sehen, wie ich das in Blockly umsetzen kann.

                                            Danke

                                            Rainer

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            710
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            41
                                            5091
                                            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