NEWS
SYMFONISK sound remote Zigbee
-
@Ploebb Ich dachte auch nicht, die Remote mit dem Tradfri Gateway zu koppeln um das korrekt in iobroker zu bekommen. Dass Signale von Fernbedienungen, Schaltern und Bewegungsmeldern nicht von Tradfri zu iobroker kommen ist mir bekannt. Aber wenn man das Gateway zusätzlich hat, dort nur die Remotes anlernt und es so verwendet, wie es IKEA vorgesehen hat, also direkt mit den Lautsprechern koppelt (wie auch immer, weiss ich gar nicht) sollte die Funktionalität doch gegeben sein?
Gruss, Jürgen
-
Ah da hast du natürlich Recht. Hatte überlesen, dass Sonos Geräte gesteuert werden sollen.
-
Ich habe gerade noch ein bisschen gegoogelt und ein Youtube-Video gefunden. Dort hat einer die Remote mit einem Conbee II gepairt, das ganze allerdings nicht mit Deconz und iobroker sondern FHEM. Da scheint es mir ganz brauchbar zu gehen. Allerdings gerade bei lauter / leiser dreht er immer nur wenig und nicht längere zeit am Stück. Aber ich denke, mit toggle auf longbuttonpress (nicht short) und passendem +/- bei Volume sollte sich auch in iobroker eine brauchbare Funktionalität abbilden lassen.
Egal, ich bleibe bei den Fernbedienungen. Billiger und mehr Funktionen (short/long auch bei den Pfeilen rechts / links um Playlists durchzuspringen).Gruss, Jürgen
-
So, ich habe die Anregung von @Ploebb aufgegriffen, die er bei Node-Red implementiert hatte und in eine einfache Lösung für IOBroker übersetzt.
In der Tat ist es so, dass in meinen Augen eine sinnvolle Nutzung des Drehreglers nur dann möglich ist, wenn man sich auf die Gegebenheit einlässt, dass der Drehregler beim Beginn einer Drehung ein Event (Start-Event) abfeuert und erst ein weiteres Event sendet, wenn man das Drehen beendet oder in die entgegengesetzte Richtung dreht (Stop-Event).
So, wie ich es verstehe, teilt der Symfonisk-Controller leider nicht die Drehgeschwindigkeit mit, so dass man je nach Dreh-Intensität die Lautstärke langsamer oder schneller verändern könnte.
Ich habe daher ein Bloggly-Skript geschrieben, das alle Events aufnimmt. Sobald mit dem Drehen begonnen wird, wird in einem Interval alle x Millisekunden eine Änderung der Lautstärke an Sonos (Erhöhen bzw. Erniedrigen) gesendet. Der Wert, mit dem die Lautstärke verändert wird (z.B. +/- 1), habe ich ebenfalls als Konstante hinterlegt. Je kürzer das Intervall gewählt wird, desto schneller erfolgt die Lautstärke-Änderung, aber es entsteht auch mehr Netzwerk-Traffic zwischen IOBroker und den Sonos-Komponenten. Wenn man etwas an den einzelnen Parametern herumprobiert, wird man für die eigene Umgebung den besten Kompromiss finden. Sobald man mit dem Drehen aufhört bzw. in die entgegengesetzte Richtung gedreht wird, wird das ursprüngliche Intervall beendet.
Ich habe die jeweiligen IDs für den zu steuernden Sonos-Lautsprecher (bzw. Lautsprechergruppe) und des Symfonisk-Controllers als Variablen hinterlegt. So muss man zur Nutzung des Scripts in der eigenen Umgebung nur die entsprechenden Objekt-IDs anpassen.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</variable> <variable id="zMoTr[T}j6t^qg,6:Jn?">ID_SONOS_KEY_PAUSE</variable> <variable id="SUpTRr|AO3yO,G$EA)UO">ID_SONOS_KEY_PLAY</variable> <variable id="A*X}3y0gWF0;;S|J$urm">ID_SONOS_STATE_IS_PLAYING</variable> <variable id="q#b-XNl4d-`b?g5;GlvL">ID_SONOS_KEY_PLAY_NEXT_TRACK</variable> <variable id="Fg3stJ4,K(8HQ9CuTOGr">ID_SONOS_KEY_PLAY_PREVIOUS_TRACK</variable> <variable id=":Gf)%4)%u%g@5HtWoN)w">ID_SONOS_VOLUME</variable> <variable id="MmyIM96),^U`9B?uBv2C">STEP_ADJUST_VOLUME</variable> <variable id="u!7ANbe6xbguOkKn?6C2">INTERVAL_ADJUSTING_VOLUME</variable> <variable id="0#j~pk2@z+%*)D|P1l(V">KEY_EVENT_IS_CLICKED</variable> <variable id=";!Aa=DHKW=_5+BI9)`O6">KEY_EVENT_IS_DOUBLE_CLICKED</variable> <variable id="[mE4M6iPpxwZtW%3~0pY">KEY_EVENT_IS_TRIPLE_CLICKED</variable> <variable id="1%Zo8z{3Vlg3Bi);/H(B">JOGDIAL_EVENT_IS_TURNING_CLOCKWISE_START</variable> <variable id="hiYZCkw8Zff^gWYY1A?N">JOGDIAL_EVENT_IS_TURNING_CLOCKWISE_STOP</variable> <variable id="dqr!qbiIz*iS^_Xd]irw">JOGDIAL_EVENT_IS_TURNING_COUNTER_CLOCKWISE_START</variable> <variable id="6P`k]l(9RS14VK|{DX=x">JOGDIAL_EVENT_IS_TURNING_COUNTER_CLOCKWISE_STOP</variable> <variable type="interval" id="IncreasingVolume">IncreasingVolume</variable> <variable type="interval" id="DecreasingVolume">DecreasingVolume</variable> </variables> <block type="comment" id="2%UT2^2n69}7w(e%]Y@c" x="-687" y="-487"> <field name="COMMENT">Eigene Sonos-/Symfonisk-Objekt-IDs zuordnen</field> <next> <block type="variables_set" id="Nx*=:|JU%or/Eq*g?^?}"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> <value name="VALUE"> <block type="field_oid" id="iqFP/B*(TXYpDSabYWse"> <field name="oid">deconz.0.Sensors.12.buttonpressed</field> </block> </value> <next> <block type="variables_set" id="+w@O|D?0qYSxF53,f(f@"> <field name="VAR" id="zMoTr[T}j6t^qg,6:Jn?">ID_SONOS_KEY_PAUSE</field> <value name="VALUE"> <block type="field_oid" id="M$@0)nwf2_{{-^ae5ss{"> <field name="oid">sonos.0.root.192_168_178_36.pause</field> </block> </value> <next> <block type="variables_set" id="_Act8ae=`Zdk7:;5Cv5-"> <field name="VAR" id="SUpTRr|AO3yO,G$EA)UO">ID_SONOS_KEY_PLAY</field> <value name="VALUE"> <block type="field_oid" id="CN]O$.{ArAJu+.VKkmiE"> <field name="oid">sonos.0.root.192_168_178_36.play</field> </block> </value> <next> <block type="variables_set" id="UWRA#Doo8%F0Dyh*7a+t"> <field name="VAR" id="A*X}3y0gWF0;;S|J$urm">ID_SONOS_STATE_IS_PLAYING</field> <value name="VALUE"> <block type="field_oid" id="[c$g+]q;%5OxYSV:7?bC"> <field name="oid">sonos.0.root.192_168_178_36.state_simple</field> </block> </value> <next> <block type="variables_set" id="$1ncI578B(dWKL(uNSl%"> <field name="VAR" id="q#b-XNl4d-`b?g5;GlvL">ID_SONOS_KEY_PLAY_NEXT_TRACK</field> <value name="VALUE"> <block type="field_oid" id="}h4|SiGB#Ur4As]s(/Ww"> <field name="oid">sonos.0.root.192_168_178_36.next</field> </block> </value> <next> <block type="variables_set" id="^$H5/opI`S(+px3T#d$h"> <field name="VAR" id="Fg3stJ4,K(8HQ9CuTOGr">ID_SONOS_KEY_PLAY_PREVIOUS_TRACK</field> <value name="VALUE"> <block type="field_oid" id="-@Wy@Y$T?bdNGuMG=zuR"> <field name="oid">sonos.0.root.192_168_178_36.prev</field> </block> </value> <next> <block type="variables_set" id="i-f,$-pP{UWM`m+jf-s{"> <field name="VAR" id=":Gf)%4)%u%g@5HtWoN)w">ID_SONOS_VOLUME</field> <value name="VALUE"> <block type="field_oid" id=";n_LM;3dGf]ElMa8SoTK"> <field name="oid">sonos.0.root.192_168_178_36.volume</field> </block> </value> <next> <block type="comment" id="k~QdSnJaGuRHvSk6zo:R"> <field name="COMMENT">Verhalten der Lautstärke-Änderung</field> <next> <block type="variables_set" id="(TnKeoQG]1*Ogc.{$v:/"> <field name="VAR" id="MmyIM96),^U`9B?uBv2C">STEP_ADJUST_VOLUME</field> <value name="VALUE"> <block type="math_number" id="o/=ghzp[q~s#:@xblY*m"> <field name="NUM">1</field> </block> </value> <next> <block type="variables_set" id="X54%bNdt#7a`@/0}AcCE"> <field name="VAR" id="u!7ANbe6xbguOkKn?6C2">INTERVAL_ADJUSTING_VOLUME</field> <value name="VALUE"> <block type="math_number" id="9Q.rgo.fJ}c]WGkXHgUm"> <field name="NUM">200</field> </block> </value> <next> <block type="comment" id="`Mi@^{`[|N@Rn+!LlE/s"> <field name="COMMENT">Feste Konstanten (nicht verändern)</field> <next> <block type="variables_set" id="V7+I/g}k0@Yw`%cj@36$"> <field name="VAR" id="0#j~pk2@z+%*)D|P1l(V">KEY_EVENT_IS_CLICKED</field> <value name="VALUE"> <block type="math_number" id="ilCNSl56;C.GH3}jrEQ7"> <field name="NUM">1002</field> </block> </value> <next> <block type="variables_set" id="dP:dLE5lE5wS;R:E;=CA"> <field name="VAR" id=";!Aa=DHKW=_5+BI9)`O6">KEY_EVENT_IS_DOUBLE_CLICKED</field> <value name="VALUE"> <block type="math_number" id="$5hrDu~:h2IlKFZ#Z|b?"> <field name="NUM">1004</field> </block> </value> <next> <block type="variables_set" id="4L{vK0(HX=.Q{=r]SX9t"> <field name="VAR" id="[mE4M6iPpxwZtW%3~0pY">KEY_EVENT_IS_TRIPLE_CLICKED</field> <value name="VALUE"> <block type="math_number" id="TOP+rwVwM(Zwm,Ag;oG3"> <field name="NUM">1005</field> </block> </value> <next> <block type="variables_set" id="lT!@i3n57.!4X+geK1@9"> <field name="VAR" id="1%Zo8z{3Vlg3Bi);/H(B">JOGDIAL_EVENT_IS_TURNING_CLOCKWISE_START</field> <value name="VALUE"> <block type="math_number" id="FTyN4*$UfY|X:b{V5_82"> <field name="NUM">2001</field> </block> </value> <next> <block type="variables_set" id="L%pm7$`fVKr/#m.VKtm]"> <field name="VAR" id="hiYZCkw8Zff^gWYY1A?N">JOGDIAL_EVENT_IS_TURNING_CLOCKWISE_STOP</field> <value name="VALUE"> <block type="math_number" id="|J16G[|xysKQ+BSk$.Ez"> <field name="NUM">2003</field> </block> </value> <next> <block type="variables_set" id="pM?#h=9w]?90yOWr:?f@"> <field name="VAR" id="dqr!qbiIz*iS^_Xd]irw">JOGDIAL_EVENT_IS_TURNING_COUNTER_CLOCKWISE_START</field> <value name="VALUE"> <block type="math_number" id="J#2[odtc!,1%%!Q7f13X"> <field name="NUM">3001</field> </block> </value> <next> <block type="variables_set" id="r%/U=3fc)lNV#H42N(2C"> <field name="VAR" id="6P`k]l(9RS14VK|{DX=x">JOGDIAL_EVENT_IS_TURNING_COUNTER_CLOCKWISE_STOP</field> <value name="VALUE"> <block type="math_number" id="moIZ;uHBW`N|ku0sc}g]"> <field name="NUM">3003</field> </block> </value> <next> <block type="comment" id="1rh6(RV#GI4?R,dtznP;"> <field name="COMMENT">Logik</field> <next> <block type="on_ext" id="}q%nux4CF[$/;Sp]`r`]"> <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="Ug%VZ`$VtS[sGJJp#Z8J"> <field name="oid">deconz.0.Sensors.12.buttonpressed</field> </shadow> <block type="variables_get" id="f-3AA-9/Q:zF(!@92FIo"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="?oAO(;:S;wn/DPZPN!xz"> <value name="IF0"> <block type="logic_operation" id="q)(pe[w1_,]#zPKB:5`_"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="t7V]+|(D/7DPp)Q7Q9/Z"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="_Z)/?V|Nv2z,82lF_Qzw"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="VK0qV|5{pZt2ceyOF`%B"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="UpttTC0bZ(JV]a;Q;5LO"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="NYfD}%tM1k(Q*d1i(9b("> <field name="VAR" id="0#j~pk2@z+%*)D|P1l(V">KEY_EVENT_IS_CLICKED</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="^%J;%/ej_od6YGyTIPd`"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="kxNr{xzEhBp,aJDLi8Gn"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="5Fj2ce.7wgjbu5g~^3Z~"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="|??!MJryZ%VHmA}W*J}6"> <field name="VAR" id="A*X}3y0gWF0;;S|J$urm">ID_SONOS_STATE_IS_PLAYING</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="8%apR@A5^rttp$*rn$la"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="+z2~,9@ZwbU.}J1L,Sc["> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="^[paCRr1VVGm+#OajV]e"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="}~n}_LOZ1uLbV7?GO8]z"> <field name="VAR" id="zMoTr[T}j6t^qg,6:Jn?">ID_SONOS_KEY_PAUSE</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="BXrJz2%Ec47Y+x|^9Tr+"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="wF^v$Z#c2Oz^O*(9Pb|]"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <next> <block type="controls_if" id="YrFygC.,}F@^6~[pX4`i"> <value name="IF0"> <block type="logic_operation" id="CE)P4e*rz~NnbUk%H*80"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="5OKsrg)a^EGjK*Il6Y,h"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="yB2dN#A*QH%hTGc0_?dh"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="k*~HJO^=-Fv?K.()[YhX"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="PE:+o@DwLFet|0yeEWdQ"> <field name="VAR" id="0#j~pk2@z+%*)D|P1l(V">KEY_EVENT_IS_CLICKED</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="Lcgv!NmezPTf4%^N`phb"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="qDmr}+:^%_t)J3EikOBX"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="LxB[hw@wux`]6%Eg*XJ)"> <field name="VAR" id="A*X}3y0gWF0;;S|J$urm">ID_SONOS_STATE_IS_PLAYING</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="Wd!!cJ{!?s1-HGtouKxb"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="X}-GGmZQwoYtefx#,mzt"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id=")NG=~dg-n0y}8Lb=4Ie3"> <field name="VAR" id="SUpTRr|AO3yO,G$EA)UO">ID_SONOS_KEY_PLAY</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="r}JAN{zsQ*]{oD)ex6vf"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="@L}bagKGv|}$9yAQVHP#"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <next> <block type="controls_if" id="L{aPk:?f,.Naypb)KA#I"> <value name="IF0"> <block type="logic_compare" id="FSvj)6YpPo(cVjHtT7Dl"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="DhrX326z!@)`PLK$$RB:"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="jwQzMN!d^D=I=/RR[Z/r"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="UFl285V7fN7^i.=w:cbw"> <field name="VAR" id=";!Aa=DHKW=_5+BI9)`O6">KEY_EVENT_IS_DOUBLE_CLICKED</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="Bz!Cf`f8pIMBRA,:zv*s"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="sD(=0W(?ZGS^|1fC$`je"> <field name="VAR" id="q#b-XNl4d-`b?g5;GlvL">ID_SONOS_KEY_PLAY_NEXT_TRACK</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="6N{30EJ=A`-gq.y:hJPH"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="AMouEy*5dK!#SP=KiU[D"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <next> <block type="controls_if" id="@]yX%|!.^q8Jvfi08r#n"> <value name="IF0"> <block type="logic_compare" id=")rN!~QS}WY3B-V5)k-(!"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="8s{Jp%vX6zhq:~WKkRjQ"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="n{O?.#A*5{399^jjv9);"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="XvRyGE4?B@!*ld,#7a=u"> <field name="VAR" id="[mE4M6iPpxwZtW%3~0pY">KEY_EVENT_IS_TRIPLE_CLICKED</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="43wkoiq8=R[CIPI2Bf3Y"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="MeuAyej|n`xNN5`?]O2E"> <field name="VAR" id="Fg3stJ4,K(8HQ9CuTOGr">ID_SONOS_KEY_PLAY_PREVIOUS_TRACK</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="~?4Y?1yAyAmFDo-Z3$3;"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="wdSM_SHbd7c2gWaKyeaS"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <next> <block type="controls_if" id="yLD~xeNwaM+Q0BS8E|8p"> <value name="IF0"> <block type="logic_compare" id="Is~z^7cH#*tqVrdyes=."> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="3qgpR=U6tt*e:CyzD3x%"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="({`rp3V*c.V|KF26l-{y"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="BYB8fdCjvB{/i...iDLk"> <field name="VAR" id="1%Zo8z{3Vlg3Bi);/H(B">JOGDIAL_EVENT_IS_TURNING_CLOCKWISE_START</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="n9#-$Z3B?tH,YFW/UJn="> <field name="NAME">DecreasingVolume</field> <next> <block type="timeouts_setinterval" id="_8$u1sq~g19*[4ulz+i?"> <field name="NAME">IncreasingVolume</field> <field name="INTERVAL">INTERVAL_ADJUSTING_VOLUME</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control_ex" id="lL0J#K8|c(yFp}fQcsv4"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="cRaN^9!gol(A^p8|)LxO"> <field name="VAR" id=":Gf)%4)%u%g@5HtWoN)w">ID_SONOS_VOLUME</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="!,|EX9MpV;LPO:R})o]W"> <field name="BOOL">TRUE</field> </shadow> <block type="math_arithmetic" id="VYb})2+GnP_T5qpy;Rm:"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="A{#Fyu[kvm!U+Ui#o=FR"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="bZbnf(K-4]vYhV12k[=g"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="jca4Wt}5!sA`+L52~46S"> <field name="VAR" id=":Gf)%4)%u%g@5HtWoN)w">ID_SONOS_VOLUME</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="rmGRNGC]QuJJ4Z#-cAEV"> <field name="NUM">3</field> </shadow> <block type="variables_get" id="icyDCo#/S!?(JNceub1O"> <field name="VAR" id="MmyIM96),^U`9B?uBv2C">STEP_ADJUST_VOLUME</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="t)3tMKV*co4d`gb?/7Ov"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="controls_if" id="YPx}Ob1TpL(7|C5iL1*m"> <value name="IF0"> <block type="logic_compare" id="pQS2|,JIKIEzfcuP@CVZ"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="LVhkSs;gv/5WJE[iU6`!"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="++Y]zbI^T+7od`qmqbD;"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="ncynM-gUVBvTKw==8|dK"> <field name="VAR" id="hiYZCkw8Zff^gWYY1A?N">JOGDIAL_EVENT_IS_TURNING_CLOCKWISE_STOP</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="6Yt]TkEJf)+5y,-4#7iD"> <field name="NAME">IncreasingVolume</field> </block> </statement> <next> <block type="controls_if" id="%H]C6tbuCIyi^f0(0(sT"> <value name="IF0"> <block type="logic_compare" id="(9TzYVt[!ix~fcy}wE?,"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="^Zb4oxS];n:(sLTU;4,o"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="jdd(7C^g)D+yDT#V|NQk"> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="VVMONS8W!fH98SUcAqMo"> <field name="VAR" id="dqr!qbiIz*iS^_Xd]irw">JOGDIAL_EVENT_IS_TURNING_COUNTER_CLOCKWISE_START</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="[yX^^4D`{3_)0*k5A?qg"> <field name="NAME">IncreasingVolume</field> <next> <block type="timeouts_setinterval" id="|fg=-46.?}ePvtD9T$T^"> <field name="NAME">DecreasingVolume</field> <field name="INTERVAL">INTERVAL_ADJUSTING_VOLUME</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control_ex" id="OVtOAp]}E}-p=e(g[8sI"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="pG-1Jk%Mg`-Fy:,R$k^N"> <field name="VAR" id=":Gf)%4)%u%g@5HtWoN)w">ID_SONOS_VOLUME</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="math_arithmetic" id="++=TXeL:H@4hkb[U]I@~"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value_var" id="t1J|P7SN}99NsXFW].Go"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="(Hw/6H7(BMz{p9#|`#2B"> <field name="VAR" id=":Gf)%4)%u%g@5HtWoN)w">ID_SONOS_VOLUME</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">3</field> </shadow> <block type="variables_get" id="(X*ZjYB~[=8sl#$c#xhD"> <field name="VAR" id="MmyIM96),^U`9B?uBv2C">STEP_ADJUST_VOLUME</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="!{aNCLU)([AzbMG.p?N|"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="controls_if" id="_y9Q?H3U+e0S}]|)Bf}b"> <value name="IF0"> <block type="logic_compare" id="j|w:wLqd]4f(~;qW4PtZ"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id=".j!d35JWY=X8:8MDE1z1"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="UhK6@0|_+/Scmdc/PCA["> <field name="VAR" id="RWhh1(eHXb_3kIFM]ece">ID_SWITCH_SYMFONISK_DIAL_BUTTONPRESSED</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="~.vVUEouHb7P+1_*HCVA"> <field name="VAR" id="6P`k]l(9RS14VK|{DX=x">JOGDIAL_EVENT_IS_TURNING_COUNTER_CLOCKWISE_STOP</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="X2diaWO+|_v05m_lHq/D"> <field name="NAME">DecreasingVolume</field> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
-
Ich habe Symfonisk mit Blockly eingebunden:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="interval" id="Intervall">Intervall</variable> <variable type="interval" id="Intervall2">Intervall2</variable> </variables> <block type="on" id="MJ`3/E5Xn|kSTEjJUI=B" x="663" y="739"> <field name="OID">deconz.0.Sensors.28.buttonevent</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="comment" id="EJW;Qe3Z*x]y2-oomMGU"> <field name="COMMENT">Lautstärke (leise)</field> <next> <block type="controls_if" id="Oh-`,z(LtV}PJ%pk!CC:"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="/|;4$b!$?F3un0^+4ujL"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="`rR{yeU8+GRA/rbRvPd:"> <field name="ATTR">val</field> <field name="OID">deconz.0.Sensors.28.buttonevent</field> </block> </value> <value name="B"> <block type="math_number" id="6U}?}tLt8^~l1MX.gM4z"> <field name="NUM">2001</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_setinterval" id="IM:U)6KGlf]w(#oLvL4("> <field name="NAME">Intervall</field> <field name="INTERVAL">300</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="cT5:#@b2b_cC^R/XGTy#"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_0_113.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id=",,/`O7DL5]~1GIP+z9{d"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="s$KKp4L@6J),#p!6oU8P"> <field name="NUM">1</field> </shadow> <block type="get_value" id="418to0;#O$seY*OIuJb{"> <field name="ATTR">val</field> <field name="OID">sonos.0.root.192_168_0_113.volume</field> </block> </value> <value name="B"> <shadow type="math_number" id="URr^:}Xo4G*,^c/V1pC%"> <field name="NUM">3</field> </shadow> </value> </block> </value> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="timeouts_clearinterval" id="#dCvL8#Jh`0]wo#5FJn,"> <field name="NAME">Intervall</field> </block> </statement> <next> <block type="comment" id="8gjU##)L^+jA{?Jmjf~1"> <field name="COMMENT">Lautstärke (laut)</field> <next> <block type="controls_if" id="Rv;$s8$TMz_d/gL?c^dK"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="4=hz4q!^=2PDMvgqVxV]"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=".Feeqb[!-{;/b[=.4ZVB"> <field name="ATTR">val</field> <field name="OID">deconz.0.Sensors.28.buttonevent</field> </block> </value> <value name="B"> <block type="math_number" id="IvkrXHxOZy8]g0%ExwGl"> <field name="NUM">3001</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_setinterval" id="]TJLIdIDG5{M+/sB|mof"> <field name="NAME">Intervall2</field> <field name="INTERVAL">300</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="control" id="D27A[)bxm0Ea`t}7rek{"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_0_113.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id="zzVFlZ9SY+LD9Sf^T@-H"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="get_value" id="HyPY6$|?Q2k1fi}uldaY"> <field name="ATTR">val</field> <field name="OID">sonos.0.root.192_168_0_113.volume</field> </block> </value> <value name="B"> <shadow type="math_number" id="t~3G_W`B=mt!VPb8r:O~"> <field name="NUM">3</field> </shadow> </value> </block> </value> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="timeouts_clearinterval" id="e%`bcp?VdADmq.fbYGPe"> <field name="NAME">Intervall2</field> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="on" id="eTJR@*cGi{znN9-Aim4)"> <field name="OID">deconz.0.Sensors.28.buttonpressed</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="comment" id="t^/YA.7E,E4=F=J$K0^^"> <field name="COMMENT">Pause / Play</field> <next> <block type="controls_if" id="}X0andy*UM6sinn3Ivrs"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="7f==/vv;Q]}(sk$nWF[g" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="Q8iD!@C248yC:.=P?740"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="(`9)GmfJY,A*sk^89)~~"> <field name="ATTR">val</field> <field name="OID">deconz.0.Sensors.28.buttonpressed</field> </block> </value> <value name="B"> <block type="math_number" id="+JopBt94(jOLaPlwkuJ!"> <field name="NUM">1002</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="SmobNXiZ`s`ZLUTF]$_}"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="xx8[jMhlt1sPRLBU8((A"> <field name="ATTR">val</field> <field name="OID">sonos.0.root.192_168_0_113.state</field> </block> </value> <value name="B"> <block type="text" id="BYS1ousW(@Hj@^9z9Y/a"> <field name="TEXT">play</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="khKzr!/O]}f+S;HnM;2?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_0_113.pause</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="{0!GjrK4%kEDj9LNjjiM"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_operation" id="[Drc)ZFEJ64t%X$}ZsAI" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="kY%t.NN!3Il-COFjFr2L"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="p$Umzlq:@`WLSh=5Ig|A"> <field name="ATTR">val</field> <field name="OID">deconz.0.Sensors.28.buttonpressed</field> </block> </value> <value name="B"> <block type="math_number" id="yF]{Dl}ez%|[kZ.MKalt"> <field name="NUM">1002</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="dQZk(G!B?DDX,`ZWNe4m"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="o2?F[Ap@U#[wnOqd5{#)"> <field name="ATTR">val</field> <field name="OID">sonos.0.root.192_168_0_113.state</field> </block> </value> <value name="B"> <block type="text" id="@mCgwfzw2@^{JhuSGhA*"> <field name="TEXT">pause</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="S-oiL~Y|MJHu5wx8c@|V"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_0_113.play</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="YE8Ir?n/U;Bteqfh4x(L"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="comment" id="eLQ|AjrBtt#/j7zeFXYf"> <field name="COMMENT">Titel weiter / zurück</field> <next> <block type="controls_if" id="}{xm:xo`iUG.,Q31G{MK"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="^u%HjzL{QYA(f^{_{sw%"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="SH^B2JQ3.u^_oW,0)p;="> <field name="ATTR">val</field> <field name="OID">deconz.0.Sensors.28.buttonpressed</field> </block> </value> <value name="B"> <block type="math_number" id="%K-QH{3b}vOc(egO6opN"> <field name="NUM">1004</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Q39Q#2dxhBkB3hEkxnZQ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_0_113.next</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="De=t(_MqSVwkdzN%};g|"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="k:1mI75zy[PBDbEqGrbB"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="uk4v!C6]UZ9#=/sqb+Tf"> <field name="ATTR">val</field> <field name="OID">deconz.0.Sensors.28.buttonpressed</field> </block> </value> <value name="B"> <block type="math_number" id="unmRx)`V[!lRp(K#zHAq"> <field name="NUM">1005</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="IaTPmfQ9W])8/7qp:?.+"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_0_113.prev</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="uq=A%QKpMBhr9lgk_Z?P"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </xml>
-
Hallo Leute
Ich habe i mir auch mal zum Testen von Tradfri den Verstärker, den Soundcontrol und den Stecker zugelegt. Den Verstärker habe ich Verbunden bekommen, aber den Soundcontroler bekomme ich nicht mal gefunden... Wie habt ihr das gemacht? Ich abe den CC2531 Stick... -
@Tom-Son Ich nutze den Conbee2 von Dresden Elektronik
-
@Tom-Son Ich hatte damals auch einen CC2531 Stick. Ich hatte eine aktuelle Version von zigbee2mqtt genutzt, die die Symfonisk-Remote unterstützt.
zigbee2mqtt (1.7.1+dev)
mit"zigbee-herdsman": "0.12.14", "zigbee-herdsman-converters": "11.1.50"
.Mit dem zigbee-adapter in iobroker ging es leider nicht. Entscheidend ist wahrscheinlich die
zigbee-herdsman-converters
Version. Eine ältere Version von zigbee2mqtt nutzte noch daszigbee-shepherd-converters
Paket. Damit ging es auch nicht.Die Anmeldung ging schließlich wie üblich über zurücksetzen der remote (4 oder 5 mal den Knopf innen drücken). Allerdings auch nicht auf Anhieb glaube ich.
EDIT: okay ich sehe gerade, der zigbee-adapter nutzt inzwischen auch die herdsman-converters in Version 12. Also nach meiner Theorie sollte damit auch der Symfonisk-Controller direkt im zigbee-adapter laufen - bin mir aber nicht ganz sicher.
EDIT2: der Issue dazu ist immer noch offen - es fehlt wohl noch eine Definition im zigbee-adapter:
https://github.com/ioBroker/ioBroker.zigbee/issues/543 -
Liebe Broker:
Probleme mit dem pairing hatte ich nicht (Raspbee). Einfach als Schalter/Ikea/Dimmer die Suche starten und den pairing button 4 mal pressen funktioniert einwandfrei. Die Suche wird zwar nicht erfolgreich beendet aber hinter dem Anmeldefenster sieht man den Symfonisk Controller nach einigen Sekunden in der Liste auftauchen. Im Deconz Adapter tauchen sie sauber auf unter "Sensors" nachdem man ihn einmal kurz bedient hat werden alle Datenpunkte für verschiedene Buttons angelegt. Diese stammen wohl von der runden FB mit den 4 Tasten und funktionieren nicht. Aber der buttonpressed Wert lässt sich einwandfrei auslesen.
Es ist interessant andere Ansätze zu sehen um das gleiche zu erreichen.
Beim Drehen des Symfonisk Buttons wechselt der Wert "buttonporessed" ja zwischen 2001 und 2003 (für lauter) bzw zwischen 3001 und 3003 (für leiser) hin und her. Eine volle Drehung sind etwa 5 solcher Wechsel.
Ich bin Blockly Anfänger und habe hierauf basierend folgende wie ich finde einfache Variante gewählt:
Das funktioniert für mich soweit einwandfrei und auch sehr fein wenn man es wünscht. Hierfür ist dann der Änderungswert einfach anzupassen. Für mein TV Setup im Wohnzimmer habe ich 1erSchritte für Musik speaker habe ich 2er Schritte gewählt.
Anders als bei der Einbindung über den Tradfri Gateway lassen sich die Sonos Geräte auch einzeln steuern wenn sie in Gruppen eingebunden sind (das geht mit dem Gateway nicht und das war das K.O. Kriterium für mich und ich habe den Gateway wieder zurück gegeben).
Es gibt zumindest bei mir lediglich ein Problem, dass sich der Player Volume für den Speaker der aks Koordinator einer Gruppe fungiert nicht korrekt regeln lässt, da scheint es eine Abhängigkeit mit dem Gruppenvolume zu geben. Ich habe dies bei Github dem Entwickler des Sonos Adapters gemeldet.
@wuzy
@capitaenz
Ich glaube Eure Ansätze über die Zeit zu gehen haben den Nachteil, dass die Drehgeschwindigkeit egal ist. Solange man dreht verändert sich die Lautstärke egal ob man schnell oder langsam dreht.
Ich denke Eure Ansätze wären gut geeignet um den kleinen weissen quadratischen 6 Euro Trafri Dimmer einzubinden. Dieser meldet einen Wert wenn man eine Taste drückt und einen anderen wenn man wieder los lässt. Es gibt nicht wie bei dem Drehregler ein Springen des Wertes. Die Zeit zwischen Anfang und Ende kann man mit Euren Methoden verwenden um u.a. zu Dimmen oder auch die Lautstärke zu regeln. Wenn ich mal ganz viel Zeit habe probiere ich Eure Skripte mal aus.hier noch das Skript als Export:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="(z3aZvia~}yd*Ut[5cVh">i</variable> </variables> <block type="on" id="/zy*J=xVITezXyDs#g:E" x="-87" y="-312"> <field name="OID">deconz.0.Sensors.25.buttonpressed</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="%qD|i^PWo/kRL^~U*$Vi"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> <value name="VALUE"> <block type="get_value" id="p7;.67X:,1)m|dF[7(x,"> <field name="ATTR">val</field> <field name="OID">sonos.0.root.192_168_178_28.volume</field> </block> </value> <next> <block type="controls_if" id="+qTu|ee%,*{#ADLort,s"> <value name="IF0"> <block type="logic_compare" id=":J~~CN=,vsfl@xC]K{?}"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="P4j_M=ubm9Cm^cr9mg$R"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="{Me:%^2Cf.Kvk=JE`ye^"> <field name="NUM">2001</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="pH%lS8xLtryYqzul^HQ7"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> <value name="DELTA"> <shadow type="math_number" id="fWEKfF[vUUh$mdF;nt4U"> <field name="NUM">2</field> </shadow> </value> <next> <block type="control" id="3=e.`m}{mW6k+KAP0}=!"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="Z5.54yOJ~cCNU^Ee9c[v"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> </block> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="tVhi_+z.BuMh$oF8EUCW"> <value name="IF0"> <block type="logic_compare" id="WFOz;SprBL=m#pO0#i`]"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="8hXoXQWe4:Xh*FJba1fZ"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="UWF9UVKy)2L_3#Zv];T+"> <field name="NUM">2003</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="wI:XKxW)a@b2}[h9JH8]"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> <value name="DELTA"> <shadow type="math_number" id="#lnozr91dzo_Dp0,cVcr"> <field name="NUM">2</field> </shadow> </value> <next> <block type="control" id="[8g}uF_vfeapc(Ed+M(i"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="M-a3HRYcj-T_mDEc5tnj"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> </block> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="{V*C6Ng9~/,8jWtk;Tle"> <value name="IF0"> <block type="logic_compare" id="w=lU0@fICLag-Sudg:~_"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="1z??:)Qw%#AGjLX7,-cW"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id=",AU__Ij?h,LPD(C0ML+f"> <field name="NUM">3001</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="cT@O$^+[|.K=DNgVa3IM"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> <value name="DELTA"> <shadow type="math_number" id="G-_:-aWAIx0Zp7${5iKv"> <field name="NUM">-2</field> </shadow> </value> <next> <block type="control" id="+ZUN|hR1_%HFSNd%?S@e"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="Kz9fBj/O2]uwZP.s.6Kx"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> </block> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="9yZ};@C@]84x{rFEH$S_"> <value name="IF0"> <block type="logic_compare" id="@~fx23B7+2yOw@4e/DzE"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="L@Numui=D0s!4X;Mto})"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="da[z%nfM6lIr4jr[i1[4"> <field name="NUM">3003</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="4jzgtMXype]bkK4UoXhk"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> <value name="DELTA"> <shadow type="math_number" id="W,`.$FDrF;#X0Te,sbRJ"> <field name="NUM">-2</field> </shadow> </value> <next> <block type="control" id="rYdreQ7S^*^0##W[^@F~"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="_B3j|=!D_f(of$24xy$}"> <field name="VAR" id="(z3aZvia~}yd*Ut[5cVh">i</field> </block> </value> </block> </next> </block> </statement> <next> <block type="controls_if" id="dbZ3;XP,2eGE6d~G]nK4"> <value name="IF0"> <block type="logic_operation" id="nUms+N[kS@?G*aHL~rAF"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="v@Y44I!c;.s8)j8v_MLX"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="`{H*-;X?f-`+[Ojc0U:)"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="_fm_q!Ex.E+YTL%##,B:"> <field name="NUM">1002</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="Ij2R8UlpJfA8O/PVf_fo"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="_)LpajO!g,tT46H,hB=)"> <field name="ATTR">val</field> <field name="OID">sonos.0.root.192_168_178_28.state_simple</field> </block> </value> <value name="B"> <block type="logic_boolean" id="7HHRp1x+Yw-Ix/X%{?:m"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="lewNDWtL+x`%Gc8wW8o8"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.pause</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="p*+_pY9*I]Vm7h1|b+_T"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="9PDKFdk8QWqbKHQOgo5;"> <value name="IF0"> <block type="logic_operation" id="Qg]0tkSdn9w!}?nUlxVx"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="Wq:_e8M4rR={`Y^,HiO~"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="f}UT9nY=.EyS;=rP@rZV"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="lAG0u[hM:NM:IFo@Puz$"> <field name="NUM">1002</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="UmYbQ5Qc(uD^q$aPTOXW"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="#h$_+KGZ3^_,|`Lo0oVr"> <field name="ATTR">val</field> <field name="OID">sonos.0.root.192_168_178_28.state_simple</field> </block> </value> <value name="B"> <block type="logic_boolean" id="$D0EdOa{8K8/B#+L*AWu"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="sk][gQ(51)iy_Uzbg]~c"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.play</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="]o@zy9vNkX=}p_NjtLQ)"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="4]qA}ThM**u2W#${*lZs"> <value name="IF0"> <block type="logic_compare" id="j(-fhEG0f[r[+GsC]=Z%"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="i3!Q{4U`7dmIQ]Km!@*k"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="[hFvsTV7#NNz_OvzfVPS"> <field name="NUM">1004</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="%j=nCt:?dp(^tQ^{pNFF"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.next</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="j5BjzT}siX}oWL3?hD(w"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <next> <block type="controls_if" id="vG11A;W]erGR%}4Iq*Yr"> <value name="IF0"> <block type="logic_compare" id="ju^=TNgx?$eVqoQzh(pB"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="hayyZtt[c]wGR1Zsa:},"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="math_number" id="vWKO8J#ugj6X,D6fSyzi"> <field name="NUM">1005</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="m9wA7hmm;vl9:Q*`#HM%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonos.0.root.192_168_178_28.favorites_set</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="3QQb4,_b]N~dSyBHK6ky"> <field name="TEXT">02 Lounge & Bar</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
Bei mir kommt nur "anounced it self" und in den Adaptern hab ich ihn dann als ? drinnen...
-
Könnt ihr mit eurer Lösung Musik abspielen bzw. eigene Dateien abspielen?