Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Rolladensteuerung errechnen des Standes

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    900

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    685

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Rolladensteuerung errechnen des Standes

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
38 Beiträge 13 Kommentatoren 8.0k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • AlCalzoneA Offline
    AlCalzoneA Offline
    AlCalzone
    Developer
    schrieb am zuletzt editiert von
    #2

    Wie wäre es, wenn du mal deinen tatsächlichen Code postest, anstatt Pseudo-Code? Ich vermute du bist auf den klassischen Fallstrick mit den Timeouts reingefallen.

    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

    1 Antwort Letzte Antwort
    0
    • rantanplanR Offline
      rantanplanR Offline
      rantanplan
      schrieb am zuletzt editiert von
      #3

      @wecker6789:

      Guten Tag,

      Ich habe schon einige Seiten dieses Forums durchsucht aber bisher leider keine richtige Antwort gefunden aber zunächst zu meinem Problem.

      Ich habe eine Rolladensteuerung bei mir eingebaut über Sonoff Module.

      Dadurch erhalte ich leider nicht den Stand der Rolladen.

      Dies hätte ich gerne in Blockly irgendwie geschrieben bzw errechnet. `

      Hallo wecker6789

      Das Vorhaben ist wohl zum Scheitern verurteilt.

      Rollos fahren unterschiedlich schnell rauf und runter.

      Keine Ahnung wie Sonoff arbeitet aber HM Aktoren arbeiten mit der Fahrzeit.

      Z.B. Rauf 27 Sek. und runter 24 Sek.

      Und relativ zur Fahrzeit, wird die Position (nach dem der Rollo gestoppt hat) errechnet und in einen Datenpunkt geschrieben.

      (12 Sek. runter = 50%)

      Falls Sonoff solch einen Datenpunkt nicht hat, stehst Du wohl auf verlorenen Posten.

      Grüße

      Rantanplan

      CCU3 / MS Server 2019(VM) / Scripten mit Blockly

      1 Antwort Letzte Antwort
      0
      • W Offline
        W Offline
        wecker6789
        schrieb am zuletzt editiert von
        #4

        Das ist der Code in C++.

        For entspricht in Blockly solange wie (also eine for Schleife).

        Habe so kein richtiges Programm als diese Vorstellung.(Da sich bisher auf meine Scripts immer der Raspi verabschiedet hat)

        Realisiert wird das ganze über meine Sonoff 4CH Pro.

        Das heißt ich steuere immer über Ausgang 1 (Motor Hoch Fenster 1) und Ausgang 2 (Motor Runter Fenster 1) Ausgang 3 (Motor Hoch Fenster 2) etc.

        Ich hatte es mir so vorgestellt.

        Das ich quasi mitzählen lasse wie lange ich den jeweiligen Ausgang ansteuere und daraus errechnet man dann die Höhe der Rolladen.

        Die Sonoff geben mir keine Rückmeldung außer wenn der jeweilige Ausgang angesteuert wird mit True oder False.

        Aber wenn die Laufzeiten unterschiedlich sind zum Hoch oder Runter fahren könnte man das ja gegen rechnen.

        Gibt es denn überhaupt die Möglichkeit in einem Scipt mitlesen zu lassen wie lange ein gewählter Ausgang angesteuert wird?

        1 Antwort Letzte Antwort
        0
        • W Offline
          W Offline
          wecker6789
          schrieb am zuletzt editiert von
          #5

          Ich glaube das ist meine Lösung tut mir Leid ich hatte die Unterbrechung vergessen.

          Dadurch hat sich das Intervall natürlich Tod gelaufen.

          Wenn man einen ruhigen Kopf hat dann läuft es wohl doch besser.
          3918_screenshot__21_.png

          1 Antwort Letzte Antwort
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #6

            Das sieht soweit gut aus. Würde nur die Vergleiche auf "größer als letzter"/"kleiner als letzter" durch wahr/falsch ersetzen und boolean-States für die Schalter verwenden.

            Warum ich dich speziell nach Blockly-Code gefragt habe:

            Dein Code im ersten Code legt die Gefahr nahe, auf einen typischen NodeJS/JavaScript-Anfängerfehler hereinzufallen. Dazu gabs erst vor kurzem ein Thema.

            Es gibt auf dieser Platform nämlich keine Möglichkeit eine Schleife für eine bestimmte Zeit zu pausieren. Ein Konstrukt wie

            var start = Date.now();
            while (Date.now() - start < 10000) {
            	setTimeout(/* irgendein Schaltvorgang */, 1000);
            }
            
            

            sorgt dafür, dass du geschätzte 1.000.000 Timeouts erstellst, die von 1 bis 11ms nach Start nahezu gleichzeitig ausgeführt werden und dein System lahmlegen.

            Stattdessen musst du (wie du es jetzt gelöst hast) mit setInterval arbeiten oder in jedem Callback vom Timeout einen neuen starten.

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Antwort Letzte Antwort
            0
            • W Offline
              W Offline
              wecker6789
              schrieb am zuletzt editiert von
              #7

              Ich danke euch trotzdem.

              Ja das hast du Recht ich bin leider nie dazu gekommen mich mit JavaScript zu befassen.

              Bin immer nur bei C++ geblieben.

              Dadurch war ich froh das es Blockly gibt.

              Aber in die Feinheiten muss ich mich noch ein arbeiten.

              Das mit dem True und False muss ich noch erledigen das stimmt.

              Nun probiere ich mich nur noch an Sommer und Winterzeit.

              Wie macht ihr das ?

              Abhängig vom Datum oder macht ihr zwei Programme und schaltet dann per Hand zum richtigen Zeitpunkt um?

              Ich habe leider keine Temperatur/Helligkeitssensoren außen am Haus.

              Die Lage der elektrischen Rollos würde das eh nicht helfen, da ich selten direkte Sonneneinstrahlung durch diese Fenster habe.

              Mir würde es eher um Einbruchschutz und Energie Gewinnung / Verlust im Winter und Sommer gehen.

              1 Antwort Letzte Antwort
              0
              • rantanplanR Offline
                rantanplanR Offline
                rantanplan
                schrieb am zuletzt editiert von
                #8

                @wecker6789:

                Gibt es denn überhaupt die Möglichkeit in einem Scipt mitlesen zu lassen wie lange ein gewählter Ausgang angesteuert wird? `
                Es gibt so etwas wie "letzte Änderung". Habe aber jetzt kein Beispiel.

                So könnte es auch gehen.
                147_beispiel.png

                @wecker6789:

                Aber wenn die Laufzeiten unterschiedlich sind zum Hoch oder Runter fahren könnte man das ja gegen rechnen. `
                So einfach ist es leider nicht ;)

                Selbst wenn wir sagen "Der Motor läuft in einer Richtung immer gleich schnell"

                Aber das sichtbare Ende des Rollos bewegt sich unterschiedlich schnell.

                Der Durchmesser der Rolle auf dem das Rollo auf- oder abgedreht wird ändert sich.

                Wenn man IMMER NUR KOMPLETT auf und zu fährt geht das.

                Aber wenn man von 0% auf 10% auf 40% auf 20% auf 50% usw. fährt geht's ins Auge.

                Selbst HM Aktoren machen bei so etwas zwischendurch Kontrollfahrten.

                D.h. sie fahren zwischendurch eine Endposition an.

                Grüße

                Rantanplan

                CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                1 Antwort Letzte Antwort
                0
                • W Offline
                  W Offline
                  wecker6789
                  schrieb am zuletzt editiert von
                  #9

                  Mist stimmt die fahren ja nicht gleichmäßig herunter.

                  Den Gedanken hatte ich mal.

                  Müsste ich ggf. durch eine Formel lösen die natürlich pro Fenster unterschiedlich wäre.

                  ich habe quasi 3 Klassen von Fenstern mit unterschiedlichen Größen.

                  Heißt sechs Formeln aufstellen.

                  Damit beschäftige ich mich mal morgen.

                  Danke euch.

                  Und eine Gute Nacht.

                  1 Antwort Letzte Antwort
                  0
                  • rantanplanR Offline
                    rantanplanR Offline
                    rantanplan
                    schrieb am zuletzt editiert von
                    #10

                    @wecker6789:

                    Nun probiere ich mich nur noch an Sommer und Winterzeit.

                    Wie macht ihr das ? `
                    Anderes Thema. Bitte neuen Thread erstellen.

                    Grüße

                    Rantanplan

                    CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                    1 Antwort Letzte Antwort
                    0
                    • rantanplanR Offline
                      rantanplanR Offline
                      rantanplan
                      schrieb am zuletzt editiert von
                      #11

                      @wecker6789:

                      Heißt sechs Formeln aufstellen.

                      Damit beschäftige ich mich mal morgen. `
                      Na, auf diese Formel bin ich mal gespannt.

                      Durchmesser der Walzenrolle, Wandstärke des Rollos, Durchmesser Rollorolle, Länge des Rollos, Bewegung rauf oder runter usw. usw.usw.

                      Falls gelöst und Dein Rechner während der Echtzeitberechnung noch Zeit für etwas hat, bitte hier posten ;)

                      Grüße

                      Rantanplan

                      CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                      1 Antwort Letzte Antwort
                      0
                      • AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        schrieb am zuletzt editiert von
                        #12

                        Der Geschwindigkeitsunterschied in Abhängigkeit vom Motor-Winkel sollte sich näherungsweise über Volumenkonstanz berechnen lassen.

                        "Rohr"volumen des Rollos im Kasten + "Platten"volumen des Rollos vorm Fenster = konstant.
                        

                        So schrecklich aufwändig ist das nicht in der Berechnung, erfordert aber etwas Hirnschmalz.

                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                        1 Antwort Letzte Antwort
                        0
                        • rantanplanR Offline
                          rantanplanR Offline
                          rantanplan
                          schrieb am zuletzt editiert von
                          #13

                          @AlCalzone:

                          Der Geschwindigkeitsunterschied in Abhängigkeit vom Motor-Winkel sollte sich näherungsweise über Volumenkonstanz berechnen lassen.

                          "Rohr"volumen des Rollos im Kasten + "Platten"volumen des Rollos vorm Fenster = konstant.
                          

                          So schrecklich aufwändig ist das nicht in der Berechnung, erfordert aber etwas Hirnschmalz. `

                          Ein paar Parameter fehlen mir da aber noch.

                          Allein die "Anfangsparameter" zu ermitteln ist fast unmöglich.

                          Ich habe z.B. auf einer Etage 17 Rollos. Und fast alle sind unterschiedlich (Altbau).

                          Wenn die Rollos unten sind, sind einige mehr oder weniger von der Motorwalze abgerollt.

                          Einige sind komplett abgerollt und 10 bis 20 cm Metallzugbänder liegen zwischen Motorwalze und Rollo.

                          Allein da hast Du schon 2 unterschiedliche "Platten"volumen. So ein Metallband ist nur ca. 1 mm stark.

                          Ich bin kein Mathematiker. Aber immer interessiert. ;)

                          Passt ja alles noch zum Thema dieses Threads :D

                          Vielleicht findest Du (oder jemand anders) die richtige Formel.

                          E=mc zum Quadrat ist ja auch nicht so kompliziert. :D

                          Grüße

                          Rantanplan

                          CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                          1 Antwort Letzte Antwort
                          0
                          • AlCalzoneA Offline
                            AlCalzoneA Offline
                            AlCalzone
                            Developer
                            schrieb am zuletzt editiert von
                            #14

                            @rantanplan:

                            Ich habe z.B. auf einer Etage 17 Rollos. Und fast alle sind unterschiedlich (Altbau). `
                            Ich habe nicht behauptet dass die Parameteridentifikation einfach wäre :lol:

                            Ein Ansatz wäre folgender, ob er funktioniert muss sich noch zeigen:

                            • Formel aufstellen und nach %Position(Zeit, Max-Zeit) umstellen. Mit Max-Zeit könnte die unterschiedliche Geschwindigkeit hoch/runter berücksichtigt werden.

                            • So viele wie mögliche Unbekannte zu einer "Rollladenkonstante" zusammenfassen

                            Für jeden Rollladen wäre dann folgendes zu tun:

                            • Ein paar Messwerte aufstellen durch Anfahren bestimmter Positionen aus dem Nullpunkt

                            • Durch Curve-Fitting die Rollladenkonstante bestimmen.

                            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                            1 Antwort Letzte Antwort
                            0
                            • snotechS Offline
                              snotechS Offline
                              snotech
                              schrieb am zuletzt editiert von
                              #15

                              Hallo,

                              bin gerade beim gleichen Thema, Hat es bei einem denn nun geklappt?

                              Kann jemand von euch denn den fertigen Code hier posten?

                              Ob die Rollladen nun bei 50% reell bei 55% steht ist mir nicht wirklich wichtig und macht sicher auch nur bei sehr langen Rollladen was aus.

                              Durchmesser = Umfang/ Pi

                              Gruß

                              SNO

                              1 Antwort Letzte Antwort
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von paul53
                                #16

                                @wecker6789:

                                Bin immer nur bei C++ geblieben. `

                                Dann sollte Dir Javascript nicht schwer fallen.

                                @wecker6789:

                                Gibt es denn überhaupt die Möglichkeit in einem Scipt mitlesen zu lassen wie lange ein gewählter Ausgang angesteuert wird?

                                Ja, einfach ist die Abfrage der Einschaltdauer im Zeitpunkt des Ausschaltens.

                                const idHoch = '...';  // Aktor "hoch fahren"
                                const idPos = '...';  // Postion
                                const faktor = ...;  // Faktor Umrechnung dt(ms) --> dPos(%)
                                
                                var pos = getState(idPos).val; // Position bei Skriptstart
                                
                                on(idHoch, function(dp) {
                                   if(!dp.state.val) {  // Aktor schaltet aus
                                      var thoch = dp.state.lc - dp.oldState.lc;  // Einschaltdauer im ms
                                      pos = pos + faktor * thoch;  // neue Postion
                                      setState(idPos, pos, true);
                                   }
                                });
                                

                                Runterfahren funktioniert analog.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                1 Antwort Letzte Antwort
                                0
                                • snotechS Offline
                                  snotechS Offline
                                  snotech
                                  schrieb am zuletzt editiert von
                                  #17

                                  Ja wie bekomme ich dies nun in Blocky? :?:

                                  Bei Import zeigt er mir einen Fehler, weil es ja kein Java ist.

                                  Gruß SNO

                                  1 Antwort Letzte Antwort
                                  0
                                  • B Offline
                                    B Offline
                                    bishop
                                    schrieb am zuletzt editiert von
                                    #18

                                    das würde mich auch interessieren wie man das hin bekommt.

                                    1 Antwort Letzte Antwort
                                    0
                                    • snotechS Offline
                                      snotechS Offline
                                      snotech
                                      schrieb am zuletzt editiert von
                                      #19

                                      Hallo

                                      ich habe etwas gebraucht um nun alles zu programieren.

                                      Man braucht unter Objekten 4 Variablen. Im meinen fall sind dies:

                                      Rollo_Bad (Art:Zahl 0-100)

                                      Rollo_Bad_Richtung (Art: Zeichenkette auf/zu)

                                      Rollo_Bad_Schalter (Art: Logikwert)

                                      Rollo_Bad_Soll (Art:Zahl 0-100)

                                      https://www.bilder-upload.eu/bild-b720ea-1541794454.png.html ~~Die "Schalter" sind:

                                      Rollade Bad zu

                                      Rollade Bad auf

                                      zum Importieren im Skript:
                                      ` > <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">

                                      <block type="on" id="-hk[!J4+#8`b#1q/4]@1" x="-37" y="-337"><field name="OID">admin.0.Rollo_Bad_Soll</field>

                                      <field name="CONDITION">ne</field>

                                      <statement name="STATEMENT"><block type="timeouts_clearinterval" id="f]HBYG*K(=-v.dS-g?VD"><field name="NAME">unsereSchleife</field>

                                      <next><block type="comment" id="awGc9FNE!0|4f8r7)jJk"><field name="COMMENT">Falls Schalter ein = ein dann schalte Motor aus und Schalter aus</field>

                                      <next><block type="controls_if" id="MCuL(lHsfnfQDj}DV2hl"><value name="IF0"><block type="get_value" id="-Gl~mJe;TN+k%(Iw^x(2"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad_Schalter</field></block></value>

                                      <statement name="DO0"><block type="update" id="Zm5UmM@kZow{jwL]./^:"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Neues_Objekt</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="logic_boolean" id="V2D}sN!5!T{+UoJzc%PS"><field name="BOOL">TRUE</field></block></value>

                                      <next><block type="controls_if" id="tYCDMgP;ffC`1d6h(;u)"><mutation else="1"></mutation>

                                      <value name="IF0"><block type="logic_compare" id="zTc+?_%f1zN{5?7Txyy;"><field name="OP">EQ</field>

                                      <value name="A"><block type="get_value" id="f/%q~^7}G8Jet6M,oT+~"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad_Richtung</field></block></value>

                                      <value name="B"><block type="text" id="1|b`xNcJE)8E5oc[f5O]"><field name="TEXT">zu</field></block></value></block></value>

                                      <statement name="DO0"><block type="toggle" id="{A:CeIf?#uKBIf{9NhxX"><mutation delay_input="false"></mutation>

                                      <field name="OID">broadlink.0.learnedSignals.Rollade Bad zu</field>

                                      <field name="WITH_DELAY">FALSE</field></block></statement>

                                      <statement name="ELSE"><block type="toggle" id="|9,:zHv*YDCAt~Bsu9mI"><mutation delay_input="false"></mutation>

                                      <field name="OID">broadlink.0.learnedSignals.Rollade Bad auf</field>

                                      <field name="WITH_DELAY">FALSE</field></block></statement>

                                      <next><block type="control" id="]Rd=9XO%jtM8E6.x*yGD"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Rollo_Bad_Schalter</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="logic_boolean" id="[[M#TNHtXz}W6CB}d+N-"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></statement>

                                      <next><block type="variables_set" id="B7o=+#^;E:inQxfXLXx="><field name="VAR">counter</field>

                                      <value name="VALUE"><block type="get_value" id="Yd,v6dy3n+o#NB`g:8~Q"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad</field></block></value>

                                      <next><block type="comment" id="ut(S}7vCe;0gXa;1A86;"><field name="COMMENT">Prüfe Richtung / Schalte Motor / Schalte Schalter / Speicher Richtung</field>

                                      <next><block type="controls_if" id="}Tc[x6-r-We.*]#7;jPP"><mutation elseif="1"></mutation>

                                      <value name="IF0"><block type="logic_compare" id="h(U(pOI6[8Bcr{J_Mldf"><field name="OP">LT</field>

                                      <value name="A"><block type="get_value" id="V6d+wMK88Xr?le}6U#o!"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad_Soll</field></block></value>

                                      <value name="B"><block type="get_value" id="kHzj#w6l2ceAJ1|wBUlv"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad</field></block></value></block></value>

                                      <statement name="DO0"><block type="variables_set" id="!wFi^Iw0}bFVGTf}r?/z"><field name="VAR">richtung</field>

                                      <value name="VALUE"><block type="math_number" id="S:#VTX+#[dIZU:0WG=b{"><field name="NUM">-1</field></block></value>

                                      <next><block type="toggle" id="J(-*+5mgUSiz%!E@ljs7"><mutation delay_input="true"></mutation>

                                      <field name="OID">broadlink.0.learnedSignals.Rollade Bad zu</field>

                                      <field name="WITH_DELAY">TRUE</field>

                                      <field name="DELAY_MS">700</field>

                                      <field name="UNIT">ms</field>

                                      <field name="CLEAR_RUNNING">FALSE</field>

                                      <next><block type="control" id="Z%#8`8Vzxg6{tDeNP[x_"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Rollo_Bad_Schalter</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="logic_boolean" id="MmWqv/n8#k73vUL`BpYr"><field name="BOOL">TRUE</field></block></value>

                                      <next><block type="update" id=";%p[[s2Gwwk+aVAgRwO#"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Rollo_Bad_Richtung</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="text" id="Xd-dwd4As,E1C.:p.!Js"><field name="TEXT">zu</field></block></value></block></next></block></next></block></next></block></statement>

                                      <value name="IF1"><block type="logic_compare" id="JBN*igDsyu|e0Am!R8Yn"><field name="OP">GT</field>

                                      <value name="A"><block type="get_value" id="bNZ8{hmyy!w(iS)DjqQ_"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad_Soll</field></block></value>

                                      <value name="B"><block type="get_value" id="2Ye37!J|Sunn8{+g/Kjc"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad</field></block></value></block></value>

                                      <statement name="DO1"><block type="variables_set" id="o0nK17BbK[o8j|Jsmc_1"><field name="VAR">richtung</field>

                                      <value name="VALUE"><block type="math_number" id="Ns-Qe5gi1*(/nHScjWkZ"><field name="NUM">1</field></block></value>

                                      <next><block type="toggle" id="lpj{5gS?^hg~4M,fdfk|"><mutation delay_input="true"></mutation>

                                      <field name="OID">broadlink.0.learnedSignals.Rollade Bad auf</field>

                                      <field name="WITH_DELAY">TRUE</field>

                                      <field name="DELAY_MS">700</field>

                                      <field name="UNIT">ms</field>

                                      <field name="CLEAR_RUNNING">FALSE</field>

                                      <next><block type="control" id="TfpbWV?LIl[Df%~^/~rQ"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Rollo_Bad_Schalter</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="logic_boolean" id="[D^-5I=-zE0Qc;wW|xo/"><field name="BOOL">TRUE</field></block></value>

                                      <next><block type="update" id="}b|}p_*@pc(#Xu=0;tW8"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Rollo_Bad_Richtung</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="text" id="b;KFd90|IQEuaN(?R;"><field name="TEXT">auf</field></block></value></block></next></block></next></block></next></block></statement>

                                      <next><block type="comment" id="b_;Ju]{ELW;i]{59,fG]"><field name="COMMENT">Zustand aktualisieren und Ende wenn Soll erreicht oder max (min fehlt noch)</field>

                                      <next><block type="timeouts_setinterval" id="w]h?In(s!~d]I7QmfTd;"><field name="NAME">unsereSchleife</field>

                                      <field name="INTERVAL">700</field>

                                      <field name="UNIT">ms</field>

                                      <statement name="STATEMENT"><block type="math_change" id="Fqr?I-7F()/dgF}wm:k9"><field name="VAR">counter</field>

                                      <value name="DELTA"><shadow type="math_number" id=":c]qbMuR*(79!fD=t8l*"><field name="NUM">1</field></shadow>

                                      <block type="variables_get" id="GNi4=q!R,!_Y*NJe7mcj"><field name="VAR">richtung</field></block></value>

                                      <next><block type="control_ex" id="+BX6DN?T!Mk~`;W-Gzdf"><field name="TYPE">true</field>

                                      <field name="CLEAR_RUNNING">FALSE</field>

                                      <value name="OID"><shadow type="field_oid" id="{r/:GqC=J.*~jm;B.EmA"><field name="oid">admin.0.Rollo_Bad</field></shadow></value>

                                      <value name="VALUE"><shadow type="logic_boolean" id="uPjr7F%~]C)m-@x#fCY8"><field name="BOOL">TRUE</field></shadow>

                                      <block type="variables_get" id="4b2yl12okSme#F1|M5`r"><field name="VAR">counter</field></block></value>

                                      <value name="DELAY_MS"><shadow type="math_number" id="K@BUQtiO,0ixd^%~xX|y"><field name="NUM">0</field></shadow></value>

                                      <next><block type="controls_if" id="|PmR)v+f1fTNuF-jwq/t"><value name="IF0"><block type="logic_compare" id=".=a8}2|b=IagAT(IcHvn"><field name="OP">EQ</field>

                                      <value name="A"><block type="variables_get" id="oJ]wUkRi305|L4Eb=R.7"><field name="VAR">counter</field></block></value>

                                      <value name="B"><block type="get_value" id="NJ0i:.g}8z8nK_iz~~"><field name="ATTR">val</field>

                                      <field name="OID">admin.0.Rollo_Bad_Soll</field></block></value></block></value>

                                      <statement name="DO0"><block type="controls_if" id="?)00a5]PBzo!.-e@uP8_"><mutation elseif="1"></mutation>

                                      <value name="IF0"><block type="logic_compare" id="bK#T3t10hj|iY/ynh{#*"><field name="OP">EQ</field>

                                      <value name="A"><block type="variables_get" id="}~P#d6He`.2OnQJpIQel"><field name="VAR">richtung</field></block></value>

                                      <value name="B"><block type="math_number" id="j:d_/wiP}M^B^rF)@+~p"><field name="NUM">-1</field></block></value></block></value>

                                      <statement name="DO0"><block type="toggle" id="]eWfOnW!.Vyqlz.RC?ku"><mutation delay_input="false"></mutation>

                                      <field name="OID">broadlink.0.learnedSignals.Rollade Bad zu</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <next><block type="control" id="(~oMiIm[VMzq!iJLS.zz"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Rollo_Bad_Schalter</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="logic_boolean" id="/wOr*aMbI~Y#+|`9Nk@k"><field name="BOOL">FALSE</field></block></value></block></next></block></statement>

                                      <value name="IF1"><block type="logic_compare" id="u!^KI*te/sQ)-FCt`WEQ"><field name="OP">EQ</field>

                                      <value name="A"><block type="variables_get" id=".rNO3Y}X4S;?1.5^MTCs"><field name="VAR">richtung</field></block></value>

                                      <value name="B"><block type="math_number" id="MU`jx6Ns=o};Qvl!1o_7"><field name="NUM">1</field></block></value></block></value>

                                      <statement name="DO1"><block type="toggle" id="Mq3c}.%ajCvNiDF-Ao83"><mutation delay_input="false"></mutation>

                                      <field name="OID">broadlink.0.learnedSignals.Rollade Bad auf</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <next><block type="control" id="%c|Ve@)S+w!iCqNEE.1N"><mutation delay_input="false"></mutation>

                                      <field name="OID">admin.0.Rollo_Bad_Schalter</field>

                                      <field name="WITH_DELAY">FALSE</field>

                                      <value name="VALUE"><block type="logic_boolean" id="*jWSJ|l=0XP8-GUNjVCd"><field name="BOOL">FALSE</field></block></value></block></next></block></statement>

                                      <next><block type="timeouts_clearinterval" id="DCt0zTxKV#udTsqNd90x"><field name="NAME">unsereSchleife</field></block></next></block></statement>

                                      <next><block type="controls_if" id="WJDqh;fUDlnlZBuXoLp{"><value name="IF0"><block type="logic_compare" id="XeA0m#q.5UI%J1]jW6"><field name="OP">EQ</field>

                                      <value name="A"><block type="variables_get" id="=h[@TF=f#}NWpW{ugFa["><field name="VAR">counter</field></block></value>

                                      <value name="B"><block type="math_number" id="@|9RCDK(KI,3EB+w!y,+"><field name="NUM">101</field></block></value></block></value>

                                      <statement name="DO0"><block type="timeouts_clearinterval" id="*Y6H)Sz]Vl717wjw7LP#"><field name="NAME">unsereSchleife</field></block></statement></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement>

                                      <next><block type="comment" id="q?Sa)Lu@zN|9etj.9YG}"><field name="COMMENT">rolllade variabel</field></block></next></block></xml> `

                                      Ich hoffe ihr könnt was damit anfangen.

                                      Rollo_Bad_Soll (Art:Zahl 0-100) kann nun in Vis eingefügt werden und schon funktioniert es. :D~~ 5992_rolllade.png

                                      A 1 Antwort Letzte Antwort
                                      0
                                      • S Offline
                                        S Offline
                                        Skrella
                                        schrieb am zuletzt editiert von
                                        #20

                                        Hallo,

                                        Ich hänge gerade etwas mit meiner Rolladensteuerung in der Luft und wäre über frischen Input / Erfahrungsaustausch sehr dankbar.

                                        Hier kurz etwas zum aktuellen Stand der Dinge:

                                        Ich habe Jarolift Rolladen im ganzen Haus verbaut und steuere diese über ein an der Jarolift-Fernbedienung angeschlossenes Sonoff 4Ch Modul.

                                        Die Darstellung der Rolldadenposition habe ich über ein an der Rollade befestigten Fensterkontakt und seitlich an der Führungsschiene angebrachte Magnete realisiert. Fährt das Rollo runter, startet ein Skript und zählt die abgefahrenen Magnete. Anschließend wird die Position in VIS über das hqwidget Window and Shutter dargestellt. Das funktioniert soweit auch ganz gut…

                                        Jetzt zu meinem Prolem:

                                        Momentan dient das HQ-Widget "nur" als Output/Anzeige der aktuellen Position. Über das Widget kann man nun ja auch einen Wert dem Rollo übergeben. Das wollte ich nun noch mit in VIS implementieren und stoße an meine Grenzen. Da ich nun ein und dieselbe Variable (Rolloposition) sowohl als Output für die visuelle Anzeige in VIS als auch als Input für das ansteuern des Rollos habe. Das klappt natürlich nicht... zumindest weiss ich nicht wie :oops:

                                        Ist es möglich z.B. zwei hqwidget's in VIS übereinander zulegen, das untere (z-Ebene 0) nur als optische Anzeige zu verwenden (wie es momentan schon läuft) und das zweite (z-Ebene 1) transparent darüber zu legen? Über das transparente würde dann der Input für die Rolloposition erfolgen. Bedeutet natürlich auch, dass das zweite Widget nur in der Fenter-Anzeige transparent sein darf. Nachdem man darauf klickt und sich das Rollo offnet in dem man die Position übergibt, müsste es natürlich sichtbar werden. Das hätte den Charme, dass ich einem Rollo 2 Variablen zuordnen könnte.

                                        Vielleicht gibt es ja noch eine elegantere Methode mein Vorhaben umzusetzen... Bin für jede Hilfe sehr Dankbar

                                        1 Antwort Letzte Antwort
                                        0
                                        • snotechS Offline
                                          snotechS Offline
                                          snotech
                                          schrieb am zuletzt editiert von
                                          #21

                                          Inerreasnnter Ansatz mit den Fensterkontakt aber is dies nicht zu kostenintensiev?

                                          Wie viele Kontakte hast du den an einer Rollade verbaut?

                                          Mit den Variabelen wäre es doch einfacher die zu trennen.

                                          Gruß

                                          SNO

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          398

                                          Online

                                          32.6k

                                          Benutzer

                                          82.0k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe