NEWS
iot Alexa Tutorial
-
Hallo zusammen,
ich bin gerade dabei mein KNX SmartHome von Edomi zu ioBroker zu übersiedeln. Ich kämpfe gerade ein wenig mit der Alexaintegration. Ich möchte gerne sagen können "Alexa schalte Poolpumpe" ein oder "Alexa schalte passiv ein". Gibt es dazu ein aktuelles Tutorial wie ich das umsetzte?
den iot Adapter hab ich schon erfolgreich mit Alexa verbunden, auch den ioBroker Skill hab ich schon aktiviert. Es zeigt mir im iot auch schon "Geräte" an, woher die kommen ist mir aber nicht ganz klar. Außerdem weiß ich jetzt auch nicht, wie ich oben genannten Beispiele umsetzen kann.
lg
Manfred -
@nullo83 Hoi Manfred
Drei Instanzen brauchst du dazu
- JS Scripte für Aktionen erstellen, abfragen, Schaltungen, Sprachausgaben ect..diese werden via IoT publiziert
- Cloud IoT-Verbindung zum publizieren zur Alexa App
- alexa2.0 zum ioBroker koppeln
Die JS Scripte kannst du dann bei Cloud IoT-publizieren
und in der Handy App suchen und ausführen per Sprache.Die "Alexa schalte Poolpumpe" erstellst du also in JS Scripte
Meine Standheizung sieht dann so aus im JS
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="timeouts_settimeout" id="DRR39?_e8I8-lWn+jjk#" x="-238" y="-337"> <field name="NAME">timeout</field> <field name="DELAY">100</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="on_ext" id="Jn=~!}C|}^{SYz,B?Q?X"> <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="Pvx_#rB*cRHVadN}Sag$"> <field name="oid">javascript.0.scriptEnabled.BMW_und_Torsteuerung.StandheizungEin</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="/1F.!Lw*/`L/Ogk#qBgo"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.BMWsonoff4er.POWER3</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="PCav5s`UqTmdmf}uyu`x"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="NYe)L7bM3b-0M!uw$Jt8"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="Y6?LqoUqmEwn=ydh3.kf"> <field name="TEXT">Puls 1</field> </shadow> </value> </block> </next> </block> </statement> <next> <block type="control" id="%asY+V$g^?l0;O4oI`m="> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.alexaAntwort</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="C5?[fcb`AP1pR[)Ye|78"> <field name="TEXT">Standheizung BMW wurde gestartet, bitte warten System wird hochgefahren</field> </block> </value> <next> <block type="debug" id="Y5_e,(X}2JBt?DsO%[2U"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="|r/=(+,iIXWB[DGCNv;]"> <field name="TEXT">Standheizung BMW wurde gestartet</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> </xml>
MOD-EDIT: Code in code-tags gesetzt!
Hoffe das Hilft
-
@nullo83 ich schreibe das gleiche wie @SwissMen , nur auf anderen Weg:
Der IoT-Adapter kann beliebige Datenpunkte als Alexa-Gerät (über den ioBroker-Skill) bereitstellen.
Den IoT-Adapter sowie den Skill unter Alexa hast du ja schon eingerichtet - prima.Unter
Instanzen
=>iot.0
=>Einstellungen
kommst du in die Konfiguration:
Da gibt es den Reiter "Intelligente Aufzählungen" - alles was du dort siehst sind vermutlich die Geräte die du schon in Alexa hast / die Alexa schon gefunden hat. Ich nutze das nicht und habe dort alles deaktiviert:
Was diese Aufzählungen sind und wie diese Funktionieren muss dir jemand anders Erklären. Richtig eingerichtet würden neue Geräte halt automatisch auftauchen. Da aber alles selber geskripted habem habe ich das alles deaktiviert.Interessant ist der Reiter
Alexa-Geräte
:
Dort kannst du beliebige Datenpunkte verknüpfen.
Steckdosen und Lampen in der Regel als True/False Datenpunkt (an oder aus), der Datenpunkt kann aus einem Adapter stammen oder ein von dir erstellter sein (in der Regeln dann unterhalb von0_userdata.0
Ich nehme hier mal den folgenden:
0_userdata.0.AlarmSystem.Global.active
Du gehst oben auf den
+
, dann öffnet sich der Dialog wo du den Datenpunkt auswählen kannst:
Bestätigen und einen Moment warten, es geht ein neues Fenster auf:
Hier kannst du den
Smart-Name
angeben - unter dem Namen kannst du den später (gleich im Anschluss!) über Alexa ansprechen. Und den Typ, der ist unter anderem für das Symbol in Alexa notwendig und ob Alexa den als Lampe behandelt. Wenn du mitOK
Speicherst siehts du wie der Eintrag entsteht und mit der Cloud synchronisiert wird. Der wird zunächst grün
und wenn das Grüne weg ist, ist es auch mit der Cloud synchronisiert. Jetzt kannst du Alexa nach neuen Geräten suchen lassen und er wird das Gerät finden.
Schaltest du es per Alexa ein oder aus so wird der Datenpunkt auf True oder False / Wahr oder falsch gesetzt.
Und das Geräte schaltet (Datenpunkt aus einem Adapter) oder dein Skript springt an (eigener Datenpunkt).Hat ein Gerät mehrere Eigenschaften, z.B. eine Lampe die man Ein-/Ausschalten kannst aber auch Dimmen (0 bis 100%), legst du die Lampe einfach 2x hier an, beide male unter dem exakt gleichen Namen, beide male als Lampe. Der True/False Datenpunkt muss dann aber
POWER
heißen, der Datenpunkt für die HelligkeitDimmer
. Er macht dann eine Gruppe daraus:
Der IoT-Adapter schaltet nur. Den kannst du nicht nutzen um den Status abzufragen bzw. in Alexa wird er dir den Status auch nicht anzeigen können.
Den Alexa-Adapter in ioBroker brauchst du nicht unbedingt dafür, den brauchst du wenn du Alexa von ioBroker aus steuern willst, z.B. um per Text ein Sprachkommando zu senden.
Edit: Typos korrigiert
-
ah vielen dank @bananajoe und @SwissMen für die ausführliche Erklärung. Mich haben die unzähligen Geräte unter Alexa-Geräte irritiert, aber als ich die intelligente Aufzählung deaktiviert habe wars mir dann klar. Kann auch schon die Poolpumpe steuern! Danke!
wenn ich allerdings jetzt zb sagen würde "Alexa mache alles dunkel" müsste ich über die Alexa-Adapter den Summary-Datenpunkt auslesen und via zb JS darauf reagieren und zb alle Lichter ausschalten, oder würde das auch über den iot Adapter funktionieren? Hab da zumindest keine textuelle Ausgabe des gesprochenen gesehen.
lg
-
@nullo83 sagte in iot Alexa Tutorial:
wenn ich allerdings jetzt zb sagen würde "Alexa mache alles dunkel" müsste ich über die Alexa-Adapter den Summary-Datenpunkt auslesen und via zb JS darauf reagieren und zb alle Lichter ausschalten, oder würde das auch über den iot Adapter funktionieren? Hab da zumindest keine textuelle Ausgabe des gesprochenen gesehen.
Du kannst - wenn du so etwas sagen willst was kein klares "Schalte ein/aus" beinhaltet auch so vorgehen:
- Baue dir ein Dummy-Gerät dafür, z.B. "macheallesdunkel" welches dann ja auf Ein/Aus reagieren würde
- Erstelle in der Alexa-App eine Routine die auf "mache alles dunkel" reagiert. Und in der Routine schaltest du dann deinen Dummy-Datenpunkt.
Natürlich könntest du - sofern vorhanden - gleiche alle Geräte in die Routine packen. Über ioBroker könntest du aber ggf. noch mehr machen.
-
@bananajoe alles klar, danke, damit sollte ich alles soweit mal transferieren können.
Ich hab mal in einem Thread gelesen, dass wenn man kein Dummy-Gerät angelegt hat und man dann eben sowas wie "mach alles dunkel" sagt, Alexa mit " ich hab kein gerät mit machallesdunkel gefunden". Auch wenn ich das dann mit dem Alexaadapter abfange und über iobroker weiter verarbeite. Stimmt das?
-
@nullo83 sagte in iot Alexa Tutorial:
@bananajoe alles klar, danke, damit sollte ich alles soweit mal transferieren können.
Ich hab mal in einem Thread gelesen, dass wenn man kein Dummy-Gerät angelegt hat und man dann eben sowas wie "mach alles dunkel" sagt, Alexa mit " ich hab kein gerät mit machallesdunkel gefunden". Auch wenn ich das dann mit dem Alexaadapter abfange und über iobroker weiter verarbeite. Stimmt das?
Das geht zwar auch, dauert aber viel länger, du wirst da so 2 bis 3 Sekunden Verzögerung drin haben. War früher nicht so, aber nachdem Amazon da viel umgebaut hat kommt vieles mit Verzögerung. Wenn ich das richtig im Kopf habe, kann der Alexa-Adapter im Moment immer nur ahnen das gerade ein Sprachbefehl da war (Lautstärke des Alexa-Gerätes wird aktualisiert( und fragt dann auf dem Server aktiv nach was gerade war. Daher die Verzögerung.
Ich habe so eine Routine für die Fernseher "Alexa, schalte Fernseher aus". Die macht nichts anderes als "ok" zurück zu geben. Über die History des Alexa-Adapters fange ich die ab und stelle fest, welche Alexa das gehört hat. Und schalte dann den Fernseher im gleichen Raum. Das hat aber wie beschrieben eine spürbare Verzögerung. Man sagt es, es dauert ein bis zwei Sekunden bis Alexa "ok" sagt, noch mal 2 bis 3 Sekunden später wird geschaltet.
Sage ich "Alexa, schalte Fernseher Wohnzimmer aus" welcher direkt als Gerät über den IoT-Adapter hinterlegt ist, ist der Fernseher schon aus wenn das "OK" kommt. -
@bananajoe alles klar, danke, somit steht dem umzug auf iobroker nichts mehr im wege
-
@nullo83 warum nicht direkt in alexa routienen erstellen?
-
@da_woody stimmt, ist halt alles gewachsen. und mit der alexa app konnte ich mich noch nie wirklich anfreunden; seit dem es die weboberfläche nicht mehr gibt bin ich da auch so gut wie nie drinnen.
-
@nullo83 sagte in iot Alexa Tutorial:
@da_woody stimmt, ist halt alles gewachsen. und mit der alexa app konnte ich mich noch nie wirklich anfreunden; seit dem es die weboberfläche nicht mehr gibt bin ich da auch so gut wie nie drinnen.
Die Alexa-Weboberfläche vermisse ich auch schmerzlich
-
@nullo83 klar, aber in der App sind Routinen schnell angelegt...
-
@da_woody Ich finde in der App nicht mal mehr den Punkt zum suchen nach neuen Geräten (die im IOT Adapter angelegt wurden). Wenn Ich über das "+" gehe und "Gerät hinzufügen" wähle, kommt nur ne Auswahl an Hersteller.
Könnt Ihr mir mal ein paar Screenshots aus der Alexa App schicken? Nur um sicher zu gehen dass Ich für das Spiel noch nicht zu alt bin.
Dank und Gruß, Burn. -
@burnrubber sagte in iot Alexa Tutorial:
@da_woody Ich finde in der App nicht mal mehr den Punkt zum suchen nach neuen Geräten (die im IOT Adapter angelegt wurden). Wenn Ich über das "+" gehe und "Gerät hinzufügen" wähle, kommt nur ne Auswahl an Hersteller.
Könnt Ihr mir mal ein paar Screenshots aus der Alexa App schicken? Nur um sicher zu gehen dass Ich für das Spiel noch nicht zu alt bin.
Dank und Gruß, Burn.in der App die Spracheingabe nutzen (der blaue Alexa Punkt unten rechts) und "Scanne Geräte" sagen?
-
@bananajoe sollte aber auch auf jedem alexa teil mit "alexa, gerätesuche" klappen.
-
@bananajoe Danke Dir für den Hinweis, das hat funktioniert. Schon interessant, nun müssen wir also wirklich mit der Peripherie verbal kommunizieren, um sie zu konfigurieren. Schaurig, wenn wir dann irgendwann mit ihr diskutieren, warum sie sich nicht konfigurieren lasen will / wird....
-
@da_woody Jawoll, hab's eben getestet, im IOT Adapter ein Gerät unbenannt und im Echo "alexa, gerätesuche" gestartet. Das unbenannte Gerät wurde als neues Gerät gefunden, das "alte" musste Ich manuell in der Alexa App löschen.
Vielen Dank für die Hinweise.