Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Rolladensteuerung mit Blockly (Anfänger)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Rolladensteuerung mit Blockly (Anfänger)

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

      Hallo zusammen,

      ich möchte gerne mal meine "Anfänger-Rolladen-Steuerung-nach-Jahreszeiten" vorstellen, um durch eure Anmerkungen und Kritik zu lernen 😄

      Wie schon erwähnt bin ich Anfänger beimn Smart Home, bei der CCU3 und vor allem beim Skripten (für meinen Teil mit Blockly).

      Ich wollte erreichen, dass meine Rollade Terassenfront morgens hoch fährt, wenn es nicht mehr stock dunkel ist, aber auch noch nicht richtig hell, also ja quasi so in der Dämmerung morgens. Jetzt habe ich draußen eine HmIP Wetterstation und kann die Lichtwerte messen und damit steuern.

      Man könnte nun einfach sagen, wenn der Helligkeitswert > x ist, dann fahre die Rollade hoch. Ganz einfache Lösung bzw. auch Programmierung. Ich wollte aber zusätzlich noch andere Bedingungen umsetzen.

      1. Rollade fährt hoch, wenn es schon ein bisschen hell ist (die Bedingung von oben)

      2. Die Rollade fährt aber zeitlich nicht zu früh hoch, und auch nicht zu spät. Z.B. frühestens um 7:00, spätestens um 8:30, egal ob (1) erfüllt ist oder nicht.

      3. Die Programmierung soll das ganze Jahr über funktionieren, Sommer wie Winter und dazwischen.

      Mal so als Beispiel: Wenn nur (1) erfüllt wird, dann fährt die Rollade im Sommer um 5:30 hoch und im Winter um 8:15. Das ist mir im Sommer zu früh.

      Ich hoffe es war einigermaßen verständlich beschrieben, sonst fragt bitte gerne nach.

      Meine Lösung (von der ich aktuell nicht weiß, ob sie immer funktioniert), sieht nun so aus.

      In der CCU habe ich eine Variable "Jahreszeit" angelegt als Werteliste mit den Werten Frühling, Sommer, …

      Im ioBroker habe ich folgendes Programm geschrieben / zusammen geklickt:
      15627_jahreszeiten.png

      Als JS sieht das so aus:

      schedule('{"time":{"exactTime":true,"start":"12:00"},"valid":{"from":"03.01.2019"},"period":{"months":"[3,6,9,12]","dates":"[1]"}}', function () {

      if ((new Date().getMonth() + 1) == 3) {

      setState("hm-rega.0.2648"/Jahreszeit/, 0);

      }

      if ((new Date().getMonth() + 1) == 6) {

      setState("hm-rega.0.2648"/Jahreszeit/, 1);

      }

      if ((new Date().getMonth() + 1) == 9) {

      setState("hm-rega.0.2648"/Jahreszeit/, 2);

      }

      if ((new Date().getMonth() + 1) == 12) {

      setState("hm-rega.0.2648"/Jahreszeit/, 3);

      }

      });

      Soll also am ersten Tag der Monate März, Juni, September und Dezember um 12 Uhr die Variable entsprechend setzen.

      Mit dieser Variable habe ich dann in der CCU folgendes Programm geschrieben:
      15627_ccu_rollade.png

      Das sind jetzt 2 von 4 Blöcken. Für Herbst und Winter gibt es nochmal je einen Block "Sonst-Wenn".

      Die Variable Rollade-Richtung wird dabei in Abhängigkeit der Helligkeit von draußen auf hoch (H>6 Lux) bzw. runter gesetzt.

      Ist jetzt ein bisschen lang geworden :oops:

      Aber mich würde halt mal interessieren, ob ich hier totalen Mist programmiert habe und das ganze auch in 3 Zeilen gelöst werden kann, oder ob das schon eine ganz ordentliche Lösung / Programmierung ist.

      Würde mich über Anregungen, Kritik, gerne auch positive Kritik freuen.

      1 Reply Last reply Reply Quote 0
      • X
        xbow42 last edited by

        ich finde es reichlich kompliziert. Ich würde die ganze Logik im iobroker lassen und es mit Astro- Fixzeitsteuerung machen.

        Was würde deine Steuerung mit dem Helligkeitssensor bei Gewitter machen?

        Mal so als Idee für Rollladen hoch (habe hier gerade kein Blockly)

        *frage jeden Tag 00:00:00 ab wann Sonnenaufgang ist

        *wenn SA im Zeitfenster 7:00-8:30

        • setze Rollladen-hoch-event auf SA-Zeit

        sonst wenn Datenpunkt "heute Frei"="nö"

        • setze Rollladen-hoch-event auf 7:00

        sonst

        • setze Rollladen-hoch-event auf 8:30

        Ich verwende Sonnenaufgang- und Abenddämmerungsteuerung bisher erst an 2 Rollläden. Wobei es könnte ruhig 30min vor der Abenddämmerung zu fahren. Also werde ich das wohl noch ändern.

        Wenn mein Rollladen an der Terrassentür auf elektrisch umgerüstet ist, würde ich gerne noch einen Bewegungssensor auf der Terrasse einsetzen damit der Laden offen bleibt wenn man im Sommer noch länger draußen ist. Oder als Schaltbedingung "warten mit zufahren bis Terrsassenbeleuchtung aus", kostet nix extra und vermutlich praktikabler bei Haustieren.

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

          Hallo zusammen,

          ich finde das auch reichlich kompliziert.

          Ich habe das gleiche Problem mit drei Triggern gelöst:

          (Ich steuere die Rollläden mit Variablen, das tut aber hier nichts zur Sache.)
          1171_1.png

          Um 6:00 wird geprüft, ob Sonnenaufgang schon vorbei. Wenn ja, dann Rollos auf.

          Zwischen 6:00 und 8:00 öffnen die Rollos bei Sonnenaufgang.

          Und um 8:00 öffnen sie spätestens (wenn Sonne nicht schon aufgegangen).

          Zusätzlich prüfe ich noch auf Wochenende, Feiertage und Urlaub.

          Geht vermutlich noch kompakter, klappt bei mir aber so hervorragend.

          Gruß

          Oliver

          1 Reply Last reply Reply Quote 0
          • J
            Jan1 last edited by

            Man macht Ihr hier komplizierte Sachen. Ich mach übrigens so ziemlich ähnliche Dinge mit meinen Rollläden und dazu bedarf es nicht mal des IOBrokers oder sonstiger Scripte. Was ich habe, ein billigen Rollladenmotor und ein Shelly2 mit StefanBode Tasmota Fork. Entweder man macht das über den integrierten sehr variablen Timer von Tasmota, oder wenn man Ahnung von den Rueles in Tasmota hat, dann kann man da mit auch so ziemlich alles machen was man möchte. Das ist alles autark, kann aber ohne Probleme so auch direkt über die passenden DPs in VIS visualisiert werden.

            Das ganze lässt sich natürlich auch per Alexa auf beliebige % Werte fahren.

            Die original FW soll bei den Shellys auch recht gut sein und hat schon eine Shutter Funktion mit dabei. Über den passenden Adapter lässt sich das dann wohl auch gut in IOBroker integrieren.

            Aber wie immer, viele Weg führen nach Rom und ich habe mich für den über die Shellys entschieden.

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

              Toll, was du alles kannst.

              Das hilft dem TO nur leider kein bisschen…

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

                Die Version vom TE wäre mir auch viel zu kompliziert. Ich würde die Logik entweder auf der CCU belassen, oder in ioBroker und möglichst wenig mischen, denn das wird irgendwann unübersichtlich.

                Die Lösung von myol finde ich eigentlich ganz passend, wenn gleich ich nicht einverstanden wäre, dass die Rollos an freien Tagen schon 8 Uhr hochfahren. :lol:

                Weils praktisch ist, steuere ich meine Rollos über Szenen. Meist sollen sowieso alle gleichzeitig hoch oder runter. So brauch ich im Script nur 1x die Szene antriggern und nicht jeden Rolladen einzeln. Gleiches gilt für die HomeKit-App, wo ich mit einem Knopfdruck dann die Szene antriggern kann.

                1 Reply Last reply Reply Quote 0
                • J
                  Jan1 last edited by

                  @myol:

                  Toll, was du alles kannst.

                  Das hilft dem TO nur leider kein bisschen… `

                  Doch es zeigt, dass es auch andere Wege gibt das umzusetzen, ob er das will oder nicht entscheidet immer noch er selber. Nur er wenn nicht weiß was es noch gibt, hat er nicht mal diese Möglichkeit der Entscheidung. Aber Hauptsache Du hast auch Dein Senf dazu gegeben.

                  Ich hatte auch schon nach Lösungen gesucht die in eine Richtung liefen und war dankbar, dass da auch mal einfach andre Möglichkeiten aufgezeigt wurden 😉

                  Rollläden nach Zeitplan hoch zu fahren, finde ich persönlich eh nicht optimal. Die sollen hoch, wenn ich wach bin und nicht ich wach, weil es hell wird. Meine fahren auch nach eine Szene hoch. Da heißt es morgens "Alexa, aufstehen", dann geht das Licht an (falls noch dunkel) im Bad läuft mein Lieblings-Sender und die Rollläden fahren hoch.

                  Wenn man den Sinn darin erkennt, will man vielleicht gar keine Uhrzeit oder Astrozeit mehr zum Steuern.

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

                    Hmmm, das mit der Szene ist keine schlechte Idee.

                    Muss ich mal drüber nachdenken.

                    Allerdings fahre ich meine HM-Rolladenaktoren extra nicht zeitgleich, wegen des dann abgegebenen Funkfeuerwerks.

                    Die Dinger ballern ja im Betrieb richtig was raus. 😉

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

                      Bei mir fahren derzeit 6 Rolladen gleichzeitig. Ich kann da keine Probleme feststellen.

                      Aber auch bei Szenen kannst du Verzögerungen einstellen. Entweder global für die gesamte Szene - dann wird jeder Befehl um die angegebene Zeit verzögert. Oder für jeden Eintrag individuell.

                      1 Reply Last reply Reply Quote 0
                      • B
                        buggybeast71 last edited by

                        Ich hab mir eure Ratschläge zu Herzen genommen und probiere nun schon seit ein paar Tagen rum. So richtig funktioniert es irgendwie nicht.

                        Habe nun alles in ioBroker mit Blockly realisiert. So ähnlich wie myol. Sieht bei mir so aus für abends:
                        15627_blockly_abends.png
                        Und für morgens:
                        15627_blockly_morgens.png

                        Die Var statusRollade sagt nur aus, ob Rollade oben=1, unten=0 ist oder gerade beschattet=3 wird. Wenn sie schon oben ist, soll das Programm halt erst gar nicht mehr abfahren.

                        Nun ist die Rollade abends wie gewünscht runter gefahren, aber morgens nicht hoch. Obwohl beide Programme doch quasi identisch sind??? Ist mir ein Rätsel. Man kann das Programm sicher noch schöner machen (siehe Bsp. von myol), aber Hauptsache erstmal es funktioniert.

                        Ich steuere ja den Kanal 4 des HmIP Broll Rolladenaktor. Ist das erstmal korrekt? Es gibt auch Kanal 3. Wozu ist der dann da?

                        Bei einem Blick in der Werte habe ich folgendes gesehen:
                        15627_channel.png 15627_channel_status.png

                        Der Wert LEVEL von Kanal 4 steht auf 0.5%. Eigentlich ist das 0%, nicht dran stören. Die Rollade ist aber oben. Der Wert müsste dann doch auf 100% stehen. Warum hat die CCU den Wert nicht aktualisiert??? (in der CCU steht übrigens der gleiche Wert)

                        Der Wert in Kanal 3 ist dann 99.5% (was eigentlich 100% ist). Der ist richtig.

                        Irgendwas mache ich doch noch falsch.

                        1 Reply Last reply Reply Quote 0
                        • B
                          buggybeast71 last edited by

                          Sorry, aber ich brauche hier immer noch Hilfe.

                          Ich bin vielleicht ein bisschen weiter gekommen.

                          Wenn ich in Blockly wie beschrieben die HmIP BROLL Rollade mit 100 steuere, bekomme ich in der Regel einen Fehler.

                          hm-rpc.0 2019-01-30 08:55:20.022 error Error: XML-RPC fault: Generic error

                          hm-rpc.0 2019-01-30 08:55:20.022 error xmlrpc -> setValue ["4","LEVEL",0.995] FLOAT

                          Ich steuere mit 100 und im Log steht was von 0.995. Daher habe ich mir die Objekte nochmal etwas genauer angesehen. Woanders im Forum habe ich gelesen, dass der LEVEL eine INTEGER Zahl ist. Die Fehlermeldung wäre damit zumindest nachvollziehbar.

                          Im Objekt HmIP-BROLL 001118A995071C:4.LEVEL steht unter Allgemein ein Min Wert von 0 und ein Max Wert von 100.44449.

                          Im Objekt HmIP-BROLL 001118A995071C:4.LEVEL steht unter Nativ ein Min Wert von 0 und ein Max Wert von 1.005. Der Typ unter Nativ ist übrigens auch FLOAT. Vielleicht ist auch das falsch.

                          Ich habe leider keinen blassen Schimmer, was diese Werte zu bedeuten haben bzw. was für Auswirkungen sie haben. Aber wenn man mal 1:1.005 oder auch 100:100.4449 teilt, dann kommt genau dieser Wert raus, der im Log steht, 0.995.

                          Ich habe diese Werte nun in ioBroker einfach mal angepasst zu jeweils dem INTEGER Wert, also 100 und 1. Ich frage mich nur, woher hat ioBroker diese krummen Werte überhaupt. Testen kann ich erst heute Abend.

                          Aber in Summe verstehe ich einfach nicht, was hier abgeht.

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

                            Was ist jetzt das aktuelle Problem? Der Levelwert oder dass das Rollo morgens nicht hoch geht?

                            Bei ersterem kann ich dir leider nicht helfen. Bei dem zweiten würde ich es mal versuchen, wenn du mir erklärst, was du da programmiert hast.

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

                              Ich habe jetzt nicht alles gelesen.

                              Aber:
                              @buggybeast71:

                              Ich steuere mit 100 und im Log steht was von 0.995. Daher habe ich mir die Objekte nochmal etwas genauer angesehen. Woanders im Forum habe ich gelesen, dass der LEVEL eine INTEGER Zahl ist. Die Fehlermeldung wäre damit zumindest nachvollziehbar. `
                              Meines Wissens ist 1 (also 0.995) der Maximalwert.

                              0.5 ist halb runter (Zeit) und 1 ist ganz hoch

                              Gruß

                              Rainer

                              1 Reply Last reply Reply Quote 0
                              • B
                                buggybeast71 last edited by

                                Hi zusammen,

                                Hi Hiltex, was ich programmiert habe steht doch 2 Beiträge weiter oben. Mein vorletzter und letzter Beitrag geben den aktuellen Stand bei mir wieder.

                                Hi Homoran, das ist bei mir definitiv nicht so. Ich habe es mit Werten zwischen 0 und 1 probiert. Dann bewegt sich die Rollade ca. 1mm 😉

                                Ich steuere den Kanal 4 der HmIP BROLL. Kanal 4 sieht fast identisch aus wie Kanal 3. Allerdings ist in dem Wert LEVEL zu sehen, dass dieser NICHT schreibbar ist. Daher nehme ich Kanal 4. Der ist schreibbar. Außerdem nimmt die CCU selbst, wenn man da mit einem Programm die BROLL steuert, auch den Kanal 4.

                                Ich verstehe auch einfach nicht die Fehlermeldung. Was soll <error xmlrpc/-="">setValue ["4","LEVEL",0.995] FLOAT> bedeuten?

                                Wie muss man das lesen? "Fehler in der RPC Schnittstelle beim Setzen eines Wertes als FLOAT Typ"???

                                Und was ist dann der Fehler? Das versucht wird, den Typ FLOAT zu nehmen? Oder was anderes?</error>

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

                                  Hallo buggybeast71,

                                  vielleicht mache ich es mir zu einfach oder du dir zu kompliziert… Ich habe keine HM-Rollladenaktoren, weil ich für mich entscheiden habe, dass die schlicht zu teuer sind. Das ist jetzt aber mal für Dein Problem egal.

                                  Mach doch mal Screenshots von den Inhalten der Datenpunkte wenn das Rollo

                                  • ganz offen

                                  • ganz geschlossen

                                  • und vielleicht etwa 20% geschlossen ist.

                                  Dann würde ich versuchen, die schreibbaren DPs mit Werten von Hand über die Objekte-Ansicht des ioBroker zu füllen und zu schauen, was passiert. Das Rollo müsste ja dann entsprechend reagieren. Ich regele meine Rollos über Prozentwerte und Fahrzeit über Sonoff-Schalter. Offen ist 0%, geschlossen 100% bzw. in Abhängigkeit von der Länge z.B. beim längsten Rollo 44sec. Fahrzeit. Jede Stellung dazwischen wird über Dreisatz berechnet. Funktioniert tadellos.

                                  Grüße

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

                                    @buggybeast71:

                                    Hi Hiltex, was ich programmiert habe steht doch 2 Beiträge weiter oben. Mein vorletzter und letzter Beitrag geben den aktuellen Stand bei mir wieder. `

                                    Hab ich gesehen. Aber beschreibe doch mal bitte mit deinen eigenen Worten, was da eigentlich passieren soll.

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      buggybeast71 last edited by

                                      Ok ich mache das alles ab morgen / Wochenende. Vorher schaffe ich das leider nicht.

                                      Ich werde mal Screenshots von verschiedenen Stellungen posten und auch beschreiben, was ich vorhabe.

                                      Ich melde mich wieder 🙂 Danke für eure Antworten 🙂

                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        buggybeast71 last edited by

                                        Hallo zusammen,

                                        seit ein paar Tagen funktioniert die Steuerung per Blockly Skript nun bei mir.

                                        Ich möchte das gern nochmal posten, wie meine Lösung aktuell aussieht, denn vielleicht hilft es ja dem ein oder anderen auch mit ähnlichen Problemen.

                                        Zunächst einmal mein aktuelles Skript:
                                        15627_bildschirmfoto_2019-02-06_um_15.59.12.png

                                        Die Variablen:

                                        • MorgenDaemmerung ist der aktuelle Zeitpunkt der Morgen Dämmerung, ebenfalls per Skript als Variable gespeichert und jeden Tag aktualisiert.

                                        • statusRollade ist entweder 0=unten oder 1=oben. Das Programm soll halt nur einmal laufen. Da der Zeitplan alle 10 Minuten das Programm startet, wäre das blöd, wenn immer wieder die Steuerung der Rollade getriggert wird.

                                        Soweit war das ja nix Neues.

                                        Nach diesen komischen Werten und Fehlermeldungen habe ich mir den Parameter "LEVEL" der Kanäle 3 und 4 (des HmIP-BROLL Gerätes) etwas genauer angesehen.
                                        15627_bildschirmfoto_2019-02-06_um_16.07.25.png

                                        Im Reiter "Allgemein" gibt es einen Min und einen Max Wert. Wie schonmal beschrieben, stand Min immer auf 0, Max aber auf 100.4449. Hier ist die Maßeinheit übrigens % und der Datentyp INTEGER.

                                        Im Reiter "Nativ" war das ähnlich. Dort war in Min ebenfalls 0 eingetragen und in Max 1.005. Hier gibt es ein Attribut Unit=100% und der Datentyp ist FLOAT.

                                        Desweiteren ist der Kanal 3 der BROLL NICHT SCHREIBBAR!!! Kanal 4 ist das aber.

                                        Also meines Erachtens muss zum Steuern der Rollade der Kanal 4 zu verwenden und eine INTEGER Zahl zu übergeben.

                                        Das einzige, was ich nun einfach probiert habe, ist in beiden Kanälen (3 und 4) die jeweiligen Max-Werte im Reiter "Allgemein" auf 100 und im Reiter "Nativ" auf 1.00 zu stellen. Das wurde im ioBroker auch anstandslos akzeptiert.

                                        Ab da lief meine Steuerung. Und im Feld Wert stehen dann nach dem Hochfahren auch die Werte=100%
                                        15627_bildschirmfoto_2019-02-06_um_16.16.39.png

                                        Semie1 1 Reply Last reply Reply Quote 0
                                        • Semie1
                                          Semie1 @buggybeast71 last edited by

                                          @buggybeast71
                                          Guten Morgen, darf ich frage wie du das mit der Morgendämmerung gelöst hast im Script. Ich bin auch noch Anfänger. Danke einen schönen Tag

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          610
                                          Online

                                          31.6k
                                          Users

                                          79.6k
                                          Topics

                                          1.3m
                                          Posts

                                          8
                                          19
                                          3627
                                          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