NEWS
über Alexa Geräte steuern - Hilfe
-
@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
-
@schalle-0
Im Prinzip würde ich diese 3 Befehle je als Routine in der AlexaApp anlegen - ohne Funktion - und die jeweilige Routine dann als Trigger verwenden.
Beispiel:
-
@schalle-0 sagte in über Alexa Geräte steuern - Hilfe:
@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
Nein, das geht nur über lange Falls abfragen.
Der lower case Befehlt macht aus: "Ich SCHREI GERNE" "ich schrei gerne". Damit ist sicher das die Prüfung gegen einen kleingeschriebenen Text nicht daran scheitert das ein Großbuchstabe drin ist.
-
@djmarc75
Ist dies ok wenn ich den Baustein direkt auf einen anderen lege da dieser nicht zu löschen ist? musste ich bei dem ersten "ID`s vom Selektor" und bei dem vorletzten "Elfriede Status" also "Text" gegen "wahr,falsch"ersetzten.Bei ID´s vom Selektor habe ich den Routine Ordner der Alexa genommen. Öffnen konnte ich Ihn nicht.
Der Gelb hinterlegte Baustein bedarf bitte weiterer Erklärung.
"erstelle Text aus" habe ich gefüllt mit dem Ordner in dem alle Alexa Geräte enthalten sind.
Wert vom Objekt ID - welche serialNumber?
Commands Speak ist von von Alexa der Datenpunkt Commands.
Elfriede Status habe ich nur reingeschrieben oder sollte da der DP von dem Staubsauger - Status rein?
Reicht es wenn ich nur die ID der Alexa rausnehme oder alle ID´s ixxen?
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="xxx" x="13" 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="xxx"> <field name="oid">default</field> </shadow> <block type="selector" id="xxx"> <field name="TEXT">alexa2.0.Echo-Devices.xxx.Routines</field> </block> </value> <statement name="STATEMENT"> <block type="control" id="xxx"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="xxx"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="comment" id="xxx"> <field name="COMMENT">Bestätigung vom angesprochenen Echo</field> <next> <block type="control_ex" id="xxx"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="j03`Jry=rCegI}fze6ZH"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="xxx"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="xxx"> <field name="TEXT">alexa2.0.Echo-Devices</field> </block> </value> <value name="ADD1"> <block type="get_value" id="xxx"> <field name="ATTR">val</field> <field name="OID">ID auswählen</field> </block> </value> <value name="ADD2"> <block type="text" id="xxx"> <field name="TEXT">alexa2.0.Echo-Devices.xxx.Commands.speak</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="xxx"> <field name="BOOL">TRUE</field> </shadow> <block type="text" id="xxx"> <field name="TEXT"></field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="xxx"> <field name="NUM">0</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> </xml>