NEWS
Rolladensteuerung errechnen des Standes
-
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
-
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
-
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.
-
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
-
Na dann beachte mal den Aufwand wenn so ca. 15 Rollläden auswerten willst :lol:
Warum nicht der FW das überlassen und einfach den DP danach fragen?
-
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 `
ein Fensterkontakt (Xiaomi) und an der Seite 4 Magnete geklebt die beim vobeifahren des Rollos den Fensterkontakt auslösen.
Zum trennen der Variablen, wüsste ich im Moment nicht wie. Über das Rolladen-Widget habe ich momentan die Ausgabe und möchte in Zukunft darüber auch das Rollo steuern… sprich ich hätte eine zweite Variable. Wie soll das gehen?
Gruß
-
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 `
Den Kontakt habe ich von der Innenseite angebracht, was die Batterielaufzeit angeht, kann ich dir noch nichts sagen. Habe das ganze System erst vor zwei Monaten Stück für Stück aufgebaut und die Batterien der Fensterkontakte sind noch recht frisch. Frag mich im Frühjahr noch mal
-
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. `
über die Zeit fahre ich schon die Position an. Wollte mit den Fenterkontakten eine Bestätigung haben, dass auch wirklich die Rollos unten sind. Kommt schon mal vor, dass ein Rollo nicht auslöst und einfach oben bleibt (z.B. wenn eine Gruppe Down gesetzte wurde). Wenn der Fensterkonakt durch die seitlich angebrachten Magnete auslöst, kann ich mir sicher sein, dass das Rollo wirklich die Position geändert hat.
Gruß,
-
Wie der bleibt oben? Sind das Funk Dinger, die Rollläden?
-
Die Rolläden werden über Funk gesteuert. Wenn man eine Gruppe schaltet, kann es schon mal vorkommen, dass ein Rollo nicht darauf reagiert
-
Schmeiß die Dinger raus und mach billige elektrische rein. Hatte auch welche mit Funk und das ist einfach schlecht. Wenns vernünftig laufen soll, dann sind 433er Lösung nichts.
-
Würde gern auf mein eigentliches Problem zurück kommen wollen… Weiß jemand, ob bzw wie ich das Rolladen Widget sowohl als Ausgabe für die aktuelle Position sowie als Eingabe für eine neue Position verwenden kann?
Gruß
-
Sehe ich das falsch oder ist die Geschwindigkeitsänderung durch das abrollen nicht linear? Also die Zeit für 50% und 100% möglichst genau messen und den Rest interpolieren.
Und wenn es 22% statt 20% ist sollte das auch kein Problem sein.
-
Das ist richtig, so genau brauch ich es aber nicht. Ich nutze hauptsächlich 4 Zustände, auf, Sichtschutz (halb unten), Sonnenschutz (90% geschlossen) und ganz zu. Das wir mir über die Kontakte dann auch angezeigt.
-
@snotech mir gefällt deine Programmierung und würde das gerne mal ausprobieren und damit rumspielen. ich kann nur leider das Script nicht importieren. Ich bekomme immer den Fehler Error: textToDom was unable to parse. Ich muss doch nur deinen Code in ein neues Blockly importieren oder?
-
@ambo sagte in Rolladensteuerung errechnen des Standes:
Error: textToDom was unable to parse
Script wurde durch die Forumsumstellung leider komplett vermurkst. Kann es auch nicht mehr reparieren.
Vielleicht stellt es @snotech nochmal rein. -
@Negalein vielen Dank
aber @snotech war wohl seit 1 Jahr nicht mehr online schade.
Hat sonst wer zufällig dieses Skript?Ich suche nach einer Lösung, dass ich einen Prozentwert eingebe und die Jalousie fährt dann ungefähr dort hin. - Nice to have wäre eine Neigung der Lamellen am Schluss der Fahrt.
Meine Steuerung kann leider nur hoch und runter - aber immerhin wirft sie einen errechneten Positionswert zum auslesen aus. -
@ambo sagte in Rolladensteuerung errechnen des Standes:
Hat sonst wer zufällig dieses Skript?
der Fehler liegt in der ersten Zeile, jetzt lässt es sich wieder importieren. Ich kann allerdings keine Gewähr für die Richtigkeit übernehmen, noch irgendwelchen Support, habe das nur wieder importierbar gemacht