Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Regenmenge der letzten drei Tage berechnen

    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

    Regenmenge der letzten drei Tage berechnen

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

      Hallo.
      Ich möchte gern meine Bewässerung nach Niederschlagsmenge beregnen lassen.
      Ich verzweifle gerade daran wie ich die Regenmenge der letzten drei Tage in einem Datenpunkt abbilden kann.
      Ich habe eine Wetterstation. Diese gibt mir, unter Zuhilfenahme von Underground Weather und/oder dem Wetterstation Wlan Skript, einen Niederschlagswert in mm pro Tag.

      Für meine Bewässerung muss ich alle drei Tage ca. 15-20 mm beregnen.

      Jetzt muss ich nur wissen, wieviel mm es in den letzten drei Tagen geregnet hat.
      Die Daten pro Tag habe ich ja. Diese könnte ich ja immer Abends in einen Datenpunkt schreiben lassen.

      Ich komm einfach nicht drauf, wie ich ein Blockly Skript schreiben soll, was immer nur die Daten der letzten drei Tage zusammenrechnet.

      Ich kann doch nicht der erste sein, der diese Daten braucht, ich kann aber einfach nichts im Forum finden.

      Oder denke ich da zu kompliziert?

      Es muss doch irgendjemanden geben, der das gleiche vor hat wie ich.

      Kann mir jemand helfen?

      Gruß

      Glasfaser paul53 2 Replies Last reply Reply Quote 0
      • Glasfaser
        Glasfaser @G.Hawk last edited by

        @Martin-0

        Du könntest dieses Script in diesem Thread : Regenmengenmesser Ventus W174 Regenmenge berechnen
        für deine Berechnung nutzen .

        G 1 Reply Last reply Reply Quote 0
        • G
          G.Hawk @Glasfaser last edited by

          Die Menge pro Tag habe ich ja ich weiß nur nicht wie man das macht dass man drei Tage zusammen rechnet und das dann immer die letzten drei Tage sind.
          Die Regenmenge pro Tag steht mir ja zur Verfügung . Ich weiss nur nicht wie ich das umsetze.

          Wenn heute Donnerstag ist dann möchte ich in einem Datenpunkt die Regenmengen aus Dienstag Mittwoch und Donnerstag haben.

          Und am Freitag dann die Regenmengen aus Mittwoch Donnerstag und Freitag.

          Ich hoffe es ist halbwegs verständlich es sei denn irgendeiner hat eine ganz andere Idee wie man so etwas machen kann.

          Glasfaser paul53 2 Replies Last reply Reply Quote 0
          • Glasfaser
            Glasfaser @G.Hawk last edited by

            @Martin-0 sagte in Regenmenge der letzten drei Tage berechnen:

            Die Menge pro Tag habe ich ja

            Das war mir klar ... hast du überhaupt im Thread reingeschaut , da auch der Wert gestern drin ist ... das Script kannst du doch erweitern ..

            bzw. deshalb habe ich dir auch geschrieben ..

            für deine Berechnung nutzen .

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @G.Hawk last edited by paul53

              @Martin-0 sagte:

              drei Tage zusammen rechnet und das dann immer die letzten drei Tage sind.

              Prinzip:

              Blockly_temp.JPG

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="rq{##2}brF,H1z%75~/w">Liste</variable>
                 <variable id="QPe?Ou3i?s5i$GZ]RgQ$">regen_heute</variable>
               </variables>
               <block type="create" id="nv(4QW_Yc*WF}5~#c8ai" inline="true" x="87" y="-38">
                 <field name="NAME">0_userdata.0.Regen.Summe</field>
                 <value name="VALUE">
                   <block type="math_number" id="5cdmh:rGuK2=?CE-Iz+C">
                     <field name="NUM">0</field>
                   </block>
                 </value>
                 <value name="COMMON">
                   <block type="text" id=":=Y/DRPU6KX,QR+y:*[=">
                     <field name="TEXT">{"type":"number","unit":"mm"}</field>
                   </block>
                 </value>
                 <next>
                   <block type="create" id="w2aXX+,#|:IJF~Jt[nw3" inline="true">
                     <field name="NAME">0_userdata.0.Regen.Liste</field>
                     <value name="VALUE">
                       <block type="text" id=":Q`./R$`N-h!]cMlLZrv">
                         <field name="TEXT">[0,0,0]</field>
                       </block>
                     </value>
                     <value name="COMMON">
                       <block type="text" id="4`J!WIn~FLikOJEpggr3">
                         <field name="TEXT">{"type":"string"}</field>
                       </block>
                     </value>
                     <statement name="STATEMENT">
                       <block type="variables_set" id="ctvQuB(=dril+qij,U;2">
                         <field name="VAR" id="rq{##2}brF,H1z%75~/w">Liste</field>
                         <value name="VALUE">
                           <block type="convert_json2object" id="hs5#qjmV;#%if`|ni)ig">
                             <value name="VALUE">
                               <block type="get_value_var" id="VH4[k!l:Z/I21BZ~#DOX">
                                 <field name="ATTR">val</field>
                                 <value name="OID">
                                   <shadow type="text" id="ET%`1Bx|Mta}PXul9=JF">
                                     <field name="TEXT">0_userdata.0.Regen.Liste</field>
                                   </shadow>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </statement>
                     <next>
                       <block type="schedule" id="UV4%O=Jcbk523]]01mu}">
                         <field name="SCHEDULE">59 23 * * *</field>
                         <statement name="STATEMENT">
                           <block type="variables_set" id="2M}Njb/0|6p3KHC~T,#E">
                             <field name="VAR" id="QPe?Ou3i?s5i$GZ]RgQ$">regen_heute</field>
                             <value name="VALUE">
                               <block type="get_value" id="opp*9~+Zf]YA(Y}yto/x">
                                 <field name="ATTR">val</field>
                                 <field name="OID">ID auswählen</field>
                               </block>
                             </value>
                             <next>
                               <block type="update" id="7-*h)oAAMpBW7Vdqho8=">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                 <field name="OID">Object ID</field>
                                 <field name="WITH_DELAY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="variables_get" id="Ttu.^n}F8VFo]q8PR_hl">
                                     <field name="VAR" id="QPe?Ou3i?s5i$GZ]RgQ$">regen_heute</field>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="lists_getIndex" id="hMhb2Do0$5}^#)%|!vNe">
                                     <mutation statement="true" at="true"></mutation>
                                     <field name="MODE">REMOVE</field>
                                     <field name="WHERE">FROM_START</field>
                                     <value name="VALUE">
                                       <block type="variables_get" id="aOV_X-/%%InaofARE4T[">
                                         <field name="VAR" id="rq{##2}brF,H1z%75~/w">Liste</field>
                                       </block>
                                     </value>
                                     <value name="AT">
                                       <block type="math_number" id="9,WtnKAb[So8a|N+4[/J">
                                         <field name="NUM">1</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="lists_setIndex" id="y$),/rr:epg]zb!STeC{">
                                         <mutation at="false"></mutation>
                                         <field name="MODE">INSERT</field>
                                         <field name="WHERE">LAST</field>
                                         <value name="LIST">
                                           <block type="variables_get" id="c(!}.eH%KS/+G,[|bLCU">
                                             <field name="VAR" id="rq{##2}brF,H1z%75~/w">Liste</field>
                                           </block>
                                         </value>
                                         <value name="TO">
                                           <block type="variables_get" id="wc%9bkz]EXzyocS*#/=n">
                                             <field name="VAR" id="QPe?Ou3i?s5i$GZ]RgQ$">regen_heute</field>
                                           </block>
                                         </value>
                                         <next>
                                           <block type="control_ex" id="7z/rGz}ajk[RQ#-y*AJW" inline="true">
                                             <field name="TYPE">true</field>
                                             <field name="CLEAR_RUNNING">FALSE</field>
                                             <value name="OID">
                                               <shadow type="field_oid" id=";xx+[xd(jUFCy!hfIgeD">
                                                 <field name="oid">Object ID</field>
                                               </shadow>
                                               <block type="text" id="LK#Grgo7noU1%~oi*PB;">
                                                 <field name="TEXT">0_userdata.0.Regen.Liste</field>
                                               </block>
                                             </value>
                                             <value name="VALUE">
                                               <shadow type="logic_boolean" id="kDs4-TkQ0`qfc%!/U.nJ">
                                                 <field name="BOOL">TRUE</field>
                                               </shadow>
                                               <block type="convert_object2json" id="=yL/pZ[m*K`gbHXI8*i0">
                                                 <field name="PRETTIFY">FALSE</field>
                                                 <value name="VALUE">
                                                   <block type="variables_get" id="PI;04iQJ{+kcj~Em:Q;/">
                                                     <field name="VAR" id="rq{##2}brF,H1z%75~/w">Liste</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                             <value name="DELAY_MS">
                                               <shadow type="math_number" id="a+K=G{437Zs3.ibo1Zl}">
                                                 <field name="NUM">0</field>
                                               </shadow>
                                             </value>
                                             <next>
                                               <block type="control_ex" id="9w#Kd|j@KDGY4$u0PkqI" inline="true">
                                                 <field name="TYPE">true</field>
                                                 <field name="CLEAR_RUNNING">FALSE</field>
                                                 <value name="OID">
                                                   <shadow type="field_oid">
                                                     <field name="oid">Object ID</field>
                                                   </shadow>
                                                   <block type="text" id="Cny?uquJAUC|gXmcy8pn">
                                                     <field name="TEXT">0_userdata.0.Regen.Summe</field>
                                                   </block>
                                                 </value>
                                                 <value name="VALUE">
                                                   <shadow type="logic_boolean" id="olhS:dGNkMt7N^Syq,}v">
                                                     <field name="BOOL">TRUE</field>
                                                   </shadow>
                                                   <block type="math_on_list" id="*;eg.@GGST!R-qY/T(fO">
                                                     <mutation op="SUM"></mutation>
                                                     <field name="OP">SUM</field>
                                                     <value name="LIST">
                                                       <block type="variables_get" id="ufP}zO2wJm-LPBl7zmL5">
                                                         <field name="VAR" id="rq{##2}brF,H1z%75~/w">Liste</field>
                                                       </block>
                                                     </value>
                                                   </block>
                                                 </value>
                                                 <value name="DELAY_MS">
                                                   <shadow type="math_number" id="^?F2$tv9L-2t_|[N;wCU">
                                                     <field name="NUM">0</field>
                                                   </shadow>
                                                 </value>
                                               </block>
                                             </next>
                                           </block>
                                         </next>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
              </xml>
              

              G 1 Reply Last reply Reply Quote 1
              • G
                G.Hawk @paul53 last edited by

                @paul53
                Das ist der Hammer. Vielen Dank. Funktioniert einwandfrei nach den ersten Tests.
                Aber einige Fragen habe ich noch:
                Die Datenpunkte am Anfang müssen wohl stehenbleiben.
                Wenn ich ich die deaktiviere, dann funktioniert es nicht, aber warum?
                Ich mache mal ein Bild von dem angepassten Blockly.
                Eigentlich liegen die Datenpunkte da: javascript.0.Bewaesserung.Niederschlag_der_letzten_drei_Tage_Station
                Aber in dem Blockly darf ich nur "Bewaesserung.Niederschlag_der_letzten_drei_Tage_Station" schreiben, sonst legt er mir unter "javascript.0. den gleichen order nochmal an.

                G paul53 2 Replies Last reply Reply Quote 0
                • G
                  G.Hawk @G.Hawk last edited by

                  Blockly Regenmenge.JPG

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @G.Hawk last edited by paul53

                    @Martin-0 sagte:

                    Die Datenpunkte am Anfang müssen wohl stehenbleiben.
                    Wenn ich ich die deaktiviere, dann funktioniert es nicht, aber warum?

                    "Datenpunkt erzeugen" wird nur einmal benötigt und kann dann gelöscht / deaktiviert werden. In dem Fall muss aber "setze Liste auf ..." vor den Zeitplan gesetzt werden, da die Liste sonst nach jedem Skriptstart verloren ist.

                    Blockly_temp.JPG

                    G 1 Reply Last reply Reply Quote 0
                    • G
                      G.Hawk @paul53 last edited by

                      @paul53
                      Es wäre aber nicht schädlich, wenn ich es so stehen lasse?
                      Warum funktioniert der Datenpunkt eigentlich der Pfad ist ja eigentlich nicht richtig, da ja javascript.0 davor fehlt.

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @G.Hawk last edited by

                        @Martin-0 sagte:

                        Es wäre aber nicht schädlich, wenn ich es so stehen lasse?

                        Schädlich nicht, aber Verschwendung von Ressourcen.

                        @Martin-0 sagte in Regenmenge der letzten drei Tage berechnen:

                        Warum funktioniert der Datenpunkt eigentlich der Pfad ist ja eigentlich nicht richtig

                        Für Datenpunkte unter der Javascript-Instanz (javascript.0) kann eine verkürzte ID für createState(id), setState(id) und getState(id) angegeben werden.

                        G 1 Reply Last reply Reply Quote 0
                        • G
                          G.Hawk @paul53 last edited by

                          @paul53
                          OK Ich habe alles geändert.
                          Warum sind in dem Datenpunkt Liste eigentlich drei Werte bzw. wo stelle ich ein, dass diese Liste nur drei Einträge haben darf?
                          Wenn ich auf den Datenpunkt klicke und mir den anschaue, sehe ich dafür keine Einstellung.

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @G.Hawk last edited by

                            @Martin-0 sagte:

                            Warum sind in dem Datenpunkt Liste eigentlich drei Werte bzw. wo stelle ich ein, dass diese Liste nur drei Einträge haben darf?

                            Beim Erzeugen des Datenpunktes wurde eine Liste mit 3 Werten als JSON initialisiert: '[0,0,0]'
                            Danach wird im Skript der älteste Eintrag gelöscht und der neue hinzugefügt, so dass sich die Anzahl nicht ändert.

                            G 1 Reply Last reply Reply Quote 0
                            • G
                              G.Hawk @paul53 last edited by

                              @paul53
                              Super danke.
                              Jetzt probiere ich mal den Niederschlagswert mit dem der Vorhersage des nächsten Tages zu addieren.
                              Das soll dann die Grundlage werden ob beregnet wird oder nicht.

                              Homoran 1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @G.Hawk last edited by Homoran

                                @Martin-0 sagte in Regenmenge der letzten drei Tage berechnen:

                                Das soll dann die Grundlage werden ob beregnet wird oder nicht.

                                Was passiert, wenn es trotzdem nicht regnet?
                                Der Wert bleibt hoch, die Erde trocken...

                                G 1 Reply Last reply Reply Quote 0
                                • G
                                  G.Hawk @Homoran last edited by

                                  @Homoran
                                  Mist. da hast du recht. Er wird aber diesen Wert jeden Tag aktualisieren. Und wenn es nicht regnet, dann wird er am nächsten Tag beregnen. Es sei denn die Vorhersage stimmt jeden Tag nicht.
                                  Oder hast du eine andere Idee?

                                  Homoran 1 Reply Last reply Reply Quote 0
                                  • Homoran
                                    Homoran Global Moderator Administrators @G.Hawk last edited by Homoran

                                    @Martin-0 sagte in Regenmenge der letzten drei Tage berechnen:

                                    Oder hast du eine andere Idee?

                                    nö.

                                    Bei mir wird bewässert wenn der Bodenfeuchtesensor sagt, dass es Zeit ist.
                                    Wenn es trotzdem genau 5 Minuten später regnet (was schon mehrfach passiert ist) wird der Boden entsprechend feuchter und die nächste künstliche Beregnung findet erst wieder statt wenn auch das Wasser "verbraucht" ist.

                                    G 1 Reply Last reply Reply Quote 0
                                    • G
                                      G.Hawk @Homoran last edited by

                                      @Homoran
                                      Das ist auch nicht schlecht.
                                      Es hat geklappt mit der Gesamtniederschlagsmenge.
                                      Ich habe eben noch einen Betriebsstundenzähler gemacht für die Bewässerungsventile.
                                      Das funktioniert auch, nur müsste sich dieser drei Tage später wieder auf null stellen.

                                      Kann mir jemand sagen, wie ich das mache?

                                      G paul53 2 Replies Last reply Reply Quote 0
                                      • G
                                        G.Hawk @G.Hawk last edited by

                                        Betriebsstundenblockly.JPG

                                        1 Reply Last reply Reply Quote 0
                                        • paul53
                                          paul53 @G.Hawk last edited by paul53

                                          @Martin-0 sagte:

                                          müsste sich dieser drei Tage später wieder auf null stellen.

                                          Weshalb nach 3 Tagen ?

                                          Besserer Trigger: ist kleiner als letztes (Änderung wahr --> falsch)

                                          G 1 Reply Last reply Reply Quote 0
                                          • G
                                            G.Hawk @paul53 last edited by

                                            @paul53
                                            Weil er in drei Tagen die benötigte Wassermenge bzw. die Einschaltzeit der Ventile berechnen soll.
                                            Wenn er also heute guckt wie die Niederschlagsmengen waren und es nicht geregnet hat, würde er am nächsten Tag ja wieder bewässern. Deshalb prüfe ich, ob die Beregnung an war. Wenn sie jetzt also drei Tage aus war (Was dem Wert "0 min" entspricht, dann darf wieder bewässert werden.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            472
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly climate
                                            4
                                            71
                                            4440
                                            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