Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage ] Blockly dynamischer Sonnenauf- und Sonnenuntergang

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage ] Blockly dynamischer Sonnenauf- und Sonnenuntergang

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

      Der hat vorhin schon wieder ausgeloest. Ich habe mal versucht, mir das zu Gemuete zu fuehren. Kann es sein, dass wir einmal falschrum rechnen bzw. ein Vorzeichenfehler haben?

      Minuten bis SU ist ja OK, dann kommt 720 - Minuten bis SU, was ja auch die Zeit von SU bis Mitternacht ist. Allerdings positiv.

      Um die Aktion entsprechend auszuloesen NACH Sonnenuntergang brauche ich aber doch negative Werte, also den gleichen Wert, allerdings mit Minus davor.

      Das erklaert doch auch, warum der das jetzt Nachmittags macht, weil der als positiven Wert es jetzt um die Zeit bis zum SU (also vorher) macht.

      Oder denke ich falsch? Ausprobiert habe ich es noch nicht jetzt, sag mal deine Meinung dazu.

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

        @nibblerrick:

        Oder denke ich falsch? Ausprobiert habe ich es noch nicht jetzt, sag mal deine Meinung dazu. `

        Nun ohne Zeiten (MinutenSU), kann ich dazu nichts sagen.

        Und wie ich in dem Beitrag geschrieben habe: "….Das ganze funktioniert aber nur wenn die Aktionen NACH SonnenUntergang ablaufen!!!..."

        Grüße

        1 Reply Last reply Reply Quote 0
        • N
          nibblerrick last edited by

          Welche MinutenSU-Zeit willst du denn, die ist doch so gesehen immer identisch, MinutenSU ist vor SU positiv und nach SU negativ.

          Daher ist es doch nur Logik und 2. und 3. Aktion sind bisher ja immer VOR SU ausgefuehrt worden.

          Start_2 und Start_3 werden ja immer gleich berechnet, da hat ja nichtmal "Meine_erste_Startzeit_nach…" was mit zu tun.

          Und die 720 abzueglich MinutenSU ergeben doch so immer einen positiven Wert. Somit werden diese Aktionen aktuell doch immer VOR SU ausgefuehrt.

          Fuer "Erste_Startzeit..." muss ich ja auch einen negativen Wert angeben. Isn't it?

          1 Reply Last reply Reply Quote 0
          • N
            nibblerrick last edited by

            Ich habe das etwas umgestellt und ein paar Tage laufen lassen, so scheint es zu funktionieren.

            Ich addiere den ersten Startwert nach SU noch zur Rechnung hinzu damit auf der Haelfte der Zeit zwischen erstem Einschalten und Mitternacht geschaltet wird.

            Den oberen Teil, der geaendert ist, habe ich als Screenshot angefuegt.

            Das gesamte Blockly jetzt nochmal hier:

            ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
            ! <block type="create" id="S/9)3;v2CYj;Ka9q6WBl" x="-662" y="-287"><field name="NAME">Meine_Erste_Startzeit_In_Minuten_Nach_SU</field>
            ! <next><block type="on_ext" id="rWtR~:mO9In}+^c(]]+2"><mutation items="1"></mutation>
            ! <field name="CONDITION">ne</field>
            ! <value name="OID0"><shadow type="field_oid" id="}i%zKjjPC;A+.=tZklY4"><field name="oid">javascript.0.MinutenSU</field></shadow></value>
            ! <statement name="STATEMENT"><block type="controls_if" id="k3T|tNR;1nx*qo(NJlsV"><mutation elseif="4"></mutation>
            ! <value name="IF0"><block type="logic_compare" id="xKqHdpQ.dyoE_Y+n|/!"><field name="OP">EQ</field>
            ! <value name="A"><block type="on_source" id="6MlbRkOvPlN;at=tPyT"><field name="ATTR">oldState.val</field></block></value> ! <value name="B"><block type="math_number" id="agD:BmAwJddJ[29VlqA/"><field name="NUM">999</field></block></value></block></value> ! <statement name="DO0"><block type="variables_set" id="?h0-t1ni}[lj}?06fup^"><field name="VAR">temp_Min_Bis_SU_gesamt</field> ! <value name="VALUE"><block type="get_value" id="@AM-#d^(@xX2hy2!86sg"><field name="ATTR">val</field> ! <field name="OID">javascript.0.MinutenSU</field></block></value> ! <next><block type="variables_set" id="-0SeRg!#(^;B;fI!{tHA"><field name="VAR">temp_Min_Von_SU_bis_Mitternacht</field> ! <value name="VALUE"><block type="math_arithmetic" id="x)Pg6%5tlfeWU[%n+#pb"><field name="OP">ADD</field> ! <value name="A"><shadow type="math_number" id="HUm~CTC1(tR4Vq6b1|d{"><field name="NUM">-749</field></shadow> ! <block type="math_arithmetic" id="7n/~boH=9nLzKb~{+4Hb"><field name="OP">ADD</field> ! <value name="A"><shadow type="math_number" id="!:WuB4S)=7Go_bkwNzYN"><field name="NUM">-720</field></shadow></value> ! <value name="B"><shadow type="math_number" id="x]CL;,+4SltcH.pGP^C)"><field name="NUM">1</field></shadow> ! <block type="get_value" id="S]EX?XWetC)h?QUgOZPR"><field name="ATTR">val</field> ! <field name="OID">javascript.0.Meine_Erste_Startzeit_In_Minuten_Nach_SU</field></block></value></block></value> ! <value name="B"><shadow type="math_number" id="wEMk:#?J?98,s|^9e]Up"><field name="NUM">1</field></shadow> ! <block type="variables_get" id="v3dlkX]=KeQhIUt/2x5Y"><field name="VAR">temp_Min_Bis_SU_gesamt</field></block></value></block></value> ! <next><block type="comment" id="o/_,C+8Q_9CqQJpW8_YP"><field name="COMMENT">Halbe Zeit bis Mitternacht</field> ! <next><block type="variables_set" id="o~Ti,{o9q5(*3ZIHC#MO"><field name="VAR">Start_2</field> ! <value name="VALUE"><block type="math_round" id="ohOLac9.W99l6S[lAvaT"><field name="OP">ROUND</field> ! <value name="NUM"><shadow type="math_number" id="6AW|wMt*Z#U,!iS-R8Bi"><field name="NUM">3.1</field></shadow> ! <block type="math_arithmetic" id="U/[MDFy.g|v@Otic9Dc,"><field name="OP">DIVIDE</field> ! <value name="A"><shadow type="math_number" id="w/~b:7ejf#v?}F~Q7XNs"><field name="NUM">1</field></shadow> ! <block type="variables_get" id="AB{bbNSf}CWZGS(^57WM"><field name="VAR">temp_Min_Von_SU_bis_Mitternacht</field></block></value> ! <value name="B"><shadow type="math_number" id="?A%6MG76WCAzxi5|n1]6"><field name="NUM">2</field></shadow></value></block></value></block></value> ! <next><block type="comment" id="c#[z,h80jKm-Y~pafWA["><field name="COMMENT">Halbe Zeit bis Mitternacht + 10 Minuten (-10 da negativ "groesser" wird)</field> ! <next><block type="variables_set" id="(Sj:2{kT+{t5P);C5]Ol"><field name="VAR">Start_3</field> ! <value name="VALUE"><block type="math_arithmetic" id="s9O-31{VrSc0(L7=4cFT"><field name="OP">MINUS</field> ! <value name="A"><shadow type="math_number" id="y9|.YwZ(.EMH%tfcEK:P"><field name="NUM">1</field></shadow> ! <block type="variables_get" id="3dt0^g~RZ3Dwv50!mm(Z"><field name="VAR">Start_2</field></block></value> ! <value name="B"><shadow type="math_number" id="xgy6kvV*d@|4.{.hx(1C"><field name="NUM">10</field></shadow></value></block></value></block></next></block></next></block></next></block></next></block></next></block></statement> ! <value name="IF1"><block type="logic_compare" id="?zX*L?C!GgsflULhnOt!"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="algzvnMYXioxobuc3NMu"><field name="ATTR">val</field> ! <field name="OID">javascript.0.MinutenSU</field></block></value> ! <value name="B"><block type="get_value" id="39!D3%^c2P^R%/[{2G"><field name="ATTR">val</field> ! <field name="OID">javascript.0.Meine_Erste_Startzeit_In_Minuten_Nach_SU</field></block></value></block></value> ! <statement name="DO1"><block type="comment" id="syVRCDU7sx26ZV9Kv@r+"><field name="COMMENT">1\. Aktion</field> ! <next><block type="telegram" id="*+#tC%WjZ;0R%o[CVyoV"><value name="MESSAGE"><shadow type="text" id="?g6~rD3*Y1FBMjCnx7^p"><field name="TEXT">1\. Aktion</field></shadow></value></block></next></block></statement> ! <value name="IF2"><block type="logic_compare" id="87J#|;ru(WWJ4r=;|aOf"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="gY%6wst2P2tJ*G{J@Zhm"><field name="ATTR">val</field> ! <field name="OID">javascript.0.MinutenSU</field></block></value> ! <value name="B"><block type="variables_get" id="+qf7AWD@d@O3[-3%:%i"><field name="VAR">Start_2</field></block></value></block></value>
            ! <statement name="DO2"><block type="comment" id="AKW@,R#^rb(Ob{4ITHL"><field name="COMMENT">2\. Aktion</field> ! <next><block type="telegram" id="3aE;Wmf]oAj35mkVU)Gg"><value name="MESSAGE"><shadow type="text" id="Af-.u?qxKpLWum3xNDi4"><field name="TEXT">2\. Aktion</field></shadow></value></block></next></block></statement> ! <value name="IF3"><block type="logic_compare" id="S@75dd]RYIti_F:/bvS"><field name="OP">EQ</field>
            ! <value name="A"><block type="get_value" id="Cm1y:tcy(7)wmC@o+OvE"><field name="ATTR">val</field>
            ! <field name="OID">javascript.0.MinutenSU</field></block></value>
            ! <value name="B"><block type="variables_get" id="do48sx2a6[a/xe,QMjuX"><field name="VAR">Start_3</field></block></value></block></value>
            ! <statement name="DO3"><block type="comment" id="q%X.efEs.M4yBu6LiJ5@"><field name="COMMENT">3. Aktion</field>
            ! <next><block type="telegram" id="};ACfe6c^:F1^=(+ob,M"><value name="MESSAGE"><shadow type="text" id="8
            ].Q_Kggfh+zBo?u1k"><field name="TEXT">3. Aktion</field></shadow></value></block></next></block></statement>
            ! <value name="IF4"><block type="logic_compare" id="N.1lrrvIHEFW%!honya"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="3[ou{)yFF*{s8,NfjC{#"><field name="ATTR">val</field> ! <field name="OID">javascript.0.MinutenSU</field></block></value> ! <value name="B"><block type="math_number" id="Xg3U-:,]]3f}x}*eSum"><field name="NUM">999</field></block></value></block></value>
            ! <statement name="DO4"><block type="comment" id=")l^M64Jt
            .gi,!zdT]wx"><field name="COMMENT">4. Aktion Es ist Mitternacht</field>
            ! <next><block type="telegram" id="M]:hi{WFw.UK9nhmAPSw"><value name="MESSAGE"><shadow type="text" id="^CrLnF|JVrZAoeD:k9w-"><field name="TEXT">4. Aktion</field></shadow></value></block></next></block></statement></block></statement></block></next></block></xml>
            3803_firefox_2017-11-23_22-12-22.png

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

              Prima das es klappt.

              Grüße

              1 Reply Last reply Reply Quote 0
              • N
                nibblerrick last edited by

                Ist es denn auch so sinnvoll oder sollte das noch verbessert werden?

                1 Reply Last reply Reply Quote 0
                • B
                  Bröselbube last edited by

                  Hi, habe vor kurzer Zeit die wunderbare Welt des ioBroker betreten und bin völlig begeistert.

                  Das passt zu meinen erst kürzlich gekauften Sonoff, die ich mit Tasmota geflasht habe.

                  Dazu benutze ich zur Zeit einen Raspi mit einem "normalen" MQTT Broker und alles läuft perfekt.

                  Dazu habe auch ich einige Android Apps selbst geschrieben. Doch nun muss ich mit ioBroker wieder ein bisschen

                  umdenken und möchte alles auf ioBroker umbauen. Mein erstes Projekt ist nicht gerade der leichteste Beginn für mich und dazu passt

                  dieses Sunset/Sunrise Script sehr gut.

                  Leider habe ich bisher keinerlei Erfahrung mit JS und schon gar nicht Blockly und möchte hier um etwas Unterstützung bitten:

                  Meine Teichpumpe soll bei bei Sonnenaufgang (+Offset) ein und bei Sonnenuntergang (+Offset) ausgeschaltet

                  werden. Bei Temperaturen unter 3 oder 2 Grad soll sie ganztägig laufen. Der Sonoff TH16 liefert dazu die Wassertemperatur.

                  Wie könnte ich eines der hier vorgestellten Imports dazu umbauen.

                  Dank an alle die an ioBroker arbeiten, das ganze ist echt krass gut.

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

                    Hallo Bröselbube

                    Das ist relativ einfach zu lösen.

                    Importiere das Blockly aus dem ersten Beitrag und starte es 1x und beende es wieder.

                    Beim ersten Start werden die benötigten Variablen "MinutenSU" und "MinutenSA" angelegt.

                    Dann kannst Du es erneut starten und laufen lassen.

                    Nun werden die Variablen minütlich aktualisiert.

                    Wie sich die Werte verhalten wird im Beitrag erklärt.

                    Jetzt braucht Du noch 2 eigene Variablen.

                    Manuell anlegen oder so wie im Blockly. (Kannste vor dem ersten Start ja mit darein packen)

                    Z.B.

                    Variable 1: TeichpumpeMinSU (Minuten SonnenUntergang)

                    Variable 2: TeichpumpeMinSA (Minuten SonnenAufgang)

                    In diese Variablen schreibst Du über VIS oder direkt über Objekte Deine gewünschten Zeiten.

                    Also Minuten VOR SU = 30 oder Minuten NACH SU = -30

                    Jetzt baust Du ein Blockly in dem die Variablen "MinutenSU" und "MinutenSA" getriggert werden.

                    Und vergleichst darin "MinutenSU" mit "TeichpumpeMinSU" und "MinutenSA" mit "TeichpumpeMinSU"

                    Wenn die übereinstimmen und die Temperatur passt, schalte Pumpe aus bzw. ein.

                    Schau Dir mal einige Beispiele an.

                    Fang mal an zu "bauen".

                    Wenn Du nicht weiter kommst, ScreenShot und/oder Export hier rein.

                    Dann werden wir Dir sicher weiterhelfen.

                    Grüße

                    1 Reply Last reply Reply Quote 0
                    • B
                      Bröselbube last edited by

                      Besten Dank erstmal rantanplan!

                      Werde mal etwas versuchen und melde mich.

                      Kleine Anfängerfrage: Habe ein erstes Script geschrieben, welches meinen Linux PC einschalten soll.

                      Wie stößt man diese Script von einem Terminal an? 🙂

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

                        @Bröselbube:

                        Kleine Anfängerfrage: Habe ein erstes Script geschrieben, welches meinen Linux PC einschalten soll.

                        Wie stößt man diese Script von einem Terminal an? 🙂 `
                        Scripte sind immer Ereignisorientiert.

                        Also braucht Du ein Ereignis, dass Du triggern kannst.

                        Variable Typ Logikwert, Zeit, Aktor usw.

                        Grüße

                        1 Reply Last reply Reply Quote 0
                        • B
                          Bröselbube last edited by

                          Also es handelt sich ein Javascript, kein Blockly.

                          Möchte das über eine App auf dem ioBroker anstossen.

                          Über App ist ssh, ftp oder mqtt-connection kein Thema für mich.

                          Habe nur im Moment echt keine Idee wie das gehen soll ein Script auszuführen oder auch einen Sonoff anzusprechen.

                          Das ganze ist hier leider Offtopic, also möchte ich den Thread auch nicht zumüllen.

                          Wenn ich einmal weiss wie das geht, komme ich schon weiter klar.

                          Wollte dazu nicht extra ein Thema eröffnen. Sorry.

                          Viele Grüße und lieben Dank!

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

                            @Bröselbube:

                            Also es handelt sich ein Javascript, kein Blockly. `
                            Blockly erstellt JavaScript!

                            Grüße

                            1 Reply Last reply Reply Quote 0
                            • B
                              Bröselbube last edited by

                              Blockly erstellt JavaScript! Ist klar soweit.

                              Habe zu unrecht etwas bedenken wegen JS gehabt, finde mich bereits gut damit zurecht.

                              Blockly liegt mir persönlich dagegen überhaupt nicht - ist halt Geschmackssache.

                              Folgendes kleine Script scheint schon funktionieren:

                              var temp;
                              var night = false;
                              
                              function switch_pump() {
                              	temp = getState("sonoff.0.Pond.DHT22_Temperatur").val
                              	if (night && temp > 1) {
                              		log("Teichpumpe aus");
                              		setState("sonoff.0.Pond.POWER", false);
                              	} 	else 	{
                              			log("Teichpumpe an");
                              			setState("sonoff.0.Pond.POWER", true);
                              	}
                              }
                              
                              schedule({astro: "sunrise", shift: 0}, function () {
                                  log('Sonnenaufgang');
                                  night = false;
                                  switch_pump();
                              
                              });
                              
                              schedule({astro: "sunset", shift: 0}, function () {
                                  log('Sonnenuntergang');
                                  night = true; 
                                  switch_pump();
                              });
                              

                              Denke aber das dies auf Dauer zu unzuverlässig ist, werde das noch umschreiben und 1xmin überprüfen.

                              Die Astro-Funktion reicht mir dabei völlig.

                              Danke und

                              Gruß

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

                                Hallo Bröselbube

                                Schön das Du einen Weg gefunden hast.

                                Ich weis nur nicht was Dein Beitrag hier soll.

                                Ist wohl etwas am Thema vorbei :roll:

                                Grüße

                                1 Reply Last reply Reply Quote 0
                                • B
                                  Bröselbube last edited by

                                  Ah ja, sehr schlimm alles, wirklich. Sehr Hilfreich alles danke danke und Tschö. :arrow:

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    Dennis last edited by

                                    Guten Tag zusammen,

                                    ich beginne gerade mich mit dem iobroker anzufreunden und dabei auf diese wunderbare Vorlage gestoßen.

                                    Leider stelle ich mich anscheinend etwas dämlich an, denn ich bekomme die XML-Datei der Vorlage nicht in Blockly importiert. :oops:

                                    Kann mir bitte jemand sagen, wie ich das bewerkstelligen kann?

                                    Schöne Grüße und vielen Dank!

                                    Dennis

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

                                      @Dennis:

                                      Leider stelle ich mich anscheinend etwas dämlich an, denn ich bekomme die XML-Datei der Vorlage nicht in Blockly importiert. :oops:

                                      Kann mir bitte jemand sagen, wie ich das bewerkstelligen kann? `
                                      Neues Script Typ Blockly.

                                      Dann
                                      147_blocklyimport.png

                                      XML-Datei rein kopieren und fertig.

                                      Grüße

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        Dennis last edited by

                                        Super, vielen lieben Dank! 😄

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

                                          Hallo zusammen,

                                          verwende KNX Aktoren und hatte mich mal versucht mit SmartVisu eine grafische Oberfläche zum steuern meiner KNX Komponenten.

                                          Leider bin ich daran verzweifelt :?

                                          Jetzt bin ich über einen Kollegen auf IOBroker gestossen und bin, wie viele andere hier, super begeistert.

                                          Versuche gerade per Sonnenauf- und -untergang meine Rollos zu steuern und habe dafür das script von Rantanplan eingebunden.

                                          Die Tageszeit, Sonnenauf und -untergangszeiten erscheinen in den Objekten - so weit so gut.

                                          Was ich mich jetzt Frage, wie kann ich meine KNX Objekte (sind alle importiert worden und funktionieren auch über manuelle Widget Bedienung) im Blockly in das Script von Rantanplan einbinden? Irgendwo muss da doch noch die Aktion rein "mache xxx".

                                          Hoffe auf eine Antwort und bedanke mich im voraus schon mal.

                                          Liebe Grüsse an das Forum

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

                                            @maddad:

                                            Irgendwo muss da doch noch die Aktion rein "mache xxx". `
                                            Hallo maddad

                                            Nein, nicht in dieses Blockly.

                                            Hier werden nur die Datenpunkte "MinutenSU" und "MinutenSA" geändert.

                                            Alles weitere habe ich in diesem Thread schon mal hier erklärt.

                                            http://forum.iobroker.net/viewtopic.php … tro#p90911

                                            Falls noch Fragen offen….fragen.

                                            Grüße

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            716
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly template
                                            10
                                            49
                                            12663
                                            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