Navigation

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

    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

    Rolladensteuerung errechnen des Standes

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

      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 Reply Last reply Reply Quote 0
      • W
        wecker6789 last edited by

        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 Reply Last reply Reply Quote 0
        • AlCalzone
          AlCalzone Developer last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • W
            wecker6789 last edited by

            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 Reply Last reply Reply Quote 0
            • rantanplan
              rantanplan last edited by

              @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

              1 Reply Last reply Reply Quote 0
              • W
                wecker6789 last edited by

                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 Reply Last reply Reply Quote 0
                • rantanplan
                  rantanplan last edited by

                  @wecker6789:

                  Nun probiere ich mich nur noch an Sommer und Winterzeit.

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

                  Grüße

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

                    @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

                    1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer last edited by

                      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.

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

                        @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 😄

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

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

                        Grüße

                        1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer last edited by

                          @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.

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

                            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 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 last edited by paul53

                              @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.

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

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

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

                                Gruß SNO

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

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

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

                                    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 Reply Last reply Reply Quote 0
                                    • S
                                      Skrella last edited by

                                      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 Reply Last reply Reply Quote 0
                                      • snotech
                                        snotech last edited by

                                        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 Reply Last reply Reply Quote 0
                                        • J
                                          Jan1 last edited by

                                          Also das ganze über die Zeit zu bestimmen ist recht simpel und wenn mans schon mit nem Sonoff macht, gibt's von StefanBode eine Fork der Tasmota, da braucht man nicht mal ein Script dazu, weil das schon die Tasmota intern macht. Einziges Problem, der Sonoff Adapter verwendet das MQT Topic der aktuellen Position des Rollladen von Tasmota nicht und legt folglich auch keinen DP für den aktuellen Stand an. Dazu habe ich aber auch schon ein Issues auf Github geschrieben, allerdings hat sich dazu leider noch keiner geäußert.

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

                                            @Skrella:

                                            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… `

                                            Du Fuchs!! Das finde ich super genial,

                                            du hast den Kontakt aussen am Rolladen angebracht? Welche hast du genutzt und wie siehts mit der Batterie Laufzeit aus, mit Hinblick auf Minustemperaturen im Winter

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            723
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            13
                                            38
                                            6509
                                            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