NEWS
über Alexa Geräte steuern - Hilfe
-
Hallo zusammen,
kurz und knapp möchte ich über die Spracheingabe der Alexa einen Datenpunkt steuern/ändern.
Ich finde leider keine passende Anleitung dazu. wer kann mir helfen?
Das einzigste was ich gefunden habe ist dies hier: https://www.machs-smart.de/iobroker-sprachausgabe-mit-alexa-und-eigene-kommandos-programmieren/Da ist mir schon klar das ich den Summary von der Alexa ansteuere aber weiterhin schlägt jeder versuch fehl.
Wenn ich es einmal am laufen habe kann ich es ja beliebig für alles andere Umbauen.
Vielen Dank schonmal im vorraus, Gruß Schalle
-
@schalle-0 Eigentlich ist die Anleitung gut und richtig.
"Da ist mir schon klar das ich den Summary von der Alexa ansteuere...." Du sollst den Summary aber nicht ansteuern, sondern abfragen!
Poste am Besten mal dein Script. Ich habe sowas bei mir laufen. -
@geschild
Hi, ich kann leider nicht im Forum AntwortenIch habe mit der Zeit so bisschen was an Spielzeug gesammelt und fange jetzt erst an mich in die Materie rein zu lesen, daher war meine Ausdrucksweise schonmal falsch wie ich es gerade gemerkt habe.
Ja ich frage den Datenpunkt ab
Das ist des Script aus dem Tutorial:on({id: 'alexa2.0.History.summary', change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if ((obj.state ? obj.state.val : "").indexOf('WORT') + 1 > 0) {
setState("alexa2.0.Echo-Devices.G091EV0810460AUU.Commands.deviceStop"/deviceStop/, true);
setState("alexa2.0.Echo-Devices.G091EV0810460AUU.Commands.speak"/speak/, '100;Eigener Text');
}
});Ich würde gerne alles in Blockly machen.
Was da so passiert ist mir Gedanklich schon fast klar, mir fehlt es nur an Kenntnissen.
Als Bsp.: Alexa hört mein "starte Staubsauger" dieses wird als "Textwert" verglichen bis es übereinstimmt mit meinem eingegebenen Wert "starte Staubsauger" ist der Wert größer = 0 dann mach folgendes - Antworte nicht darauf - starte Staubsauger, Sprachausgabe ja mein Chef.Ich frag mich wo es hängt, vom logischen her dürfte es ja gehen.
Dies ist mein Blockly Script:<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on_ext" id="l3u_cJZVO=D!E:8cI*SC" x="38" y="13">
<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="K%o09$D|xauyapG7oea0">
<field name="oid">alexa2.0.History.summary</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="F^O%L}B]UfY,X|E:0(">
<value name="IF0">
<block type="logic_compare" id="~]_NNjW,+,aMrOzEz:S6">
<field name="OP">GT</field>
<value name="A">
<block type="text_indexOf" id="HiXs|bgl7Ex;PLDrd!R"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="L)_oRF7xz@rmo3zJLbZ">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="FIND">
<shadow type="text" id="8:q#e/+oIQ5Db.kfXPe@">
<field name="TEXT">starte Staubsauger</field>
</shadow>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id=")}QfeKV!-tZwA)Pje%hD">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="du-!#j}/BHM,WvmQ8L2=">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G090XG1214740AE4.Commands.deviceStop</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="O-u8+P]yeEk9k0BaN@z{">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="control" id="IvEQXR@FFr!j`$f30}Jl">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">ecovacs-deebot.0.control.clean</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="VC0vdvG:EBy|;tXC.mU0">
<field name="TEXT">Ja Chef mache ich</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml> -
@schalle-0 said in über Alexa Geräte steuern - Hilfe:
Ich habe mit der Zeit so bisschen was an Spielzeug gesammelt und fange jetzt erst an mich in die Materie rein zu lesen, daher war meine Ausdrucksweise schonmal falsch wie ich es gerade gemerkt habe.
Ja ich frage den Datenpunkt ab
Das ist des Script aus dem Tutorial:on({id: 'alexa2.0.History.summary', change: "ne"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if ((obj.state ? obj.state.val : "").indexOf('WORT') + 1 > 0) {
setState("alexa2.0.Echo-Devices.G091EV0810460AUU.Commands.deviceStop"/deviceStop/, true);
setState("alexa2.0.Echo-Devices.G091EV0810460AUU.Commands.speak"/speak/, '100;Eigener Text');
}
});Ich würde gerne alles in Blockly machen.
Was da so passiert ist mir Gedanklich schon fast klar, mir fehlt es nur an Kenntnissen.
Als Bsp.: Alexa hört mein "starte Staubsauger" dieses wird als "Textwert" verglichen bis es übereinstimmt mit meinem eingegebenen Wert "starte Staubsauger" ist der Wert größer = 0 dann mach folgendes - Antworte nicht darauf - starte Staubsauger, Sprachausgabe ja mein Chef.Ich frag mich wo es hängt, vom logischen her dürfte es ja gehen.
Dies ist mein Blockly Script:<xml xmlns="https://developers.google.com/blockly/xml">
<block type="on_ext" id="l3u_cJZVO=D!E:8cI*SC" x="38" y="13">
<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="K%o09$D|xauyapG7oea0">
<field name="oid">alexa2.0.History.summary</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="F^O%L}B]UfY,X|E:0(">
<value name="IF0">
<block type="logic_compare" id="~]_NNjW,+,aMrOzEz:S6">
<field name="OP">GT</field>
<value name="A">
<block type="text_indexOf" id="HiXs|bgl7Ex;PLDrd!R"> <field name="END">FIRST</field> <value name="VALUE"> <block type="on_source" id="L)_oRF7xz@rmo3zJLbZ">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="FIND">
<shadow type="text" id="8:q#e/+oIQ5Db.kfXPe@">
<field name="TEXT">starte Staubsauger</field>
</shadow>
</value>
</block>
</value>
<value name="B">
<block type="math_number" id=")}QfeKV!-tZwA)Pje%hD">
<field name="NUM">0</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="control" id="du-!#j}/BHM,WvmQ8L2=">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">alexa2.0.Echo-Devices.G090XG1214740AE4.Commands.deviceStop</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="O-u8+P]yeEk9k0BaN@z{">
<field name="BOOL">TRUE</field>
</block>
</value>
<next>
<block type="control" id="IvEQXR@FFr!j`$f30}Jl">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">ecovacs-deebot.0.control.clean</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="text" id="VC0vdvG:EBy|;tXC.mU0">
<field name="TEXT">Ja Chef mache ich</field>
</block>
</value>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</xml> -
@schalle-0 Bitte die Skripte in Codetags setzen und zusätzlich vom Blockly einen Screenshot zeigen.
Dann kann man besser helfen. -
on({id: 'alexa2.0.History.summary', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "").indexOf('WORT') + 1 > 0) { setState("alexa2.0.Echo-Devices.G091EV0810460AUU.Commands.deviceStop"/deviceStop/, true); setState("alexa2.0.Echo-Devices.G091EV0810460AUU.Commands.speak"/speak/, '100;Eigener Text'); } });
-
Ich habe in dein Script mal einen debugger eingefügt, dann siehst du in der Statuszeile, welchen Text Alexa ins summary schreibt.
Bei mir ist alles klein!!! geschrieben, das heisst: "starte staubsauger" sollte klappen -
@geschild
versteh ich das richtig das ich "alexa commands" in die erste Zeile mit reinschreibe und dann den Saugroboter starte?
Ich finde nur diese Commands Zeile.
Das ganze Script will aber nicht. Ich habe es jetzt so zum laufen gebracht:
Da kommt mir aber schon das zweite Problem das Elfriede zwar den Prozess startet aber alle anderen Befehle erkennt sie zwar aber sie fährt nicht nach Hause oder macht eine Pause. Was stimmt in meinem Script nicht?
auch das einzigeste Command reagiert nicht. auf dem Bild hatte ich noch nicht "wahr" drinne aber auch mit dem "wahr" wird das nichts.
-
@schalle-0 sagte in über Alexa Geräte steuern - Hilfe:
auf dem Bild hatte ich noch nicht "wahr" drinne aber auch mit dem "wahr" wird das nichts
und jetzt zeig Dein "fertiges" Blockly nochmal
-
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="xxxxx">Text</variable> </variables> <block type="on_ext" id="xxxxx x="-367" y="-106"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION">false</field> <value name="OID0"> <shadow type="field_oid" id="xxxxxx"> <field name="oid">alexa2.0.History.summary</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="xxxxx"> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_compare" id="xxxxx"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="xxxxx"> <field name="VAR" id="3#3Prx@$4|_[^n1-+Kyo">Text</field> </block> </value> <value name="B"> <block type="text" id="xxxxx"> <field name="TEXT">schicke Elfriede nach Hause</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="xxxxxx"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090XG1214740AE4.Commands.textCommand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="xxxxxx"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="xxxxx"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">ecovacs-deebot.0.control.charge</field> <field name="WITH_DELAY">FALSE</field> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="xxxxxx"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="xxxxx"> <field name="VAR" id="xxxxx">Text</field> </block> </value> <value name="B"> <block type="text" id="xxxxx"> <field name="TEXT">stoppe Elfriede</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="xxxxx"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">ecovacs-deebot.0.control.pause</field> <field name="WITH_DELAY">FALSE</field> </block> </statement> <value name="IF2"> <block type="logic_compare" id="xxxxx"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="xxxxx"> <field name="VAR" id="xxxxx">Text</field> </block> </value> <value name="B"> <block type="text" id="xxxxx"> <field name="TEXT">starte Elfriede</field> </block> </value> </block> </value> <statement name="DO2"> <block type="control" id="xxxxx"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">ecovacs-deebot.0.control.clean</field> <field name="WITH_DELAY">FALSE</field> </block> </statement> </block> </statement> </block> </xml>
-
@schalle-0 Wie gesagt, er erkennt zwar alles was ich gesprochen aber nur den Start führt er aus. Auch wenn ich alles rausnehm und nur "stoppe Elfriede" rufe passiert trotzdem nichts. Und ja der richtige Datenpunkt ist angewählt, mit einem Mausklick passiert das was ich möchte.
-
@schalle-0 sagte in über Alexa Geräte steuern - Hilfe:
Und ja der richtige Datenpunkt ist angewählt, mit einem Mausklick passiert das was ich möchte.
??
mach mal so und in den DP der Alexa "textCommand" kommt Text rein und kein logischer Wert... hab den im Blockly auch nicht integriert.p.s. wenn Du nicht möchtest dass Dir ein Fremder auf Deine Alexa eine Nachricht schickt dann nimm doch bitte die ID aus dem exportierten Code
-
-
@schalle-0 sagte in über Alexa Geräte steuern - Hilfe:
P.s. Dankeschön , erledigt
Dann bitte die Lösung auch hier teilen
-
@djmarc75
War nur des Dankeschön für den Ratschlag mit der ID ixxenProblem ist noch offen
-
@schalle-0 sagte in über Alexa Geräte steuern - Hilfe:
Problem ist noch offen
na dann zeig doch mal die Objektdaten von den Datenpunkten bitte
-
Das Problem wurde im Topic schon genannt. Elfriede ist nicht elfriede
Mache einfach den Befehl klein, entferne zur sicherheit leerzeichen an den Enden und dann frage gegen kleingeschriebenes ab. Die Befehle findest du unter Text
Das sind Testspracheingaben von mir. hab leichte Namen gewählt
2023-07-08 22:56:14.319 info script.js.Test.Skript_1: gehe nach hause 2023-07-08 22:56:07.898 info script.js.Test.Skript_1: gebe tim 2023-07-08 22:55:57.673 info script.js.Test.Skript_1: steuere tanja
-
@schalle-0 sagte in über Alexa Geräte steuern - Hilfe:
Auch mit dem eingefügtem Trigger läuft nur der Start, die anderen funktionen wollen einfach nicht.
Du hast auch ein ganz anderes Blockly als von mir vorgeschlagen
-
@ticaki
Ich verstehe dein Script noch nicht.
Soll es so sein das ich damit dann nicht nur den gleichen Wortlaut sagen muss sondern das auch ähnliche aktzeptiert werden?
Oder erklär mir dein Vorhaben bitte.Wie im ersten Post schon erwähnt arbeite ich mich erst in die ganze Materie ein. Sorry
-
@djmarc75
Soo habe es mal angepasst und funktioniert zur Hälfte.
Ich sage "schicke Elfriede nach Hause" wird dann der nächste Befehl gemacht nähmlich Pasuse. Dies ist auch wenn ich "stoppe Elfriede" sage dann startet Sie.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="3#3Prx@$4|_[^n1-+Kyo">befehl</variable> </variables> <block type="on_ext" id="l3u_cJZVO=D!E:8cI*SC" x="-367" y="-106"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="xxxxx"> <field name="oid">alexa2.0.History.summary</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="$/Xc5x:{SN.3:izHkE7("> <field name="VAR" id="3#3Prx@$4|_[^n1-+Kyo">befehl</field> <value name="VALUE"> <block type="on_source" id="q-R{LcF6k[w3nP[2UQ4*"> <field name="ATTR">state.val</field> </block> </value> <next> <block type="controls_if" id="F^O%L}B]*Uf*Y,X|E:0("> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_compare" id="mtubGykkK6NcM(.CN/wN"> <field name="OP">EQ</field> <value name="A"> <block type="text_indexOf" id="rh4#vW%bma3qMc[z+m@2"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="!y|?cKT,D!W`D!LbqtLh"> <field name="VAR" id="3#3Prx@$4|_[^n1-+Kyo">befehl</field> </block> </value> <value name="FIND"> <shadow type="text" id="kE-{aNNml!4+hMFV$:e|"> <field name="TEXT">schicke elfriede nach hause</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id="=:y4zPucpP}S^hE~vBRm"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="rXXMZ51deT3]gWI2$X6%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">ecovacs-deebot.0.control.charge</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="`v.nZVt/LWW~#DXiDyvI"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="Grx$W0Yc=5MUD4M4bxhG"> <field name="OP">EQ</field> <value name="A"> <block type="text_indexOf" id="AOd]9@bi,j$h;3?J?S$-"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="%-F@f**u;zPhQGbP{6##"> <field name="VAR" id="3#3Prx@$4|_[^n1-+Kyo">befehl</field> </block> </value> <value name="FIND"> <shadow type="text" id="rVoGi:.N{/j[~cun1n.t"> <field name="TEXT">stoppe elfriede</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id="P=GG*OkmmS,4kxRrES5,"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="Mz90T:Mh)n7B5T`jFMS)"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">ecovacs-deebot.0.control.pause</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="ET6l3/`G6?cXr(9_DRM9"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF2"> <block type="logic_compare" id="piXnZgYugf#0Cpvpvv9^"> <field name="OP">EQ</field> <value name="A"> <block type="text_indexOf" id="TTDWf678xZ[s/t%#o2v-"> <field name="END">FIRST</field> <value name="VALUE"> <block type="variables_get" id="xt:5VlgTN1c37B01rs=;"> <field name="VAR" id="3#3Prx@$4|_[^n1-+Kyo">befehl</field> </block> </value> <value name="FIND"> <shadow type="text" id="y,r`AUAF-Qf[WbfpZ9Z{"> <field name="TEXT">starte elfriede</field> </shadow> </value> </block> </value> <value name="B"> <block type="math_number" id="qP3|awt)|Xu3!jM@YbR#"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO2"> <block type="control" id="5ZR%putOa$:8vHI`1vA2"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">ecovacs-deebot.0.control.clean</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="P,%Q5*|~hN*+9,@W]hqq"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </xml>
Dies ist mal die Liste der Datenpunkte:
und soweit ist ja klar: starte - clean ; stoppe - Pause ; ab nach Hause - charge