NEWS
Rolladensteuerung errechnen des Standes
-
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.
ich habe natürlich eine Globale Variabel angelegt welche von 0-100 Prozent geht.
Mein Programm sieht wie folgt aus.
//
for(Motor 1 Hoch = wahr)
{
Höhe Fenster 1 = Höhe Fenster 1 + 1;
delay(1000ms) // bzw. Timeout(1000ms)
}
for(Motor 1 Runter = wahr)
{
Höhe Fenster 1 = Höhe Fenster 1 - 1;
delay(1000ms) // bzw. Timeout(1000ms)
}
//
Aber leider möchte das Programm nicht zählen.
Das Fenster dauert natürlich keine 100s um hoch und herunter zu fahren, aber um das umrechnen kümmere ich mich dann später.
Mich wundert es nur das er gar nicht zählen möchte.
Liegt es daran, dass man keine Schleife verwenden darf? Bzw natürlich warum nicht?
Habe IO Broker gerade erst für mich entdeckt bin also leider Blutiger Anfänger.
Ich danke euch schon mal für eure Hilfe.
-
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.
-
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
-
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?
-
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 -
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.
-
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.
-
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.
Aber wenn die Laufzeiten unterschiedlich sind zum Hoch oder Runter fahren könnte man das ja gegen rechnen. `
So einfach ist es leider nichtSelbst 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
-
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.
-
Nun probiere ich mich nur noch an Sommer und Winterzeit.
Wie macht ihr das ? `
Anderes Thema. Bitte neuen Thread erstellen.Grüße
-
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
-
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.
-
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
-
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.
-
-
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
-
Bin immer nur bei C++ geblieben. `
Dann sollte Dir Javascript nicht schwer fallen.
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.
-
Ja wie bekomme ich dies nun in Blocky? :?:
Bei Import zeigt er mir einen Fehler, weil es ja kein Java ist.
Gruß SNO
-
das würde mich auch interessieren wie man das hin bekommt.
-
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}
8z8
nK_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 -
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