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>