Jetzt bin ich bei einem Stand angekommen mit dem ich erstmal zufrieden bin. Fertig ist es aber noch nicht. Offene Punkte sind unten aufgelistet.
Damit das Skript funktioniert benötigt es folgende Datenpunkte:
Diese drei sind Zeichenketten:
0b4faca2-aa95-4662-af36-e1f174cb6c25-image.png
Der Counter ist eine Zahl, die anderen beiden sind Booleans:
078837de-bf37-42f1-90a2-e46f9ca951bc-image.png
Wie verwendet man das Skript:
In den Datenpunkt 0_userdata.0.TTS.Queue muss zu Beginn einmal eine leere Liste [] geschrieben werden. In diesem Datenpunkt wird die Queue der noch nicht ausgesprochenen Texte vorgehalten. Der Inhalt des Datenpunktes ist ein JSON String.
Der Datenpunkt 0_userdata.0.TTS.AlleGeraete dient als Ausgabe für das Skript. Mit der Ausgabe kann dann auf einem beliebigen Gerät TTS gemacht werden. Ein Blockly zur Ausgabe via Sayit mit allen Instanzen ist unten als Export in einem Spoiler.
Der Datenpunkt 0_userdata.0.TTS.Enqueue dient als Eingabe in das Skript.
Um eine Ausgabe an eine bestimme Person zu adressieren schreibt man folgendes JSON in den Datenpunkt:
{"name":"$NAME$","text":"sage diesen Text"}
$NAME$ ist definiert durch den Datenpunkt, der die Anwesenheit der Person repräsentiert
(alias.0.Anwesenheit.$NAME$)
z.B.: alias.0.Anwesenheit.Jonathan => {"name":"Jonathan","text":"Diesen Text hört Jonathan"})
Ist ein Text für eine beliebige Person des Haushalts (mindestens eine Person muss anwesend sein) so kann entweder das Feld name im JSON leer gelassen werden oder noch einfacher nur der zu sprechende Text in den Enqueue-Datenpunkt geschrieben werden.
TODO:
Triggerdatenpunkt für späteres Auslösen von Anwesenheit
Automagisches Selbstsetup (scheitert noch daran, dass via Blockly keine Datenpunkte unter 0_userdata erstellt werden können)
Datenpunkte für jede Person zum einfacheren Ansprechen einzelner Personen
Blockly Export TTS
<xml xmlns="http://www.w3.org/1999/xhtml">
<variables>
<variable id="AkYU}7*X5NX/z#^FM)Xy" type="">array</variable>
<variable id="h]DkyBP2{E-q*Pl7nt`c" type="">elementToAdd</variable>
<variable id="]C@/yy];0C6P$+$-^*C(" type="">elementToRemove</variable>
<variable id="HFsl-ic:cMLV;-Y05i1Z" type="">jsonString</variable>
<variable id="Ys,h8KBm$.J$uF(7/#Ix" type="">Queue</variable>
<variable id="9bZ+SVj%$FZ4-|02x~-b" type="">ttsContent</variable>
<variable id="cp[4,JQ-c8t]DwDv4Yx$" type="">ttsContentQueueObjects</variable>
<variable id="JAlj;p0CDqTg1$JpT;-;" type="">i</variable>
<variable id="+oRzt@R~n1bEB_=ghKO)" type="">j</variable>
</variables>
<block id="%:NEU_^~k/b))v{Hvwk$" type="procedures_defcustomreturn" y="-287" x="38">
<mutation statements="false">
<arg name="array" varid="AkYU}7*X5NX/z#^FM)Xy"></arg>
<arg name="elementToAdd" varid="h]DkyBP2{E-q*Pl7nt`c"></arg>
</mutation>
<field name="NAME">push</field>
<field name="SCRIPT">YXJyYXkucHVzaChlbGVtZW50VG9BZGQpOw0KcmV0dXJuIGFycmF5Ow==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block id="gC!%[R;Rta^J)2-o/FnG" type="procedures_defcustomreturn" y="-262" x="37">
<mutation statements="false">
<arg name="array" varid="AkYU}7*X5NX/z#^FM)Xy"></arg>
<arg name="elementToRemove" varid="]C@/yy];0C6P$+$-^*C("></arg>
</mutation>
<field name="NAME">splice</field>
<field name="SCRIPT">dmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZihlbGVtZW50VG9SZW1vdmUpOw0KaWYgKGluZGV4ID4gLTEpIHsNCiAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTsNCn0NCg0KcmV0dXJuIGFycmF5Ow==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block id="yV,p)rpYDl6%)v|~hP_N" type="procedures_defnoreturn" y="-237" x="38">
<mutation>
<arg name="jsonString" varid="HFsl-ic:cMLV;-Y05i1Z"></arg>
</mutation>
<field name="NAME">AppendToQueue</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK">
<block id="4OLI^HO8Jy=jXE#Cy2Y/" type="variables_set">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
<value name="VALUE">
<block id="qzzB6}cnfT|J56`5b2?M" type="convert_json2object">
<value name="VALUE">
<block id="C{7V4*/o;!1~mC+FVifq" type="get_value">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.TTS.Queue</field>
</block>
</value>
</block>
</value>
<next>
<block id="c)^?{[}$K1NJx)aN~8bS" type="variables_set">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
<value name="VALUE">
<block id="1QA60KE0xndh4WptkU(2" type="logic_ternary">
<value name="IF">
<block id="0]U7$$=/(p.KkF?~x^jm" type="logic_compare">
<field name="OP">EQ</field>
<value name="A">
<block id="f:r8,OtXQ:HO.4PlATQ^" type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block id=".TC7?}S+i]1N_b-tDMzU" type="lists_length">
<value name="VALUE">
<block id="`Mz=hh{*3NpddD2D5]:?" type="variables_get">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="THEN">
<block id="w{yehoi1l#X4Oz/^wf=k" type="lists_create_with">
<mutation items="1"></mutation>
<value name="ADD0">
<block id="ylCYZtPA8{stkKH7*iwu" type="convert_json2object">
<value name="VALUE">
<block id="s}^*H4-ICt5mK#z3O,_0" type="variables_get">
<field id="HFsl-ic:cMLV;-Y05i1Z" name="VAR" variabletype="">jsonString</field>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ELSE">
<block id="PWV0=Y98MJ^i6xi|;CPT" type="procedures_callcustomreturn">
<mutation name="push">
<arg name="array"></arg>
<arg name="elementToAdd"></arg>
</mutation>
<value name="ARG0">
<block id="E5to#*qN:@}t{2V;%%*G" type="variables_get">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
</block>
</value>
<value name="ARG1">
<block id="F6{x9l|`[1;q2)*u8k#k" type="convert_json2object">
<value name="VALUE">
<block id="c(jy04.KXZVs`Gtx=aaG" type="variables_get">
<field id="HFsl-ic:cMLV;-Y05i1Z" name="VAR" variabletype="">jsonString</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block id="9scApgE7BjVmY@bF8=P-" type="control">
<mutation delay_input="false"></mutation>
<field name="OID">0_userdata.0.TTS.Queue</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block id="^TBledj=T2Vt@k_z[0Mu" type="convert_object2json">
<field name="PRETTIFY">FALSE</field>
<value name="VALUE">
<block id="pS]vB$Y+m|n$ml)fcDRX" type="variables_get">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
<block id="8{g[]3?@,dD5M#z2L`RE" type="on_ext" y="-91" x="174">
<mutation items="1"></mutation>
<field name="CONDITION">any</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow id="v9n*i][1l%T+r+Y*/,@[" type="field_oid">
<field name="oid">0_userdata.0.TTS.Enqueue</field>
</shadow>
</value>
<statement name="STATEMENT">
<block id="o{)R4x6OHB]cH@qkSckB" type="controls_if">
<mutation else="1"></mutation>
<value name="IF0">
<block id="0qi]*ZooU-uxgjPQn1|u" type="logic_compare">
<field name="OP">EQ</field>
<value name="A">
<block id="4Izoa,SZ9plA+h6)b]C-" type="math_number">
<field name="NUM">1</field>
</block>
</value>
<value name="B">
<block id="ypcg!BTqJ*#Ly1O:vOQ%" type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block id="2yV[:HByU,_M}V351#$8" type="on_source">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="FIND">
<shadow id="#sPA[HYIk{bE.Y.KO#MP" type="text">
<field name="TEXT">{</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="8QVv~YA@4JiBC+;s5eR!" type="comment">
<field name="COMMENT">JSON => Personalisiert</field>
<next>
<block id="m/lp/p;#49/,WBmvob-N" type="procedures_callnoreturn">
<mutation name="AppendToQueue">
<arg name="jsonString"></arg>
</mutation>
<value name="ARG0">
<block id="(rWp@KCpgh)QB^r.v=;E" type="on_source">
<field name="ATTR">state.val</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block id="Y~=NCX}zocQ)8#ZOVsIp" type="comment">
<field name="COMMENT">Für alle</field>
<next>
<block id="8V!;MF+swjN@ehx/LrWw" type="controls_if">
<mutation else="1"></mutation>
<value name="IF0">
<block id="^Gzu}-9neIjut4SXJwkj" type="logic_compare">
<field name="OP">LT</field>
<value name="A">
<block id="YIkMrj1R53DhUDZ5BkzL" type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block id="~{#%7bX[09MA*73[]zfo" type="get_value">
<field name="ATTR">val</field>
<field name="OID">alias.0.Anwesenheit.Counter</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="{wEq/uA.TsNij0:+VFq3" type="control">
<mutation delay_input="false"></mutation>
<field name="OID">0_userdata.0.TTS.AlleGeraete</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block id="{C5{ZCq$8S~JV-yzx3El" type="on_source">
<field name="ATTR">state.val</field>
</block>
</value>
</block>
</statement>
<statement name="ELSE">
<block id="a:Idj`xR!!Ef4%JWytGS" type="procedures_callnoreturn">
<mutation name="AppendToQueue">
<arg name="jsonString"></arg>
</mutation>
<value name="ARG0">
<block id="U~4y#M=!A/:]CzND,nE_" type="text_join">
<mutation items="3"></mutation>
<value name="ADD0">
<block id="z$Aj9M?*!T}uE27[RNkM" type="text">
<field name="TEXT">{"name":"","text":"</field>
</block>
</value>
<value name="ADD1">
<block id="PC9X/zW$oC8k|b~W6RE6" type="on_source">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="ADD2">
<block id="Uw=3@$0oFQOK$Ap[:lQi" type="text">
<field name="TEXT">"}</field>
</block>
</value>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</statement>
<next>
<block id="L,%plz|Sm(2Vg4Bf]/3H" type="on_ext">
<mutation items="2"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow id="x/IGdWLwh:aG|-2S`tg^" type="field_oid">
<field name="oid">alias.0.Anwesenheit.Counter</field>
</shadow>
</value>
<value name="OID1">
<shadow id="VNdrK=}3;+q{0,}W;:,5" type="field_oid">
<field name="oid">0_userdata.0.TTS.Queue</field>
</shadow>
</value>
<statement name="STATEMENT">
<block id="CDf%z0vhe9#/9^k-KdL." type="variables_set">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
<value name="VALUE">
<block id="vsqk1=Er*s[!!0WN+U2#" type="convert_json2object">
<value name="VALUE">
<block id="[F2;irz9-)xu7AIIUSe@" type="get_value">
<field name="ATTR">val</field>
<field name="OID">0_userdata.0.TTS.Queue</field>
</block>
</value>
</block>
</value>
<next>
<block id="@tTq4TP`OfqEX#VerkJq" type="variables_set">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
<value name="VALUE">
<block id="(7vh]9Q_?16{[[psI~kr" type="text">
<field name="TEXT"></field>
</block>
</value>
<next>
<block id="?A4J?r5U%y*fV,rhA9PK" type="variables_set">
<field id="cp[4,JQ-c8t]DwDv4Yx$" name="VAR" variabletype="">ttsContentQueueObjects</field>
<value name="VALUE">
<block id="8R~3nx+i#X~anNRBVT+!" type="lists_create_with">
<mutation items="0"></mutation>
</block>
</value>
<next>
<block id="B$3eHU^/~gq|gyAvYisD" type="controls_if">
<value name="IF0">
<block id="vSnIuAr)cIIRG7GI(=vV" type="logic_compare">
<field name="OP">LT</field>
<value name="A">
<block id="1lb=ychDESKt~Hj%0f{|" type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block id="L5Nzhr|E0O];Z-pGEs{d" type="get_value">
<field name="ATTR">val</field>
<field name="OID">alias.0.Anwesenheit.Counter</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="0?UA{3@y+ih+sT*H^g6q" type="controls_forEach">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
<value name="LIST">
<block id="c80X;TP$h-U+)[yH#:ab" type="variables_get">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
</block>
</value>
<statement name="DO">
<block id="]V%pU6Q[Z;).jw7zIq=;" type="debug">
<field name="Severity">log</field>
<value name="TEXT">
<shadow id="HZp=3Py*XU{k{OUKHn,?" type="text">
<field name="TEXT">test</field>
</shadow>
<block id=")a#=a[pOT=^q*MP*.oH4" type="convert_object2json">
<field name="PRETTIFY">FALSE</field>
<value name="VALUE">
<block id="n8v:Q4|@$E/k+Rsi6}{9" type="variables_get">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
<next>
<block id="(RJe4#RkD*!/;G,rM8i:" type="controls_if">
<mutation else="1"></mutation>
<value name="IF0">
<block id="ts41r3Vx786!CnW;nt69" type="logic_compare">
<field name="OP">EQ</field>
<value name="A">
<block id="2u*3!X`_Td1V?4g,*(.Q" type="text">
<field name="TEXT"></field>
</block>
</value>
<value name="B">
<block id="$[:!OZ1y-/$|IG,Cj0!*" type="get_attr">
<value name="PATH">
<shadow id="z;;pm6_r%bjRi1pskTG#" type="text">
<field name="TEXT">name</field>
</shadow>
</value>
<value name="OBJECT">
<block id="sFmrB1)NSC]S@4J{pYdS" type="variables_get">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="sBB5jVf6t]}_hO!9/pg?" type="variables_set">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
<value name="VALUE">
<block id="!W3#cdNWL#qD@-X#|z;z" type="text_join">
<mutation items="3"></mutation>
<value name="ADD0">
<block id="8oME*Pej5uEm=vN2f5:j" type="variables_get">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
</block>
</value>
<value name="ADD1">
<block id="qD9xEFI*:H3n5$-;ZhBg" type="get_attr">
<value name="PATH">
<shadow id="zqX+xg;aT=0TOS`ydV~T" type="text">
<field name="TEXT">text</field>
</shadow>
</value>
<value name="OBJECT">
<block id="pTR/Rf.iMBsf*#AZ:R68" type="variables_get">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block id="`F,4ipT~xSoy`}kpXv+`" type="text">
<field name="TEXT">. </field>
</block>
</value>
</block>
</value>
<next>
<block id="]Rbr3aDjACUIxsF;JUlc" type="variables_set">
<field id="cp[4,JQ-c8t]DwDv4Yx$" name="VAR" variabletype="">ttsContentQueueObjects</field>
<value name="VALUE">
<block id="Rbiwwq[!F0fMDW@j00AE" type="procedures_callcustomreturn">
<mutation name="push">
<arg name="array"></arg>
<arg name="elementToAdd"></arg>
</mutation>
<value name="ARG0">
<block id="3S_6e~JcEpFs8!S1xIp." type="variables_get">
<field id="cp[4,JQ-c8t]DwDv4Yx$" name="VAR" variabletype="">ttsContentQueueObjects</field>
</block>
</value>
<value name="ARG1">
<block id="x.-nQA3+kj]#P:SFiv.|" type="variables_get">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</statement>
<statement name="ELSE">
<block id="c)Zw/)!^K0=NKtD$s/yF" type="controls_if">
<value name="IF0">
<block id="_HJb}ED[wTj5[|sE#m6~" type="get_value_var">
<field name="ATTR">val</field>
<value name="OID">
<shadow id="uMW;Kd+?[f+;^wtzySV=" type="text">
<field name="TEXT"></field>
</shadow>
<block id="IH]9wgISJZte*!MS1{SG" type="text_join">
<mutation items="2"></mutation>
<value name="ADD0">
<block id="Enwq/afo^8g$}Yxq.lGu" type="text">
<field name="TEXT">alias.0.Anwesenheit.</field>
</block>
</value>
<value name="ADD1">
<block id="l?d0s%=/5$iUd=BsIX#-" type="get_attr">
<value name="PATH">
<shadow id="?Q/I~KogXNhB,m8`aux|" type="text">
<field name="TEXT">name</field>
</shadow>
</value>
<value name="OBJECT">
<block id="Ly!Hz]Ty;U-*JCAn,kUy" type="variables_get">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="/d*=~a`I118/1ht^9*iT" type="variables_set">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
<value name="VALUE">
<block id="q7!qLIIz93^M~};sA2dz" type="text_join">
<mutation items="3"></mutation>
<value name="ADD0">
<block id="cU~-/GG@UvxEv7dmq9(W" type="variables_get">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
</block>
</value>
<value name="ADD1">
<block id="$u3G#?=GT1}/x/(p$i{m" type="get_attr">
<value name="PATH">
<shadow id="Q$Ut:Zrsk$(X@1_{Xnj^" type="text">
<field name="TEXT">text</field>
</shadow>
</value>
<value name="OBJECT">
<block id="-V{z)e2S;*)lotYJiwi," type="variables_get">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
<value name="ADD2">
<block id="}}BrPl[$RRX7BRyN,yS:" type="text">
<field name="TEXT">. </field>
</block>
</value>
</block>
</value>
<next>
<block id="sl;4#$9ecMS~FwnLf8/9" type="variables_set">
<field id="cp[4,JQ-c8t]DwDv4Yx$" name="VAR" variabletype="">ttsContentQueueObjects</field>
<value name="VALUE">
<block id="~;pGb/Bs)=V5xIJ3upe]" type="procedures_callcustomreturn">
<mutation name="push">
<arg name="array"></arg>
<arg name="elementToAdd"></arg>
</mutation>
<value name="ARG0">
<block id="RV]LE{1lyD.u2v8TKsX=" type="variables_get">
<field id="cp[4,JQ-c8t]DwDv4Yx$" name="VAR" variabletype="">ttsContentQueueObjects</field>
</block>
</value>
<value name="ARG1">
<block id="#(bc2Oq=!)|n:n@tICrt" type="variables_get">
<field id="JAlj;p0CDqTg1$JpT;-;" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</statement>
<next>
<block id="Y0cHVAMq[E{WAKFar9pR" type="controls_forEach">
<field id="+oRzt@R~n1bEB_=ghKO)" name="VAR" variabletype="">j</field>
<value name="LIST">
<block id="5~_w3$#k?^oDIMQSE@qq" type="variables_get">
<field id="cp[4,JQ-c8t]DwDv4Yx$" name="VAR" variabletype="">ttsContentQueueObjects</field>
</block>
</value>
<statement name="DO">
<block id="bp|;1iR|ReitzSsu|(-$" type="variables_set">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
<value name="VALUE">
<block id="-PP{t9XP?X-GV$R|;)_b" type="procedures_callcustomreturn">
<mutation name="splice">
<arg name="array"></arg>
<arg name="elementToRemove"></arg>
</mutation>
<value name="ARG0">
<block id="uK:LX$S|J4@S3lt/s3?N" type="variables_get">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
</block>
</value>
<value name="ARG1">
<block id="?X|yjafX/W(8y@ip]TX3" type="variables_get">
<field id="+oRzt@R~n1bEB_=ghKO)" name="VAR" variabletype="">j</field>
</block>
</value>
</block>
</value>
</block>
</statement>
<next>
<block id="?aEy|-%QbW6:ZJu!y]b-" type="debug">
<field name="Severity">log</field>
<value name="TEXT">
<shadow id="HZp=3Py*XU{k{OUKHn,?" type="text">
<field name="TEXT">test</field>
</shadow>
<block id=".iQ1^h#!zg2!}.1-eVY:" type="variables_get">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
</block>
</value>
<next>
<block id="2=%i!cze{ZG7{+p}JS^}" type="debug">
<field name="Severity">log</field>
<value name="TEXT">
<shadow id="HZp=3Py*XU{k{OUKHn,?" type="text">
<field name="TEXT">test</field>
</shadow>
<block id="d=hT=uom5~.dLtU)t5=$" type="convert_object2json">
<field name="PRETTIFY">FALSE</field>
<value name="VALUE">
<block id="ir/N:vPiv)oA{PdIF7L:" type="variables_get">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
</block>
</value>
</block>
</value>
<next>
<block id="*XX4O?F|rgK$qj1i}S(T" type="controls_if">
<value name="IF0">
<block id="D@EH*_eHNWb~-/A(WH%s" type="logic_compare">
<field name="OP">NEQ</field>
<value name="A">
<block id=";KvPi;{:t3c/b.AtB0*j" type="text">
<field name="TEXT"></field>
</block>
</value>
<value name="B">
<block id="Ci|[%4CA-,ruBNk-qcrb" type="variables_get">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="5UR.G|2u48?w)U{Z#BRb" type="control">
<mutation delay_input="false"></mutation>
<field name="OID">0_userdata.0.TTS.AlleGeraete</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block id="gFO4!P8I6L$X^EO*JdTV" type="variables_get">
<field id="9bZ+SVj%$FZ4-|02x~-b" name="VAR" variabletype="">ttsContent</field>
</block>
</value>
<next>
<block id="y}~N]:Tu78Vn![3`6Sod" type="control">
<mutation delay_input="false"></mutation>
<field name="OID">0_userdata.0.TTS.Queue</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block id="S?EhR`:raN#R28cSACXh" type="convert_object2json">
<field name="PRETTIFY">FALSE</field>
<value name="VALUE">
<block id="uHk:s5/w-`ret$P8lwH^" type="variables_get">
<field id="Ys,h8KBm$.J$uF(7/#Ix" name="VAR" variabletype="">Queue</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</xml>
Blockly Export Anwesenheitscounter
<xml xmlns="http://www.w3.org/1999/xhtml">
<variables>
<variable id="fQg0@`zMDgIn-poTW2%H" type="">AnzahlAnwesender</variable>
<variable id=",YkGP6y^HQ4cv)6PN`sm" type="">i</variable>
</variables>
<block id=":+]]pb78P{uGI^ddKBO*" type="on_ext" y="-12" x="63">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow id="|rEJ$?8FPeZi$0PzLT2J" type="field_oid">
<field name="oid">default</field>
</shadow>
<block id="--GKQ_=@pYzAlEBH3S^1" type="selector">
<field name="TEXT">channel[state.id=alias.0.Anwesenheit.*]</field>
</block>
</value>
<statement name="STATEMENT">
<block id="m4doZo86d7C$QUo0$1q|" type="variables_set">
<field id="fQg0@`zMDgIn-poTW2%H" name="VAR" variabletype="">AnzahlAnwesender</field>
<value name="VALUE">
<block id="Vuk|Rt8tA7,IJj!Bk6GR" type="math_number">
<field name="NUM">0</field>
</block>
</value>
<next>
<block id="(oTGb9zH]5s7kG?1tNs3" type="controls_forEach">
<field id=",YkGP6y^HQ4cv)6PN`sm" name="VAR" variabletype="">i</field>
<value name="LIST">
<block id="tWdCCo/cNFD.Z$:wP9lj" type="selector">
<field name="TEXT">channel[state.id=alias.0.Anwesenheit.*]</field>
</block>
</value>
<statement name="DO">
<block id="^`9XQa$]xU8?@qB%~V{b" type="controls_if">
<value name="IF0">
<block id="X1{?y;5Cy]ou*h~_1~+?" type="logic_operation">
<field name="OP">AND</field>
<value name="A">
<block id="BoX/,~ARsu7o3XHU7JsB" type="logic_compare">
<field name="OP">EQ</field>
<value name="A">
<block id="c)bO[N8H3t5~32nS/SyB" type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block id="eECw=2s=Qyrz?SrN|#TO" type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block id="g5^?sJev]i-Mj8LMZ$I6" type="variables_get">
<field id=",YkGP6y^HQ4cv)6PN`sm" name="VAR" variabletype="">i</field>
</block>
</value>
<value name="FIND">
<shadow id="*R:cdG/Kee7{HSV+gJT:" type="text">
<field name="TEXT">.Handy.</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
<value name="B">
<block id="[R7`l@M-DKmf8@2c7X}2" type="logic_compare">
<field name="OP">EQ</field>
<value name="A">
<block id="oMyvlf4pqtl~lszJ.2SK" type="math_number">
<field name="NUM">0</field>
</block>
</value>
<value name="B">
<block id="dz@#96KZar/Qhb4[+~KO" type="text_indexOf">
<field name="END">FIRST</field>
<value name="VALUE">
<block id="hJIxlp-DkGTn24*djYd$" type="variables_get">
<field id=",YkGP6y^HQ4cv)6PN`sm" name="VAR" variabletype="">i</field>
</block>
</value>
<value name="FIND">
<shadow id="KFPBIa^zTHrL5%S7x7Qe" type="text">
<field name="TEXT">.Counter</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="EXvYX?UNSJ:^d68W$U(2" type="controls_if">
<value name="IF0">
<block id="-94XG+%*M0AtKi3Ku(@n" type="get_value_var">
<field name="ATTR">val</field>
<value name="OID">
<shadow id="oS(|;g9[0okmj(!wewTp" type="text">
<field name="TEXT"></field>
</shadow>
<block id="MoTx^qRi]75=mf87A#{S" type="variables_get">
<field id=",YkGP6y^HQ4cv)6PN`sm" name="VAR" variabletype="">i</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block id="87XsrMzOguhL_C}Jt$n2" type="math_change">
<field id="fQg0@`zMDgIn-poTW2%H" name="VAR" variabletype="">AnzahlAnwesender</field>
<value name="DELTA">
<shadow id="I7ywefSt,!5%%JguN={)" type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</statement>
</block>
</statement>
</block>
</statement>
<next>
<block id="n|F}!$-RKG8e+aC=wIZD" type="update">
<mutation delay_input="false"></mutation>
<field name="OID">0_userdata.0.Anwesenheit.Counter</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block id="0o3BSp%A5oC5M:gK[rZQ" type="variables_get">
<field id="fQg0@`zMDgIn-poTW2%H" name="VAR" variabletype="">AnzahlAnwesender</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>
Blockly Export TTS Alle Geräte
<xml xmlns="http://www.w3.org/1999/xhtml">
<block id="u_ourBfWonu[Zb+;+Z~T" type="on_ext" y="148" x="13">
<mutation items="1"></mutation>
<field name="CONDITION">any</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow id="bPtCyvQb;E{-t`_5)iIx" type="field_oid">
<field name="oid">0_userdata.0.TTS.AlleGeraete</field>
</shadow>
</value>
<statement name="STATEMENT">
<block id="H8o7T/G=ljg*Bt8p*=Jc" type="sayit">
<field name="INSTANCE">all</field>
<field name="LANGUAGE"></field>
<field name="LOG"></field>
<value name="MESSAGE">
<shadow id="|YpO.:iVUzd|4r8yLK=[" type="text">
<field name="TEXT">text</field>
</shadow>
<block id="M`xnPuSf7zI2298mZugZ" type="on_source">
<field name="ATTR">state.val</field>
</block>
</value>
</block>
</statement>
</block>
</xml>