NEWS
Skriptsammlung für den neuen ALEXA2.0 Adapter
-
Hallo zusammen,
ich versuche gerade über Alexa den Fernseher auszuschalten, bzw. einzuschalten. Ich hatte das bis gestern mit Homebridge gemacht, der Raspberry hat sich aber verabschiedet und nun wollte ich nicht extra für den TV einen neuen PI kaufen.Folgendes habe ich gemacht:
-
in IOBroker / Objecte / javascript.0.scriptEnabled die folgende Variable angelegt: Name: vAlexaTV

-
In der Instanz

ein neues Smartgerät mit dem Namen TriggerAlexaTV angelegt
-
In Blockly ein Script angelegt, dass auf die Varible reagiert:

-
Anschließend iot.0 neu gestartet und über die Webseite Alexa neue Smartgeräte suchen lassen.
-
Alexa hat das neue Gerät auch gefunden

-
Nun über die Alexa App eine neue Routine angelegt mit Sprachbefehl: Alexa,schalte tv aus und dann mit der Aktion Smartgerät "TriggerAlexaTV"
Alles gespeichert und getestet. Über die App selber kann ich die Funktion erfolgreich testen und der Fernseher wird an, bzw. ausgeschaltet. Wenn ich aber zu Alexa sagt "Alexa, schalte den tv aus" erhalte ich immer die Rückmeldung, der Trigger kann nicht gefunden werden.
Was mache ich falsch?
-
-
Habe den Fehler gefunden. Alexa sendet als Trigger immer "Alexa, schalte t.v. an" und ich hatte als Satz "Alexa, schalte tv an". Das kann wohl nicht geändert werden, da in der Routine kein Sonderzeichen wie ein Punkt gesetzt werden kann. Nun habe ich das TV durch Fernseher ersetzt und es funktioniert.
-
Hallo,
anbei ein Skript der die letzten Anrufe vorliest inkl. Uhrzeit. Es werden nur Anrufe vom aktuellen Datum berücksichtigt.
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id=";azz=uCTGBXNyd/0SAEt" x="-688" y="-87"><mutation items="1"></mutation> <field name="CONDITION">any</field> <value name="OID0"><shadow type="field_oid" id="sW!}aU3Gi9+ka~_!Wa99"><field name="oid">javascript.0.vAlexaSagAnrufListe</field></shadow></value> <statement name="STATEMENT"><block type="variables_set" id="H^Wy%qAv/BmW;sE/nZ;k"><field name="VAR">alexatext</field> <value name="VALUE"></value> <next><block type="variables_set" id="Gx/mw:m_izOpYx{@Lk)p"><field name="VAR">anz</field> <value name="VALUE"><block type="math_number" id="}+UH7L;^VthYU]z=g0*F"><field name="NUM">0</field></block></value> <next><block type="controls_forEach" id="xR/0#,CUOGLHQK=!Q-w4"><field name="VAR">i</field> <value name="LIST"><block type="convert_json2object" id="@C6w/;8o)*%oxJ@UT,8_"><value name="VALUE"><block type="get_value" id="/qU/gkpQm,.]-YY_L1(X"><field name="ATTR">val</field> <field name="OID">tr-064.0.calllists.all.json</field></block></value></block></value> <statement name="DO"><block type="variables_set" id="Otd~Mlm|z]3g8Q0p^`=s"><field name="VAR">pos</field> <value name="VALUE"><block type="math_number" id="*FRuMmk(T8;v+VQc3DM~"><field name="NUM">0</field></block></value> <next><block type="variables_set" id="%]9yo5qM?m^}^74-D/oY"><field name="VAR">anrufer</field> <value name="VALUE"><block type="text" id=")-o_KuQG)qLQ_:,)m_OG"><field name="TEXT">unbekannt</field></block></value> <next><block type="variables_set" id="fAU|Ej;;bY3%?[4T%.yR"><field name="VAR">anrufdatum</field> <value name="VALUE"></value> <next><block type="controls_forEach" id="orz4mSV=gNl%mayt{k=}"><field name="VAR">j</field> <value name="LIST"><block type="variables_get" id="-@5CcHPA:B{WFGD?9}QI"><field name="VAR">i</field></block></value> <statement name="DO"><block type="controls_if" id="[=SFT;CG~Z!}Qv_6!%~e"><value name="IF0"><block type="logic_operation" id="nE-NMM;w9-939EBoh[^/"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="EXHXJkT)K*3D%y[V8/Ax"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="3J;!g!2(]ul{N2+L{CU;"><field name="VAR">pos</field></block></value> <value name="B"><block type="math_number" id=",^J=^x]oT1BuIuccep(u"><field name="NUM">1</field></block></value></block></value> <value name="B"><block type="logic_compare" id="5ffi|wi3RT^.P{H`@L@/"><field name="OP">NEQ</field> <value name="A"><block type="variables_get" id=":%j4u:bAtqB{.d=-/d.r"><field name="VAR">j</field></block></value> <value name="B"></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="j1HH[{w}==ujX:swZf=K"><field name="VAR">typ</field> <value name="VALUE"><block type="variables_get" id="iZm34~7lg:`~-|Qj+XL7"><field name="VAR">j</field></block></value></block></statement> <next><block type="controls_if" id="yU_?RKy~M]Byp+z20m;1"><value name="IF0"><block type="logic_operation" id="w1CkK4,G=~U2PSI5};L0"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="}Ic~-io[2ya;!`#Dt-XB"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="mT}DaeA?j-]w@jqhR;yp"><field name="VAR">pos</field></block></value> <value name="B"><block type="math_number" id="g9=0@+{xcO#s-zQp0nHe"><field name="NUM">2</field></block></value></block></value> <value name="B"><block type="logic_compare" id="Ok)G~.gN_S@?4Z{-VP+P"><field name="OP">NEQ</field> <value name="A"><block type="variables_get" id="pgmkX`^RjBM;Vss.ka;9"><field name="VAR">j</field></block></value> <value name="B"></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="D-(}L)F;.KF!P4.6XKcK"><field name="VAR">anrufer</field> <value name="VALUE"><block type="variables_get" id=",[sZ/c2H:,)#VSe9-OgI"><field name="VAR">j</field></block></value></block></statement> <next><block type="controls_if" id="SS`Ca]=@Q!%UKD%=SQHm"><value name="IF0"><block type="logic_operation" id="S9LFfiQG/g/-J(~uA!/e"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="DCfM=V|@1#9pRWH779nh"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="E/c3a1-%;H{hy9If!HL%"><field name="VAR">pos</field></block></value> <value name="B"><block type="math_number" id="H@+MR5PLO_STRYHR/(B+"><field name="NUM">5</field></block></value></block></value> <value name="B"><block type="logic_compare" id="w*s!SSWTdc-svcQ)MsGy"><field name="OP">NEQ</field> <value name="A"><block type="variables_get" id="DJ~z`c`lBy4A5(}3)i_*"><field name="VAR">j</field></block></value> <value name="B"></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="FqA%[#fq/LyMm+;I*RRP"><field name="VAR">anrufer</field> <value name="VALUE"><block type="variables_get" id="jKU-Ur+A(gzJH=Xx:JXe"><field name="VAR">j</field></block></value></block></statement> <next><block type="controls_if" id="_w?7*llOp[6)e)o5jO,w"><value name="IF0"><block type="logic_compare" id=":hBS5;Nx4%_14RC:eGx3"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="0Gy{gheR5u}iF!6)cMxz"><field name="VAR">pos</field></block></value> <value name="B"><block type="math_number" id="eVEtOt#W=Qs?L?j?p(i#"><field name="NUM">9</field></block></value></block></value> <statement name="DO0"><block type="variables_set" id="+V98jJzLkcjdwxve][aa"><field name="VAR">anrufdatum</field> <value name="VALUE"><block type="variables_get" id="u6S]DGC|xjW,5;;IAR%."><field name="VAR">j</field></block></value> <next><block type="controls_flow_statements" id="eJd]I^WE;L3x`;N1=svx"><field name="FLOW">BREAK</field></block></next></block></statement> <next><block type="math_change" id="SOSx!Tp,ww0F=Ipoxq84"><field name="VAR">pos</field> <value name="DELTA"><shadow type="math_number" id=",`a^zzH0LZcBY@M8;uJC"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></next></block></statement> <next><block type="comment" id="mI7wi{z/b;#{OB.TkXq+"><field name="COMMENT">Typ 1 = angenommen, Typ 2 = missed (Typ 1 auch AB!)</field> <next><block type="controls_if" id="HnqX;*3~~sS;v[o8*Zb5"><value name="IF0"><block type="logic_compare" id=")uo92MC7.#C9_=1@Pd+2"><field name="OP">LTE</field> <value name="A"><block type="variables_get" id="_Cv6!Q9ZD8`VVr0g#]0L"><field name="VAR">typ</field></block></value> <value name="B"><block type="math_number" id="}aCLu#a2rc=|kgv|+{sI"><field name="NUM">2</field></block></value></block></value> <statement name="DO0"><block type="controls_if" id="k|!G/Xj?oA`b(/Kc-|1R"><value name="IF0"><block type="logic_compare" id="uHRur!#y`^X?vc3mNKW*"><field name="OP">EQ</field> <value name="A"><block type="convert_tostring" id="psi^4GjR6xXmU9rLPUAy"><value name="VALUE"><block type="time_get" id="NYBw`pidAU~K#eutu?zY"><mutation format="false" language="false"></mutation> <field name="OPTION">DD.MM.YY</field></block></value></block></value> <value name="B"><block type="text_getSubstring" id="!|(mm1/Xp?y3`k2=W+@."><mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"><block type="variables_get" id=";-^a@}aIM5mKBWNjtX:m"><field name="VAR">anrufdatum</field></block></value> <value name="AT1"><block type="math_number" id="=I;t4NntB/E_jilatK*{"><field name="NUM">1</field></block></value> <value name="AT2"><block type="math_number" id="z#ll|XhXTWf*X2st=hK+"><field name="NUM">8</field></block></value></block></value></block></value> <statement name="DO0"><block type="variables_set" id="4MqQA#su!5x*fg`QEaR2"><field name="VAR">tmp</field> <value name="VALUE"><block type="text_join" id="_{fO%DcZHDv(YjqN|+.U"><mutation items="6"></mutation> <value name="ADD0"><block type="variables_get" id="~|0|%^ZzX~%[oOm5;!%J"><field name="VAR">anrufer</field></block></value> <value name="ADD1"><block type="text" id="?YhfYv}KVbo|5CRZywXf"><field name="TEXT">hat um</field></block></value> <value name="ADD2"><block type="text_getSubstring" id="{L:3[y{3D}ibA]mMtGc="><mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"><block type="variables_get" id="5|yY+vuWW}:_0i%xYqQ#"><field name="VAR">anrufdatum</field></block></value> <value name="AT1"><block type="math_number" id="]v/aOee-W1K_lHC[wD:o"><field name="NUM">10</field></block></value> <value name="AT2"><block type="math_number" id="Cv?R*(FV#bD6s,bQXAR;"><field name="NUM">11</field></block></value></block></value> <value name="ADD3"><block type="text" id="u5fZHU#/xM|I/zXzT.W_"><field name="TEXT">Uhr und</field></block></value> <value name="ADD4"><block type="text_getSubstring" id="csz?P)@/[_=osgekZdNE"><mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"><block type="variables_get" id="8Qr2nQ]7V1.D/B5rKFFj"><field name="VAR">anrufdatum</field></block></value> <value name="AT1"><block type="math_number" id="`kMkBT[35quqk~N3H}A}"><field name="NUM">13</field></block></value> <value name="AT2"><block type="math_number" id="3gRaKyCY^^O,j9LaaatH"><field name="NUM">14</field></block></value></block></value> <value name="ADD5"><block type="text" id="RvwRh)|Wf*z|odx6hXqT"><field name="TEXT"> Minuten angerufen</field></block></value></block></value> <next><block type="variables_set" id="Re~~rNq{gaD7SF0MM]-T"><field name="VAR">alexatext</field> <value name="VALUE"><block type="logic_ternary" id="1!5a5vst3!y`Wl{IFTt-"><value name="IF"><block type="logic_compare" id="myxaS.9u5t`8ZwV;3pK2"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="R8GYMX}F`g!ZBo{D+k]_"><field name="VAR">anz</field></block></value> <value name="B"><block type="math_number" id="tSW1iA{d5EVQHN[Z+-tV"><field name="NUM">0</field></block></value></block></value> <value name="THEN"><block type="variables_get" id=":t%z[.];H-|t/WU%FE^)"><field name="VAR">tmp</field></block></value> <value name="ELSE"><block type="text_join" id="`1mJO@vgR)fU#CsbTy-m"><mutation items="3"></mutation> <value name="ADD0"><block type="variables_get" id="!k^RkI_Tp+tQLrJb~clx"><field name="VAR">alexatext</field></block></value> <value name="ADD1"><block type="text" id="9FXixkB1O.uj=W!zWhUc"><field name="TEXT">;</field></block></value> <value name="ADD2"><block type="variables_get" id="O7*;5,?x_]UOIEkj7OV0"><field name="VAR">tmp</field></block></value></block></value></block></value> <next><block type="math_change" id="BXCqiU7*0-%cE]@0M]!q"><field name="VAR">anz</field> <value name="DELTA"><shadow type="math_number" id="[kq,k~/SLxO,g_:DMu}r"><field name="NUM">1</field></shadow></value> <next><block type="controls_if" id="~Yq8]Xgt4y+k+(7IUKd!"><value name="IF0"><block type="logic_compare" id="42859)|d|Y6bHZG2}o?7"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="a7~!mlyA)h1A6ODLFLDJ"><field name="VAR">anz</field></block></value> <value name="B"><block type="math_number" id="08yPn#v84mn0=0q)[r]R"><field name="NUM">5</field></block></value></block></value> <statement name="DO0"><block type="controls_flow_statements" id="tBE}?*}^gMtd;1q`ApNS"><field name="FLOW">BREAK</field></block></statement></block></next></block></next></block></next></block></statement></block></statement></block></next></block></next></block></next></block></next></block></next></block></statement> <next><block type="control" id="`Qg!CDbvO0.dV/`|!D3d"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF1174832X09.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="variables_get" id="mjJFF5P]=q46l?dg`Tj~"><field name="VAR">alexatext</field></block></value> <next><block type="debug" id="Ns0b*WC0f!TpiS%JQ^[d"><field name="Severity">log</field> <value name="TEXT"><shadow type="text" id="2JciUzD(4a1E=jF@1vyY"><field name="TEXT">test</field></shadow> <block type="variables_get" id="#6H6rD3{_zs~oG}dO4S^"><field name="VAR">alexatext</field></block></value></block></next></block></next></block></next></block></next></block></statement></block></xml>
-
Anruferansage mit FritzBox tr-064. Klappt bei mir einwandfrei.
Ich habe noch eingebaut, dass bei Anrufen ohne EIntrag im Telefonbuch die Nummer angesagt wird.
Außerdem wird nur angesagt, falls jemand daheim ist.
Ich habe aber noch ein Problem:
Wie kann ich die Laustärke genau dann wieder anpassen, wenn die Ansage vorbei ist. Meine 5sek sind bei Namen OK, bei Nummern natürlich nicht.
on({id: 'tr-064.0.callmonitor.ringing', val: true, ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; var idEcho = "alexa2.0.Echo-Devices.GxxxxxxxxxxxxxQ"; var volume = getState(idEcho+".Player.volume"/*volume*/).val; var Anrufer = String(getState("tr-064.0.callmonitor.inbound.callerName").val); var Nummer = String(getState("tr-064.0.callmonitor.inbound.caller").val); // Wenn keiner da ist, dann brauchen wir auch keine Ansage if (getState("javascript.0.Anwesenheitssteuerung.Userlist.JemandDa").val == false ){ return; } if (Anrufer.length === 0){ // Gibt es einen Namen im Adressbuch oder nur eine Nummer log("kein name"); Anrufer = NummerInText(Nummer); } setStateDelayed(idEcho+".Player.volume"/*volume*/,70, 1700, false); setStateDelayed(idEcho+".Commands.speak"/*speak*/, (String('Anruf von ') + Anrufer), 2000, false); setStateDelayed(idEcho+".Player.volume"/*volume*/,volume, 5000, false); }); function NummerInText(Nummer){ var text = "unbekannt "; var einzeln = Array("null","eins","zwei","drei","vier","fuenf","sechs","sieben","acht","neun"); for (var i = 0; i <nummer.length; i++){/text/+="einzeln[parseInt(Nummer.substr(i,1))]" "/";/}/return/text;/<e=""></nummer.length;>@OstfrieseUnterwegs Mich würde mal interessieren wie du die Anwesendheitskontrolle vorgenommen hast
Michael