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

      @meicker:

      scheint es sehr viel Datentraffic zu geben und die Rolläden werden scheinbar immer wieder angesprochen. `
      Vorschlage: Setze in dem Skript, das die Bedingungen für Sonnenrichtung, Lichtwert und Temperatur prüft, nur die virtuellen Datenpunkte "global.sonne-ort" und nicht die Rollo-Datenpunkte.

      Für jeden Ort erstelle ein eigenes Skript zur Rollosteuerung, das durch den virtuellen Datenpunkt getriggert wird:
      493_blockly_min_bedingungsdauer.jpg
      Das Rolloskript kann für jeden Ort kopiert werden und anschließend müssen nur noch die Datenpunkt-IDs ausgetauscht werden.

      Das Triggern (bei Änderung) auf den virtuellen Datenpunkt sorgt dafür, dass nur getriggert wird, wenn zur Rollosteuerung erforderlich.

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

        Guten Morgen Paul,

        ich hatte mich total verrannt und alles war zu kompliziert geworden. Also habe ich gestern alles noch einmal von vorne gemacht und dabei ist das herausgekommen:
        8270_screenshot_2018-08-22_javascript_-_iobroker.png
        Unter den Werten grenze ich die Fenster ein durch den Sonnenstand und frage die Temperatur ab sowie den Lichtwert. Das ganze könnte man jetzt noch komplett nach außen lagern und hätte dann keinerlei Abfragen mehr auf dem Sonnenprogramm. Man könnte das Sonnenprogramm durch die Abfrage einschalten. Wobei man dann ein Script mehr hat und die Abfrage trotzdem gemacht wird 🙂

        Jedenfalls, wenn die Bedingungen für einen raum zutreffen wird das Sonnenprogramm dafür aktiviert.

        Unterhalb habe ich dann die Räume. Sofern das Sonnenprogramm aktiviert ist werden die Rolläden gefahren.

        Ist das Sonnenprogramm nicht aktiv:

        Springt direkt zu sonst, führt nach 20 Minuten (Zeit muss ich noch justieren) die Abfrage aus. Wenn immernoch unwahr wird mit 0 gesteuert (nichts verändert sich) und beendet.

        Sofern innerhalb der 20 Minuten auf aktiv gesetzt wurde wird auf 30 gesteuert.

        Ist das Sonnenprogramm aktiv:

        Wird in 5 Minuten mit 30 gesteuert, ansonsten mit 0

        Wenn innerhalb der 5 Minuten von aktiv auf inaktiv geht, dann wird mit 0 geregelt.

        Ich lasse das heute mal so laufen und bin gespannt. Aber wenn das funktioniert ist es eine einfache Lösung. ich glaube ich werde die beiden Timeouts einfach auf 15 Minuten setzen. Bei einer langen Sonnenperiode wird dann nicht so viel geschaltet, bei aufgehender Sonne wird spätestens nach 15 Minuten gemacht was gemacht werden soll und eine Pause von 15 Minuten, wobei das müssten eigentlich dann schon 30 Minuten Sonnenpause sein, wird nichts gefahren … wenn ich mir das richtig überlegt habe 🙂

        Was denkst Du ?

        Viele Grüße,

        marc

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

          Es wird jede Minute ausgelöst, was bedeutet, dass jede Minute ein neuer Timer erzeugt wird. Das wird so nicht funktionieren.

          Die Bedingungen können jede Minute geprüft werden und als Ergebnis die virtuellen Datenpunkte "global.sonne-ort" gesetzt werden. Für jeden Ort sollte dann der Datenpunkt "global.sonne-ort" als Trigger dienen:

          493_blockly_hoch_runter_verz_gerung.jpg
          Jede Timer-Variable benötigt ihren eigenen Namen.

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

            Hi Paul,

            //UPDATE // Habe gerade gesehen das dein Vorschlag mit meinem identisch ist 🙂

            das hatte ich auch gemerkt 🙂 Glücklicher Weise habe ich ein schönes flot Diagramm gemacht und konnte mir die Einstellungen und deren Auswirkung live ansehen. Ich habe dann mal den Blocky code als Javascript code angesehen und in dem Code lesen können was da für ein Mist passiert. Dann habe ich umgedacht und das folgende gemacht:

            8270_screenshot_2018-08-22_javascript_-iobroker_1.png

            und das Ergebnis ist:
            8270_screenshot_2018-08-22_flot_chart.png

            Man kann an der gelben Linie sehen das es jetzt tatsächlich dauert wenn das Sonnenprogramm eingeschaltet wurde. Die gelbe Line 100% ist das Sonnenprogramm und die bis 80, 90 oder 30% ist die Markise. Ich habe dann zwischenzeitlich das Sonnenprogramm beendet und die Markise blieb draußen. Dann habe ich vor Ablauf von 15 Minuten beendet und die Markise blieb draußen. Dann habe ich beenden lassen und die Markise ist eingefahren. So klappt das m.E wunderbar.

            Und on top habe ich noch eingebaut das wenn man das Sonnenprogramm abschaltet alles einfährt …

            Also, es hat funktioniert. was sagst Du zu dieser Lösung ? Sie sieht anders aus als deine aber scheint zu funktionieren ... oder siehst Du da was negatives dran ?

            Viele Grüße,

            marc

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

              Du hast allerdings die STOP teile noch drin, ich nicht - was bewirkt das bei mir bzw. was würde es bewirken wenn ich die noch einsetze ?

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

                @meicker:

                was sagst Du zu dieser Lösung ? Sie sieht anders aus als deine aber scheint zu funktionieren … oder siehst Du da was negatives dran ? `
                Bau mal einen Debug-Block vor den steuere Block ein, dann wirst Du es sehen.

                @meicker:

                Du hast allerdings die STOP teile noch drin, ich nicht - was bewirkt das bei mir bzw. was würde es bewirken wenn ich die noch einsetze ? `
                stop timeout_balkon_runter bewirkt, dass der Timer timeout_balkon_runter sofort gestoppt wird, wenn während der Laufzeit des Timers die Sonne hinter einer Wolke verschwindet; die Rollos fahren also nicht runter. Kommt die Sonne wieder hervor (z.B. nach 2 Minuten), wird der Timer wieder gestartet. Die Sonne muss also während der Timerlaufzeit ununterbrochen scheinen, damit die Rollos runterfahren.

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

                  > Die Sonne muss also während der Timerlaufzeit ununterbrochen scheinen, damit die Rollos runterfahren.

                  Baue ich mal wieder mit ein - ist im wesentlichen was ich oben probiert hatte mit den gegensätzlichen Zuständen …

                  Vielen Dank, mal wieder 🙂

                  Gruß,

                  Marc

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

                    @meicker:

                    siehst Du da was negatives dran ? `
                    Schau mal, was passiert, wenn man einen Timer mit mehreren (5) Minuten jede Minute triggert.
                    493_blockly_timer_minutentrigger.jpg

                    erster Trigger: 20:35 Uhr

                    erster Wert: 20:40 Uhr

                    Bedingungs-Ende: 20:46:47

                    letzter Wert: 20:51

                    Und jede Minute wird an den Rollo-Aktor gesendet !

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

                      Das ist unnötig viel Traffic. ich habe das eben angepasst und bin Morgen mal auf das Monitoring gespannt 🙂 Vielen Dank nochmal für die viele Hilfe von Dir 🙂 So macht das Spaß 🙂

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

                        Hi Paul,

                        ich habe noch eine Ergänzung, aber jetzt stimmt es wirklich. Du hast wechselseitig die Timer abgeschaltet was bewirkt hat, dass die 15 Minuten nicht eingehalten wurden und die wilde fahrerei wieder angefangen hat. Ich schalte jetzt jeden Timer beim wechsel aus und lasse von vorne laufen, so kommt nichts durcheinander. ich glaube vorher war es so, dass die Timer durcheinander gekommen waren wenn die Sonne in kurzen Abständen verschwunden war bzw nur für kurze Zeit da war …

                        Zum testen habe ich die Markise gelassen, die fährt auf 90%

                        Die gelbe Linie bei 100% ist Sonne wahr

                        Die roten Linien bei 30% sind die Rolläden (umgestellt auf beide Timer abschalten)

                        Die Linie bei 50000 ist die Schaltgrenze und die balue der Lichtwert
                        8270_screenshot_2018-08-23_javascript_-_iobroker.png

                        und das ergibt:
                        8270_screenshot_2018-08-23_flot_edit.png

                        Die Rolläden bleiben oben und die Markise fährt (noch) - Speziell bei 13 Uhr kannst Du sehen wie die Markise kurz raus und dann direkt wieder eingefahren ist …

                        Viele Grüße,

                        Marc

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

                          Scheiße 🙂 Schon wieder ein Denkfehler ??? Ich werd bekloppt 🙂

                          8270_screenshot_2018-08-23_flot_edit_1_.png
                          8270_screenshot_2018-08-23_javascript_-_iobroker.png

                          Balkon Rolladen sind unten

                          Sonne ist da: Timer 1 RESET Timer 2 RESET Timer1 gestartet läuft in 15 Minuten und fährt raus -> Sind draußen, nix wird passieren

                          Sonne ist weg Timer 1 RESET Timer2 RESET Timer2 gestartet läuft in 15 Minuten und fährt rauf -> Sind draußen, werden in 15 Minuten eingefahren.

                          Aber genau das ist nicht passiert … warum ? Das hätte doch eigentlich nach 15 Minuten passieren müssen wenn der zweite Timer gestartet wurde. Es hat sich doch in der Zwischenzeit nichts mehr geändert ... oder ?

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

                            Ich glaube ich weiß warum 🙂 Die werden ja jede Minute neu gestartet … da kann sich nichts ändern :oops: :lol:

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

                              so ! Ich glaube ich habs 🙂

                              8270_screenshot_2018-08-23_javascript_-_iobroker.png
                              Zumindest sah ein erster Testlauf am Nachmittag nicht verkehrt aus:
                              8270_screenshot_2018-08-23_flot_edit.png

                              1 Reply Last reply Reply Quote 0
                              • 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
                                            • 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