- Home
- Deutsch
- Skripten / Logik
- Shelly Plus 2PM Rolladen Skript (Yahka)
Shelly Plus 2PM Rolladen Skript (Yahka)
-
Hallo zusammen,
basierend auf diesem Thread möchte ich meine überarbeitete Lösung mit euch teilen. Mit dem Skript lassen sich die Shelly Plus 2PM, zusammen mit dem Yahka-Adapter, optimal als Rollladensteuerung in iOS einbinden und werden korrekt dargestellt.
Hier das Blockly-Skript:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> </variables> <block type="create" id="QjY0ukh0=t6v|T6y.k*t" x="112" y="-638"> <field name="NAME">WUNSCHNAME_TargetPosition</field> <next> <block type="create" id="t;x8wz[mNFBB~hp;lT|F"> <field name="NAME">WUNSCHNAME_Position</field> <next> <block type="create" id="lm^!),m:Ow5?(lGDkf4u"> <field name="NAME">WUNSCHNAME_Status</field> </block> </next> </block> </next> </block> <block type="on_ext" id="s{)XG`[uGGic2bR?WxPf" x="112" y="-163"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="K[p:_r`=T{.7#9F3WKvw"> <field name="oid">shellyplus2pm.Cover0.Status</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="n0,88JV1J6V`:P%%9lV-"> <mutation elseif="4"></mutation> <value name="IF0"> <block type="logic_compare" id="DihvAeD*E_2vO73m=N!m"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="s;vs]Rp=#eyr)EI^Qf~:"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="#M@RY67mwv0tI~`J2u/1"> <field name="TEXT">closing</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="iBQU0$Z-F4.eYf`@(R$."> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="yNOQb@t$Zg{e!5K670r7"> <field name="TEXT">closing</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="s+`u?F$Ie)S*J:`q$OR`"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="aNb+;CT6@V0(m3XgS|?B"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="!{GeT.q}iBIa)c}5PNwH"> <field name="TEXT">opening</field> </block> </value> </block> </value> <statement name="DO1"> <block type="update" id="f;F`A.s$VX950m25KyCL"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="2OrmdDVaxS@BUgXCgatP"> <field name="TEXT">opening</field> </block> </value> </block> </statement> <value name="IF2"> <block type="logic_compare" id="qq_vX?@[`?tBcaw0[MZx"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="yG{K87j$(Pyx5+JA`6Bp"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="g!e`q2NxSu6B-wQKQbMW"> <field name="TEXT">open</field> </block> </value> </block> </value> <statement name="DO2"> <block type="update" id="wsx0j,)LRv(k0@WMw)^8"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="KIHD+-KhQo`7.D:5c?NF"> <field name="TEXT">stopped</field> </block> </value> <next> <block type="update" id="U#oo5zJ(SxBWNHxkTE]J"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="(j7#!ZvKTlD]GSbp:UzF"> <field name="NUM">100</field> </block> </value> </block> </next> </block> </statement> <value name="IF3"> <block type="logic_compare" id="?lQzXli5+d;;k9;m|8iz"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="s.)4QOGC`+kA*ci2J)6m"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="ixN4S{]-,7T#_:LPb[Qf"> <field name="TEXT">closed</field> </block> </value> </block> </value> <statement name="DO3"> <block type="update" id="A-|9%)aV8*`,p#,cSsj*"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="Y6TbdcR!jqZw=Gmy`o`0"> <field name="TEXT">stopped</field> </block> </value> <next> <block type="update" id="s.z.oz#qw?6)=a}8CJ)G"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=":%NQv=/Gy+Gh+RgX|!`^"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> <value name="IF4"> <block type="logic_compare" id="G1j1HNmvyaLE_WVM@YlX"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="{i3`lO%;TmqU86gz.*r%"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="R!57y#]ci`V[7$D=d|{8"> <field name="TEXT">stopped</field> </block> </value> </block> </value> <statement name="DO4"> <block type="update" id="stt@TpRlAwXS#`N1LJ*F"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="S]+d5#Z#4=_.EhwEx9u0"> <field name="TEXT">stopped</field> </block> </value> <next> <block type="update" id="AGXz:l]_;;atG$nJ0V4C"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="skz-C9?-x}ZW2%3fR`@n"> <field name="ATTR">val</field> <field name="OID">shellyplus2pm.Cover0.Position</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> <block type="on_ext" id="c3K,~!}yI}|]veUh:pc7" x="113" y="513"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="mrB7dB.brwhIR#6Lk96H"> <field name="oid">javascript.0.WUNSCHNAME_TargetPosition</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="rw`J`%mEy%{Ioy18{^8D"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shellyplus2pm.Cover0.Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="x?]g~TPhJrU_[fE=H3kB"> <field name="ATTR">val</field> <field name="OID">javascript.0.WUNSCHNAME_TargetPosition</field> </block> </value> </block> </statement> </block> <block type="comment" id=".@6P|j@b^l*(*(ByLszz" x="113" y="687"> <field name="COMMENT">Schalter runter</field> <next> <block type="on_ext" id="CA@,@pxV}%gZ$C0:H]#("> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="wM#9{j]3d4yu6P3xH{PA"> <field name="oid">shellyplus2pm.Input0.Status</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="DPcxRE|okhF-s|Iu%1]s"> <field name="NAME">timeout</field> <next> <block type="timeouts_cleartimeout" id="sT0AApjz?DVGnu`o){J("> <field name="NAME">timeout2</field> <next> <block type="controls_if" id="cf]UUYtd/sYu`J%qa4y8"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="k]z~F/fjMO9$^N3=p-IO"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="l%yLdPi0_:Jju`KL`}D}"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="!d^Ws/vTZ3$ka;:f]J?E"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="/WrN-_6H]}zG+~)s6fcb"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_TargetPosition</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="~bT{+A]3mZKZ%IbNUPT-"> <field name="NUM">0</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="6Q3lXI4jBlc4QzV+}Ooq"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="$2OK2~_mzCMU0+ZMOs8v"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="}@uez},yABCyRj!9XBWl"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="update" id="{QFpgdqm-FBR;}5(PwDT"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="UR?n[ZBl)M0$$%Ne)PeN"> <field name="TEXT">stopped</field> </block> </value> <next> <block type="timeouts_settimeout" id="KJZGivw5UHWH4*mu].ow"> <field name="NAME">timeout</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="CWB*V)/U-UO|Es;cLReF"> <value name="IF0"> <block type="logic_compare" id="D-_N,n|QP~5|c8J2p8{~"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="Zu1e^T}K!HV~]]tVVZ^G"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="!buJ]sLhkeZP-?G5~!QW"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="x!ZQ./Eop)~WKCbxA~Ow"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="V5{`d{z;6iYX0U-kW~L5"> <field name="ATTR">val</field> <field name="OID">shellyplus2pm.Cover0.Position</field> </block> </value> <next> <block type="update" id="+M_Va?.A%`y5jp~Gwo{8"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_TargetPosition</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="R:;|g?,_?}JQ%(nJeH0A"> <field name="ATTR">val</field> <field name="OID">shellyplus2pm.Cover0.Position</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> <block type="comment" id="@Y*V,;=q9)]mj7~MlLM^" x="112" y="1262"> <field name="COMMENT">Schalter hoch</field> <next> <block type="on_ext" id="Lh1LM/,18RU^t#fLpPx?"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="3WHn2bTT,Z8T5@=#6yoA"> <field name="oid">shellyplus2pm.Input1.Status</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="JTkm7UaCVyXtU/p?ny6?"> <field name="NAME">timeout</field> <next> <block type="timeouts_cleartimeout" id="O~h0^J4-TqUE:O4_VXM`"> <field name="NAME">timeout2</field> <next> <block type="controls_if" id="Q$^VlH+=+s9h2^)!$!g]"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="N[UbyOc_a:z1b!Up7HhI"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="(zv);OHG|U|JpfdA;Tuz"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Ir3@-iI]u]3:H?O(CI{_"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="h)c6]-523VJoQ::=~N8o"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_TargetPosition</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="`4B]d:JgEB$`|zM2w1=4"> <field name="NUM">100</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="}cpg_VlO|T2O;erv.vQ="> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="!L[IF55kgm8Fu`TN?M3G"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Xcu!6D#f3jP.ty6Qfzd5"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="update" id="f=uV8bk9(_OTqUY!L,^!"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Status</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="BB{c{RV%O)gH[@Ww~qqJ"> <field name="TEXT">stopped</field> </block> </value> <next> <block type="timeouts_settimeout" id="GtOJ^UkQsS1{qE_BeFW,"> <field name="NAME">timeout2</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="N7O)FyH)81-.qExj*(DY"> <value name="IF0"> <block type="logic_compare" id=".P,:Xfh4g${]HuIS5Dh7"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="tM$2_hbq+wilI=@B%6PL"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id="T*.6K9*W?g,]zf6W8`V8"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="$0uw4Z}zQN$h]/Wy.%B)"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_Position</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="#Gp?!,FbSAZ#pa2/?5b!"> <field name="ATTR">val</field> <field name="OID">shellyplus2pm.Cover0.Position</field> </block> </value> <next> <block type="update" id="u!uK?gO`Rd(Jd$!QJ5qE"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.WUNSCHNAME_TargetPosition</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_value" id="i1*UpLt?u4HjW-]}6LB("> <field name="ATTR">val</field> <field name="OID">shellyplus2pm.Cover0.Position</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </xml>
Im Yahka-Adapter müssen folgende Werte genutzt werden:
Wahrscheinlich lässt sich das Skript noch einfacher und effizienter gestalten. Vielleicht hat ja jemand Interesse, es zu verbessern.
-
@ionar Hallo!
Super cool, dass du deine Arbeit hier geteilt hast, vielen Dank dafür! Ich habe die letzten Monate immer wieder versucht die Rollladen über den Shelly 2 PM in yahka zu bekommen und bin kläglich gescheitert.
EDIT
Nach etwas Probiererei habe ich es geschafft, dein Skript soweit einzurichten Allerdings wird dauerhaft angezeigt "wird geöffnet".Kannst du sagen, was ich hier ggf. falsch gemacht habe?"EDIT-2*
Ich habe jetzt den Datenpunkten den initialen Wert "open" gegeben - danach lief alles Ganz vielen Dank nochmal für das Bereitstellen dieser tollen Lösung!Vielen Dank vorab!
Nick