Diese Beitrag ist von unsrem User "frankyboy73", Danke dafür 👍️
Hi, hier mal ein Script zur Temperaturabfrage mit Sprachausgabe. Dieses Scrip kann auch für sämliche anderen Abfragen und Sprachausgaben angepasst werden. Man kann es über Node Red oder Cloud nutzen, je nach dem was man verwendet.
Als Beispiel Sammeltemperaturabfrage über Node Red mit Sprachausgabe am angesprochenen Echo.
Als erstes erstellen wir zwei Objekte, eins zur Abfrage der Temperatur und eins für die Sprachausgabe.
Beim ersten Objekt (Temperatur) beim erstellen Typ Datenpunkt und Datenpunkt Typ Logigwert, als Rolle switch. Beim zweiten Objekt (AlexaSprachausgae) beim erstellen Typ Datenpunkt und Dtenpunkt Typ Zeichenkette, Rolle kann leer bleiben.
Das Objekt zur Temperaturabfrage verbinden wird über Node Red mit Alexa und lassen sie Geräte suchen.
Wenn Alexa das Gerät gefunden hat erstellen wir in der Alexa App eine Routine, Sprachdienst, wenn ich folgendes Sage, "Alexa, Temperaturen" (Das kann natürlich jeder nach seinen Vorstellungen anpassen), als Aktion dann SmartHome, Gerät steuern, Temperaturen einschalten.
Dann erstellen wir uns ein Script in dem das Objekt Temperaturen als Trigger verwendet wird. Ist der Wert des Objekts wahr, schreiben wird den Text der Ausgegeben werden soll in das Objekt AlexaSprachausgabe. In diesem Script setzte ich das Triggerobjekt (Temperaturen) auch wieder zurück, damit bei der nächsten Abfrage ne Änderung erkannt wird. Dieses Script kann man dann auch für weitere Sprachausgaben kopieren, sich noch mehr Objekte erstellen die man zur Abfrage mit Alexa verwenden kann und diese jeweils als Trigger benutzen und den Ausgabetext anpassen.
Dann erstellen wir uns noch ein Script für die Ausgabe an den Echos. In diesem Script ist das Trigger Objekt AlexaSprachausgabe. Es muss auf aktualisiert angefragt werden damit Alexa auch bei gleichem Text die Sprachausgabe erneut machen kann. In die Textfelder müssen die Namen der Echos eingegeben werden wie sie in Objekte unter Alexa 2, Echo Diveces stehen, dazu muss dann in der Zeile darunter (Steuere speak) das passenende speak Objekt des jeweiligen Echos ausgewählt werden.
Anmerkung: Bei dem Echo mit der Zeitverögerung handelt es sich um einen Echo Show, da klappt die Ausgabe nur wenn sie Verzögert kommt.
Funktion des Script: Wurde das Objekt AlexaSprachausgabe aktualisiert (in unserem Fall ja durch das Schreiben des Textet in das Objekt durch das andere Script) wird geprüft welcher Echo als letztes angesprochen wurde und bei diesem der Text ausgegeben.
Ich hoffe ich habe jetzt nichts vergessen. Es gibt bestimmt auch andere und bessere Wege das umzusetzten. Bin für jeden Tip zu haben. Kritik ist erwünscht.
Ich muss auf jeden Fall noch anmerken, das es sich hier nicht nur um mein Wissen handelt, sondern dieses zusammengetragenes Wissen von mehreren Usern ist. Vielen Dank dafür.
Hier noch die Codes:
Script Temperaturabfrage:
Spoiler
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="on" id="6t9J2~#:m:rlts5iw9,|" x="-363" y="13">
<field name="OID">MeineSchaltler.0.Temperaturen</field>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="controls_if" id="d-+k0QPJdj[pr7|7Qh^!">
<value name="IF0">
<block type="logic_compare" id="a`(tzb6c6:+vsJN2wl_0">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="Uz{iBG_O-,1V#8^Q,)ry">
<field name="ATTR">val</field>
<field name="OID">MeineSchaltler.0.Temperaturen</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="#1o@I`WBgN?DZ}5fQNt_">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id=";KZ%dpfzGST}|i874)6L">
<mutation delay_input="true"></mutation>
<field name="OID">MeineSchaltler.0.Temperaturen</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">1000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="-tmZQ=S^HCX)TvRtZNxt">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="3ML/{xV^{3GB7_s%J|;W">
<mutation delay_input="false"></mutation>
<field name="OID">MeineSchaltler.0.AlexaSprachausgabe</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text_join" id="5s*_oY^vaSVlN0V:rr9t">
<mutation items="16"></mutation>
<value name="ADD0">
<block type="text" id="go[hxe|{`Z(W^kEy;[u(">
<field name="TEXT">Ich schaue mal eben nach;</field>
</block>
</value>
<value name="ADD1">
<block type="text" id="c@x1lM%RL,^1kD_aA}LJ">
<field name="TEXT">Wohnzimmer;</field>
</block>
</value>
<value name="ADD2">
<block type="math_round" id="^,rGW@{RA2]11zf6eIA_">
<field name="OP">ROUND</field>
<value name="NUM">
<shadow type="math_number" id="yT,5o(b3R_OwkH8O%+~z">
<field name="NUM">3.1</field>
</shadow>
<block type="math_arithmetic" id="jXuUc)vcnD5d-Fr!jE:A" inline="false">
<field name="OP">ADD</field>
<value name="A">
<shadow type="math_number" id="tqB(~wLqAt1!2x4@xK1c">
<field name="NUM">1</field>
</shadow>
<block type="math_arithmetic" id="_;7P3FoWT,~C]E],Kz;`">
<field name="OP">DIVIDE</field>
<value name="A">
<shadow type="math_number" id="9h9Y)DsqDz_|Il=C4bm}">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="X,?5.J6J^lPyYQSJS/h`">
<field name="ATTR">val</field>
<field name="OID">fritzdect.0.Comet_119600824952.temp</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="Z@5c-.+z*Tm,9X4su6Wp">
<field name="NUM">2</field>
</shadow>
</value>
</block>
</value>
<value name="B">
<shadow type="math_number" id="|*Tn!uWO5df=Hcw%)=o]">
<field name="NUM">1</field>
</shadow>
<block type="math_arithmetic" id="!E//{KZh+An!VnEs9=9-">
<field name="OP">DIVIDE</field>
<value name="A">
<shadow type="math_number" id="9h9Y)DsqDz_|Il=C4bm}">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="/u;v`/kIHXnFIj!:esb|">
<field name="ATTR">val</field>
<field name="OID">fritzdect.0.Comet_119600808296.temp</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id=".]d0Tbwnmrz?*E=6O-DP">
<field name="NUM">2</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD3">
<block type="text" id="KQDW)4R6MK?BM8s}}OEW">
<field name="TEXT">Grad;</field>
</block>
</value>
<value name="ADD4">
<block type="text" id="isip4=ts~7UzQSz~1M8x">
<field name="TEXT">Küche;</field>
</block>
</value>
<value name="ADD5">
<block type="math_round" id="r.2oGB~S*?O`ooPWHi|Z">
<field name="OP">ROUND</field>
<value name="NUM">
<shadow type="math_number" id="yT,5o(b3R_OwkH8O%+~z">
<field name="NUM">3.1</field>
</shadow>
<block type="math_arithmetic" id="]6n#8VGMTWgF{TCA_@%j" inline="false">
<field name="OP">ADD</field>
<value name="A">
<shadow type="math_number" id="tqB(~wLqAt1!2x4@xK1c">
<field name="NUM">1</field>
</shadow>
<block type="math_arithmetic" id="C|*wMymdWc:;%Jn^:nd6">
<field name="OP">DIVIDE</field>
<value name="A">
<shadow type="math_number" id="9h9Y)DsqDz_|Il=C4bm}">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="ZR+pn8e~x*4iUb_6a@X`">
<field name="ATTR">val</field>
<field name="OID">fritzdect.0.Comet_119600221368.temp</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="ds|waE{91kJBM5wlQ8nM">
<field name="NUM">2</field>
</shadow>
</value>
</block>
</value>
<value name="B">
<shadow type="math_number" id="|*Tn!uWO5df=Hcw%)=o]">
<field name="NUM">1</field>
</shadow>
<block type="math_arithmetic" id="s+pf.=nR0=8ApB1+L]3k">
<field name="OP">DIVIDE</field>
<value name="A">
<shadow type="math_number" id="9h9Y)DsqDz_|Il=C4bm}">
<field name="NUM">1</field>
</shadow>
<block type="get_value" id="9xC+v6M]K!6,zbrx:Nml">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Spüle.DS18B20_Temperature</field>
</block>
</value>
<value name="B">
<shadow type="math_number" id="CllK~QWFG,Hg^*0V62`f">
<field name="NUM">2</field>
</shadow>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<value name="ADD6">
<block type="text" id="qC{m,Bw(4,yaGND62bf3">
<field name="TEXT">Grad;</field>
</block>
</value>
<value name="ADD7">
<block type="text" id="2Mt1=F/Pj!L)qW:R:ui3">
<field name="TEXT">Schuppen;</field>
</block>
</value>
<value name="ADD8">
<block type="math_round" id="Y66.#1hpax.v|E6gcwlC">
<field name="OP">ROUND</field>
<value name="NUM">
<shadow type="math_number" id="yT,5o(b3R_OwkH8O%+~z">
<field name="NUM">3.1</field>
</shadow>
<block type="get_value" id="nK;gn_%:LD:SfuoSaKTG">
<field name="ATTR">val</field>
<field name="OID">sonoff.0.Lichterkette.DS18B20_Temperature</field>
</block>
</value>
</block>
</value>
<value name="ADD9">
<block type="text" id="V194vGVy!x)eFM^RMBpx">
<field name="TEXT">Grad;</field>
</block>
</value>
<value name="ADD10">
<block type="text" id="b[`rax1^O4kgkFEx6nQa">
<field name="TEXT">Schlafzimmer;</field>
</block>
</value>
<value name="ADD11">
<block type="math_round" id="u/ThG6J)KEf|dn5:e1}|">
<field name="OP">ROUND</field>
<value name="NUM">
<shadow type="math_number" id="yT,5o(b3R_OwkH8O%+~z">
<field name="NUM">3.1</field>
</shadow>
<block type="get_value" id="~ZL_8Qo.EAFjKUTxjO!9">
<field name="ATTR">val</field>
<field name="OID">mihome.0.devices.sensor_ht_158d0001b90ae2.temperature</field>
</block>
</value>
</block>
</value>
<value name="ADD12">
<block type="text" id=";w`LO-q%.V|bqm}b1/pp">
<field name="TEXT">Grad;</field>
</block>
</value>
<value name="ADD13">
<block type="text" id="G%~:_Y#k`xP)yid86f,Q">
<field name="TEXT">Draußen;</field>
</block>
</value>
<value name="ADD14">
<block type="math_round" id="=q{=MxeGozYWC]QSj!,Q">
<field name="OP">ROUND</field>
<value name="NUM">
<shadow type="math_number" id="yT,5o(b3R_OwkH8O%+~z">
<field name="NUM">3.1</field>
</shadow>
<block type="get_value" id="jm,L.z+BRSRF8ZXWUN5?">
<field name="ATTR">val</field>
<field name="OID">mihome.0.devices.sensor_ht_158d0001c1a5b1.temperature</field>
</block>
</value>
</block>
</value>
<value name="ADD15">
<block type="text" id="haz]y)h[~v,OQM2tBNMN">
<field name="TEXT">Grad</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml>
Script Sprachausgabe:
Spoiler
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="on" id="6t9J2~#:m:rlts5iw9,|" x="-363" y="499">
<field name="OID">MeineSchaltler.0.AlexaSprachausgabe</field>
<field name="CONDITION">any</field>
<field name="ACK_CONDITION"></field>
<statement name="STATEMENT">
<block type="variables_set" id="OF[4}QN@g_]UB)xiJqVW">
<field name="VAR">Textausgabe</field>
<value name="VALUE">
<block type="get_value" id="RE}H(Lf9rJVP1FLzO]BF">
<field name="ATTR">val</field>
<field name="OID">MeineSchaltler.0.AlexaSprachausgabe</field>
</block>
</value>
<next>
<block type="timeouts_settimeout" id="qe=U){7I*Nu+!9Ullgb7">
<field name="NAME">timeout</field>
<field name="DELAY">1000</field>
<field name="UNIT">ms</field>
<statement name="STATEMENT">
<block type="controls_if" id="8}m~[3_%|ED*T?fwFd(^">
<value name="IF0">
<block type="logic_compare" id="%.Y[#7:[#j@z/gS}_/KP">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="|*N}hfN_G;PD[7#M;Ki5">
<field name="ATTR">val</field>
<field name="OID">alexa2.0.History.name</field>
</block>
</value>
<value name="B">
<block type="text" id="{,(X{:kgMplKbJgL{YE6">
<field name="TEXT">Hütte</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="yzAl,9m+r(#CV]3Z#9TE">
<mutation delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G090LF1072021MUJ.Commands.speak</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="q/?UeP0EP+^P1M9P:3,h">
<field name="VAR">Textausgabe</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="{Q|i2^XY!e[5poK#QBxG">
<value name="IF0">
<block type="logic_compare" id="I;%z?uV,~:1K=)0jA+==">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="[jLi]:BoyudjkMYW66x[">
<field name="ATTR">val</field>
<field name="OID">alexa2.0.History.name</field>
</block>
</value>
<value name="B">
<block type="text" id="Xp[g,uNDGu5U;9T0mvmy">
<field name="TEXT">Wohnzimmer</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="nRb=#X.r9TC{8(P73MZ,">
<mutation delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G090LA09738501R6.Commands.speak</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="5_%/6MorYz3yQh@O(kqK">
<field name="VAR">Textausgabe</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="}4@B0A:Js`KVy)mCYjY+">
<value name="IF0">
<block type="logic_compare" id="[C`tN8i0s,uKrV|?jNug">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="+T9.i:H}rK:6*4v+~RMi">
<field name="ATTR">val</field>
<field name="OID">alexa2.0.History.name</field>
</block>
</value>
<value name="B">
<block type="text" id="0d2[2NKbUU1/|%Vzc!n*">
<field name="TEXT">Küche</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="GUf056RZi(tY{wDAVpHE">
<mutation delay_input="true"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G000WV04845214KM.Commands.speak</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">3</field>
<field name="UNIT">sec</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="*gUT(`Ku2_WXD!~I`[@c">
<field name="VAR">Textausgabe</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="nw=v:eB7@2/-WY]B-[;R">
<value name="IF0">
<block type="logic_compare" id="`(1B^eMD#C0oaMd`:@Y,">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="EfNEXP6}f{]:M{F2Io)`">
<field name="ATTR">val</field>
<field name="OID">alexa2.0.History.name</field>
</block>
</value>
<value name="B">
<block type="text" id="?[UYA}TQ|!%e#y+MJA~X">
<field name="TEXT">Flur</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="o6KT4E?bD2B^FDIi*X^g">
<mutation delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G090U60884360GKK.Commands.speak</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="oEL82PCR5=?s2^TXm#PP">
<field name="VAR">Textausgabe</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id=";EY05WQLS@ZB{lckz4jg">
<value name="IF0">
<block type="logic_compare" id="6c#jtehwR}vw/e48GKT6">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="+SXvc0L!vwj[r}YhWB@s">
<field name="ATTR">val</field>
<field name="OID">alexa2.0.History.name</field>
</block>
</value>
<value name="B">
<block type="text" id="nHV_D%i-Cb~Oj%!i^v@R">
<field name="TEXT">Franks Echo Spot</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="h#7p{sN_@HID+R?gA^vh">
<mutation delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G070RQ1180920064.Commands.speak</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="Jx5OHD7k^l7BM0/@`7RJ">
<field name="VAR">Textausgabe</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="0A)+kt}?HxJQKb8:eV1)">
<value name="IF0">
<block type="logic_compare" id="@.*|pA(=8sE^OE}.mJTe">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="EcAI2.~(edL[~3p9,kf5">
<field name="ATTR">val</field>
<field name="OID">alexa2.0.History.name</field>
</block>
</value>
<value name="B">
<block type="text" id="0A0`TaWCES.cT`.Dpzo]">
<field name="TEXT">Gast</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="pYM#a_1lQJT#WGuSZCzM">
<mutation delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G2A0P307743407VE.Commands.speak</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="tGVP4d:v8y:FMiN3S+]9">
<field name="VAR">Textausgabe</field>
</block>
</value>
</block>
</statement>
<next>
<block type="controls_if" id="i:b-7q-xFGBl3,49TJFs">
<value name="IF0">
<block type="logic_compare" id="7%FMy#a!xvYt:=CR4f7_">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="oPsWcGlKHkxdDDlJ!rsc">
<field name="ATTR">val</field>
<field name="OID">alexa2.0.History.name</field>
</block>
</value>
<value name="B">
<block type="text" id=":3G%HW7}i@7|A!,2::it">
<field name="TEXT">Ankleide</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="%r*(mO`41-##DhFn%)M2">
<mutation delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G090SU0275060EEF.Commands.speak</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="2|Oy|KUH-xB]5-._K4[M">
<field name="VAR">Textausgabe</field>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</xml>