Navigation

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

    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

    Sonnenprogramm

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

      Läuft das, was wir sehen immer noch innerhalb des minütlichen Schedules ab ? Dann solltest Du es ändern, indem Du den Datenpunkt

      "global.sonne-esszimmer" als Trigger für die Rollo-Steuerung im Esszimmer nimmst ! https://forum.iobroker.net/viewtopic.php?f=21&t=16313#p171521

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

        Hi Paul,

        die einzelnen Zustände werden ebenfalls über den minütlichen Trigger generiert. Hier das komplette Script:
        8270_screenshot_2018-08-23_javascript_-iobroker_1.png
        Wenn ich oben den Trigger ändere betrifft das alles.

        Oder sollte ich einen neuen Trigger einfügen direkt im Anschluss an den Schedule und dort die Rolladensteuerung reinpacken … meinst Du das so ?

        Und warum sollte ich das machen ? Auch wegen Traffic ? Würde sich denn da überhaupt was ändern, der Traffic wäre doch dann trotzdem vorhanden, nur nicht über das komplette Script.

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

          @meicker:

          Hier das komplette Script: `
          Leider ist nichts zu erkennen. Kannst Du es mal als .JPG speichern und hochladen ?
          @meicker:

          Oder sollte ich einen neuen Trigger einfügen direkt im Anschluss an den Schedule und dort die Rolladensteuerung reinpacken … meinst Du das so ? `
          Ja.

          Dir ist klar, dass die Sachen außerhalb des Schedule nur <u>einmal</u> bei Skriptstart ausgeführt werden ?
          @meicker:

          Und warum sollte ich das machen ? Auch wegen Traffic ? `
          Ja, auch. Außerdem hast Du 15 Timer auf einmal laufen. Ich habe Dir im Log gezeigt, was passiert, wenn man es so wie Du macht.
          @meicker:

          Würde sich denn da überhaupt was ändern, der Traffic wäre doch dann trotzdem vorhanden, nur nicht über das komplette Script. `
          Ja. Der Teil, der jede Minute ausgeführt wird, ist kürzer und betrifft keine Timer und vor allem kein Senden an Geräte (steuere). Traffic erzeugt das Senden an Geräte !

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

            @paul53:

            Leider ist nichts zu erkennen. Kannst Du es mal als .JPG speichern und hochladen ? `
            Kalt erwischt 🙂 Ich mache das immer im Firefox mit Screenshot. Aber mit Bildschirmfoto wird es auch nicht besser, ich muss es ganz klein machen um es komplett auf den Schirm zu kriegen. Ich habe es jetzt etwas näher herangeholt. Oder gibt es einen anderen Weg ?
            8270_screenshot_2018-08-23_javascript_-iobroker_3.png

            @paul53:

            Dir ist klar, dass die Sachen außerhalb des Schedule nur einmal bei Skriptstart ausgeführt werden ? `
            Hätte mir klar sein sollen 🙂 Baue ich wo anders ein … Danke für den Hinweis 🙂

            @paul53:

            Ja, auch. Außerdem hast Du 15 Timer auf einmal laufen. Ich habe Dir im Log gezeigt, was passiert, wenn man es so wie Du macht. `
            Kann ich denn Timer einsparen ? Klar 🙂 Eigentlich gibt es keine Überschneidungen in der Steuerung. Aber falls es im Sonnenverlauf doch mal zu einer Überschneidung käme wenn ich etwas ändere, würde ich wenigstens 2 Timer verwenden müssen und abwechselnd einsetzen. Markise und Rolladen können sich einen teilen da sie sowieso zusammen liegen und gleichzeitig arbeiten. Dann würde ich einsparen können - Ich denke so könnte ich es machen, oder ?

            Und den zweiten Trigger setze ich dann später drunter wenn ich Ruhe habe. Erst mal Abendprogramm 🙂

            vg und evtl. bis später 🙂

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

              Das .JPG Bild ist etwas besser zu erkennen, wenn man es anklickt.
              @meicker:

              Kann ich denn Timer einsparen ? `
              Das hast Du falsch verstanden. Wenn in jeder Minute ein Timer gestartet wird, obwohl noch ein Timer (15 Minuten) läuft, wird ein weiterer Timer erzeugt. Innerhalb von 15 Minuten werden also 15 Timer gestartet. Jeder Timer beendet sich selbst erst nach der abgelaufenen Zeit.

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

                Ach das meinst Du … OK ! Ich lege die Timer in einen neuen Schedule der jeweils auf Balkon, Markise, Esszimmer und BadSZ hört.

                so:
                8270_screenshot_2018-08-23_javascript_-iobroker_4.png

                Und die Menge der Timer ist also nicht so schlimm ? Die könnte ich ja wie beschrieben auch noch reduzieren.

                Und jetzt mal noch ne ganz interessante Frage 🙂 Betrifft alle Scripts. Könnte ich eigentlich alle Scripts einfach untereinander packen und nur noch eines haben ? Oder ist es besser viele kleine zu haben ? Oder ist es gar nicht möglich ?

                vg

                Marc

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

                  @meicker:

                  Und die menge der Timer ist also nicht so schlimm ? Die könnte ich ja wie beschrieben auch noch reduzieren. `
                  Das würde ich nicht machen, denn es kann vielleicht doch mal zu zeitlichen Überschneidungen kommen. Die Menge der Timer ist unkritisch.
                  @meicker:

                  Könnte ich eigentlich alle Scripts einfach untereinander packen und nur noch eines haben ? Oder ist es besser viele kleine zu haben ? Oder ist es gar nicht möglich ? `
                  Man kann viele Funktionen in ein Skript packen oder einzelne Skripte erstellen. Ich bevorzuge wegen der Übersichtlichkeit mehrere kleine Skripte. Es ist letztlich Geschmacksache.

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

                    OK - Dann lasse ich das so wie es ist. Oben habe ich das aufgeräumte Script in meinen vorherigen Post eingepflegt. Meinst Du so, richtig ?

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

                      Ich würde es pro Ort etwa so machen, wenn ich in Blockly programmieren würde:
                      493_blockly_rollo_balkon.jpg
                      Es können auch alle Abfragen für die virtuellen Datenpunkte in des eine Schedule und die Trigger auf die Datenpunkte untereinander, wie Du es bereits gemacht hast.

                      Die Abfrage des Datenpunktes "global.sonnenprogramm_aktiv" muss in das Schedule !

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

                        Hallo Paul,

                        das sonnenprogramm aktiv liegt mit Absicht daneben. Es war zum abschalten der Funktion gedacht und wird nicht aktualisiert.

                        Den rest schaue ich mir Morgen noch mal an …

                        Was meinst Du mit > Es können auch alle Abfragen für die virtuellen Datenpunkte in des eine Schedule und die Trigger auf die Datenpunkte untereinander, wie Du es bereits gemacht hast. ?

                        Aber sonst ist mein Script OK, oder ?

                        Bitte schau noch mal in dem Controme Thread vorbei 🙂

                        vg

                        Marc

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

                          @meicker:

                          das sonnenprogramm aktiv liegt mit Absicht daneben. Es war zum abschalten der Funktion gedacht und wird nicht aktualisiert. `
                          Zum Abschalten, wenn dieser DP false wird, muss aber das Skript neu gestartet werden. Was Du möchtest, funktioniert so:
                          493_blockly_rollo_balkon_clearschedule.jpg
                          @meicker:

                          Aber sonst ist mein Script OK, oder ? `
                          Ja. Man kann es vereinfachen (siehe Bild). Das Setzen von Variablen mit konstanten Werten ist z.B. überflüssig.

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

                            Hi Paul,

                            hat etwas länger gedauert aber ich habe mich eben mal dran gegeben … mir ist aber noch was unklar. Bitte mal meine Kommenare ansehen. Es geht im wesentlichen um die Stellen wo Du WERT eingetragen hat in einem roten Block - Mir ist nicht klar was ich da reinpacken muss ...

                            8270_screenshot_2018-08-25_javascript_-_iobroker.png

                            Falls Objekt -> Default - bleibt so ?

                            Viele Grüße,

                            Marc

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

                              @meicker:

                              die Stellen wo Du WERT eingetragen hat in einem roten Block - Mir ist nicht klar was ich da reinpacken muss … `
                              Das ist der Wert des Trigger-Datenpunktes.
                              493_blockly_dp_props.jpg
                              default muss ersetzt werden durch den Datenpunkt global.sonnenprogramm_aktiv, denn wenn dieser sich ändert, soll das Sonnenprogramm gestartet bzw. das Schedule Sommer2 gestoppt werden.

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

                                danke Paul,

                                da mache ich die tage dran weiter … 🙂

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

                                  Hi Paul,

                                  das sieht nicht richtig aus …

                                  8270_screenshot_2018-08-28_javascript_-_iobroker.png

                                  Sonnenprogramm aktib soll ein globaler Schalter sein um das gesamte Programm ausser gefecht zu setzen.

                                  Wenn Sonne Balkon wahr ist macht es Sonnenprogramm, ansonsten wird Sommer 2 angehalten. Damit ist doch dann Ende im Gelände … keine der anderen Prüfungen im Sommerprogramm würde mehr ausgeführt, oder täusche ich mich da ?

                                  8270_screenshot_2018-08-28_javascript_-iobroker_1.png

                                  vg

                                  Marc

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

                                    @meicker:

                                    Sonnenprogramm aktib soll ein globaler Schalter sein um das gesamte Programm ausser gefecht zu setzen. `
                                    So habe ich es auch verstanden.
                                    @meicker:

                                    Wenn Sonne Balkon wahr ist macht es Sonnenprogramm, ansonsten wird Sommer 2 angehalten. Damit ist doch dann Ende im Gelände … keine der anderen Prüfungen im Sommerprogramm würde mehr ausgeführt, oder täusche ich mich da ? `
                                    Richtig. In meinem Vorschlage wird auch nicht der Wert von "javascript.0.global.sonne-balkon" ausgewertet, um die Funktion auszurufen bzw. das Schedule zu stoppen, sondern der Wert des Triggerdatenpunktes = Wert von "global.sonnenprogramm_aktiv".

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

                                      Hi Paul 🙂

                                      OK 🙂 Morgen wieder 🙂 Jetzt ist es zu spät …

                                      Wenn ich hier Sternchen vergeben dürfte würdest Du ne ganze Menge bekommen. Hier scheint es nicht viele user zu geben die sich mit Antworten Mühe geben ... Dankeschön dafür !!! Meist bekommt man nur ein Stichwort vor den Latz geknallt und das wars ...

                                      vg

                                      Marc

                                      1 Reply Last reply Reply Quote 0
                                      • R
                                        RappiRN Most Active last edited by

                                        @meicker:

                                        Hier scheint es nicht viele user zu geben die sich mit Antworten Mühe geben … Dankeschön dafür !!! Meist bekommt man nur ein Stichwort vor den Latz geknallt und das wars ... `

                                        Ich würde sagen: haltlose Anschuldigung! 😞

                                        Enrico

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

                                          @RappiRN:

                                          Ich würde sagen: haltlose Anschuldigung! 😞 `

                                          Damit wollte ich nicht die helfenden Hände ansprechen ! Sicherlich habe ich hier viel Hilfe erhalten, sonst wäre ich nicht da wo ich jetzt bin, das ist klar.

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

                                            @Paul

                                            Hi Paul,

                                            noch eine Kleinigkeit - 🙂

                                            script.js.Homepilot.Szenen.Sonne.Sonnenprogramm_V2: clearTimeout() => not found
                                            

                                            Kannst Du damit was anfangen ? M.E werden alle Timeouts auch geschlossen, dieser hat aber keinen Namen …

                                            Ich zeige am Besten mal den Code, das Blocky ist zu lang wenn ich es komplett öffne ...

                                            ! ````
                                            var Sommer2, TOB1, TOB2, TOM1, TOM2, TOE1, TOE2, TOBS1, TOBS2;
                                            ! /**

                                            • Beschreibe diese Funktion …
                                              /
                                              function Sonnenprogramm() {
                                              Sommer2 = schedule('
                                              9-20 * 5-9 *', function () {
                                              createState("global.sonne-balkon", function () {
                                              });
                                              createState("global.sonne-markise", function () {
                                              });
                                              createState("global.sonne-esszimmer", function () {
                                              });
                                              createState("global.sonne-bad-schlafzimmer", function () {
                                              });
                                              if (getState("javascript.0.Homepilot.Temperatur").val >= 22 && getState("javascript.0.Homepilot.Lichtwert").val >= 50000 && getState("javascript.0.Homepilot.Sonnenrichtung").val >= 80 && getState("javascript.0.Homepilot.Sonnenrichtung").val <= 190) {
                                              setState("javascript.0.global.sonne-balkon"/global.sonne-balkon/, true, true);
                                              } else {
                                              setState("javascript.0.global.sonne-balkon"/global.sonne-balkon/, false, true);
                                              }
                                              if (getState("javascript.0.Homepilot.Temperatur").val >= 22 && getState("javascript.0.Homepilot.Lichtwert").val >= 50000 && getState("javascript.0.Homepilot.Sonnenrichtung").val >= 80 && getState("javascript.0.Homepilot.Sonnenrichtung").val <= 190) {
                                              setState("javascript.0.global.sonne-markise"/global.sonne-markise/, true, true);
                                              } else {
                                              setState("javascript.0.global.sonne-markise"/global.sonne-markise/, false, true);
                                              }
                                              if (getState("javascript.0.Homepilot.Temperatur").val >= 22 && getState("javascript.0.Homepilot.Lichtwert").val >= 10000 && getState("javascript.0.Homepilot.Sonnenrichtung").val >= 190 && getState("javascript.0.Homepilot.Sonnenrichtung").val <= 265) {
                                              setState("javascript.0.global.sonne-esszimmer"/global.sonne-esszimmer/, true, true);
                                              } else {
                                              setState("javascript.0.global.sonne-esszimmer"/global.sonne-esszimmer/, false, true);
                                              }
                                              if (getState("javascript.0.Homepilot.Temperatur").val >= 22 && getState("javascript.0.Homepilot.Lichtwert").val >= 5000 && getState("javascript.0.Homepilot.Sonnenrichtung").val >= 260 && getState("javascript.0.Homepilot.Sonnenrichtung").val <= 280) {
                                              setState("javascript.0.global.sonne-bad-schlafzimmer"/global.sonne-bad-schlafzimmer/, true, true);
                                              } else {
                                              setState("javascript.0.global.sonne-bad-schlafzimmer"/global.sonne-bad-schlafzimmer/, false, true);
                                              }
                                              });
                                              }

                                            ! if (getState("javascript.0.global.sonnenprogramm_aktiv").val) {
                                            Sonnenprogramm();
                                            }
                                            on({id: 'javascript.0.global.sonnenprogramm_aktiv', change: "ne"}, function (obj) {
                                            var value = obj.state.val;
                                            var oldValue = obj.oldState.val;
                                            if (getState("javascript.0.global.sonnenprogramm_aktiv").val == true) {
                                            Sonnenprogramm();
                                            } else {
                                            (function () {if (Sommer2) {clearSchedule(Sommer2); Sommer2 = null;}})();
                                            }
                                            });
                                            on({id: "javascript.0.global.sonne-balkon"/global.sonne-balkon/, change: "ne"}, function (obj) {
                                            var value = obj.state.val;
                                            var oldValue = obj.oldState.val;
                                            // Balkon
                                            if (getState("javascript.0.global.sonne-balkon").val == true) {
                                            (function () {if (TOB2) {clearTimeout(TOB2); TOB2 = null;}})();
                                            TOB1 = setTimeout(function () {
                                            if (getState("javascript.0.global.homepilot.automatik.wohnzimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10015.level"/level Rollo Links/, 30);
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10001.level"/level Rollo Rechts/, 30);
                                            (function () {if (TOB1) {clearTimeout(TOB1); TOB1 = null;}})();
                                            }
                                            }, 900000);
                                            } else {
                                            (function () {if (TOB1) {clearTimeout(TOB1); TOB1 = null;}})();
                                            TOB2 = setTimeout(function () {
                                            if (getState("javascript.0.global.homepilot.automatik.wohnzimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10015.level"/level Rollo Links/, 0);
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10001.level"/level Rollo Rechts/, 0);
                                            (function () {if (TOB2) {clearTimeout(TOB2); TOB2 = null;}})();
                                            }
                                            }, 900000);
                                            }
                                            });
                                            // Markise
                                            on({id: "javascript.0.global.sonne-markise"/global.sonne-markise/, change: "ne"}, function (obj) {
                                            var value = obj.state.val;
                                            var oldValue = obj.oldState.val;
                                            if (getState("javascript.0.global.sonne-markise").val == true) {
                                            (function () {if (TOM2) {clearTimeout(TOM2); TOM2 = null;}})();
                                            TOM1 = setTimeout(function () {
                                            if (getState("javascript.0.global.sonne-markise").val == true) {
                                            if (getState("javascript.0.global.homepilot.automatik.markise").val == true) {
                                            setState("homepilot.0.devices.DuoFernRohrmotor-Aktor.10018.level"/level Markise/, 90);
                                            (function () {if (TOM1) {clearTimeout(TOM1); TOM1 = null;}})();
                                            }
                                            }
                                            }, 900000);
                                            } else {
                                            (function () {if (TOM1) {clearTimeout(TOM1); TOM1 = null;}})();
                                            TOM2 = setTimeout(function () {
                                            if (getState("javascript.0.global.sonne-markise").val == false) {
                                            if (getState("javascript.0.global.homepilot.automatik.markise").val == true) {
                                            setState("homepilot.0.devices.DuoFernRohrmotor-Aktor.10018.level"/level Markise/, 0);
                                            (function () {if (TOM2) {clearTimeout(TOM2); TOM2 = null;}})();
                                            }
                                            }
                                            }, 900000);
                                            }
                                            });
                                            // Esszimmer
                                            on({id: "javascript.0.global.sonne-esszimmer"/global.sonne-esszimmer/, change: "ne"}, function (obj) {
                                            var value = obj.state.val;
                                            var oldValue = obj.oldState.val;
                                            if (getState("javascript.0.global.sonne-esszimmer").val == true) {
                                            (function () {if (TOE2) {clearTimeout(TOE2); TOE2 = null;}})();
                                            TOE1 = setTimeout(function () {
                                            if (getState("javascript.0.global.sonne-esszimmer").val == true) {
                                            if (getState("javascript.0.global.homepilot.automatik.esszimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.1010011.level"/level Rollo Esstisch/, 30);
                                            }
                                            (function () {if (TOE1) {clearTimeout(TOE1); TOE1 = null;}})();
                                            }
                                            }, 900000);
                                            } else {
                                            (function () {if (TOE1) {clearTimeout(TOE1); TOE1 = null;}})();
                                            TOE2 = setTimeout(function () {
                                            if (getState("javascript.0.global.sonne-esszimmer").val == false) {
                                            if (getState("javascript.0.global.homepilot.automatik.esszimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.1010011.level"/level Rollo Esstisch/, 0);
                                            (function () {if (TOE2) {clearTimeout(TOE2); TOE2 = null;}})();
                                            }
                                            }
                                            }, 900000);
                                            }
                                            });
                                            // Bad & Schlafzimmer
                                            on({id: "javascript.0.global.sonne-bad-schlafzimmer"/global.sonne-bad-schlafzimmer/, change: "ne"}, function (obj) {
                                            var value = obj.state.val;
                                            var oldValue = obj.oldState.val;
                                            if (getState("javascript.0.global.sonne-bad-schlafzimmer").val == true) {
                                            (function () {if (TOBS2) {clearTimeout(TOBS2); TOBS2 = null;}})();
                                            TOBS1 = setTimeout(function () {
                                            if (getState("javascript.0.global.sonne-bad-schlafzimmer").val == true) {
                                            if (getState("javascript.0.global.homepilot.automatik.badezimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10013.level"/level Rollo Badezimmer/, 30);
                                            }
                                            if (getState("javascript.0.global.homepilot.automatik.schlafzimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10012.level"/level Rollo Schlafzimmer/, 30);
                                            }
                                            (function () {if (TOBS1) {clearTimeout(TOBS1); TOBS1 = null;}})();
                                            }
                                            }, 900000);
                                            } else {
                                            (function () {if (TOBS1) {clearTimeout(TOBS1); TOBS1 = null;}})();
                                            TOBS2 = setTimeout(function () {
                                            if (getState("javascript.0.global.sonne-bad-schlafzimmer").val == false) {
                                            if (getState("javascript.0.global.homepilot.automatik.badezimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10013.level"/level Rollo Badezimmer/, 0);
                                            }
                                            if (getState("javascript.0.global.homepilot.automatik.schlafzimmer").val == true) {
                                            setState("homepilot.0.devices.RolloTubeDuoFern.10012.level"/level Rollo Schlafzimmer/, 0);
                                            }
                                            (function () {if (TOBS2) {clearTimeout(TOBS2); TOBS2 = null;}})();
                                            }
                                            }, 900000);
                                            }
                                            });

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            912
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            53
                                            3251
                                            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