Amazon Echo (Alexa) mit IP-Symcon verbinden

Man könnte ja als Beispiel im Konfigurationsformular eine weitere Liste ganz oben ergänzen. Hier legt man den Alexa Gerätenamen fest optional könnte man noch eine Instanz festlegen für den Fall das es irgendwann mal möglich sein sollte das IP-Symcon die passenden Variablen bei bestimmten Gerätetypen wie z.B. Homematic usw. automatisch aussucht.

Alle weiteren Listenfelder zu den Controler Types beinhalten dann nur noch ein Select Feld beim Alexa Namen das die Auswahl der Namen aus der ersten Liste beinhaltet. So kann man keine Namen doppelt vergeben und weist jedem Controller Type eine Variable zu die zu einem Gerät gehört.

Wenn IP-Symcon alle Variablen zu einem Gerät mit zugeordneten Controller Type bekannt sind, weis dann IP-Symcon bzw. das Modul auch was zu tun ist. Wenn ich z.B. einem Gerät einen Switch und Dimmer mit der jeweiligen Variable zuweise und Alexa sage dimme auf 0% wird dann vom Modul sowohl die Dimmer Variable auf 0 gesetzt als auch die Bool Variable des Switch Controllers auf false.

Außerdem kann ich dann auch so wie es gedacht ist sowohl Farbe verstellen als auch dimmen, das wüste ich ja momentan nicht wie das gehen soll, wenn ich keinerlei Skripte sondern nur Variablen einbinden kann und anscheinend zur Zeit eine Variable einem Alexa Gerät entspricht.

Danke, wollte nur Rückmeldung geben das es funktioniert wenn man den Satz so ausspricht.

Du hast voll und ganz recht, dass sich manche kommende Geräte nicht mit einer Variablen darstellen lassen. Du musst gar nicht bis zum Entertainment hochgehen, auch schon bei den Thermostaten gibt es die Variante mit zwei oder drei Stellpunkten. Wenn man das umsetzt benötigt man natürlich auch mehrere Variablen. Bei den bisher implementierten Geräten ist das meiner Meinung nach allerdings nicht der Fall. Der Farblampe wollen wir demnächst übrigens auch noch die Dimm-Funktion hinzufügen, da sich auch diese wunderbar mit dem Farbwert darstellen lässt. Ein gedimmtes Weiß ist beispielsweise grau, etc.

@buumas: Dann wird das Problem wohl auf der Verbindung zwischen Alexa und Symcon liegen. Was meldet Alexa zurück, wenn du das Gerät schaltest? Wie sieht es aus, wenn du die App benutzt?

Ich gehe ja nur davon aus was es für Alexa schon gibt und was dann hoffentlich auch bald in Deutschland nutzbar ist nicht nur in dem englisch sprachigen Raum. Daher fände ich es halt gut wenn man sich jetzt schon im Laufe der Entwicklung bzw. Beta Tests Gedanken macht wie man dies dann auch in IP-Symcon so abbilden kann das man diese Geräte voll nutzten kann. Ich würde ja gerne in Zukunft diese Dinge über IP-Symcon steuern, dazu ist es ja da, und nicht lauter einzelnen Skills nutzten müssen, damit die Geräte voll mit allen Funktionen unterstützt werden und steuerbar sind.

Wie ist das dann geplant umzusetzen, dann doch mit einer zweiten Variablen oder geht das nur mit der einen Variable?
Zur Zeit kann ich IP-Symcon hier noch nicht produktiv nutzten, da ich zwar die Farbe einstellen kann aber nicht dimmen, das ist ja eine andere Variable. Wenn ich dimmen will, sagt mir Alexa, das wird nicht vom Gerät unterstützt, daher bin ich da leider dann zur Zeit nach wie vor bei Farblampen auch andere Skills angewiesen, mit denen ich die Lampe auch voll steuern kann.

Folgenden Test habe ich jetzt gemacht:

  • eine Boolean Variable angelegt mit dem Profil ~Switch und einem automatisch erstellten Aktionsskript
  • diese Variable in der Alexa Instanz unter Light (Switch) als „Testlicht“ eingetragen.
  • Alexa die Geräte suchen lassen (‚Alexa, suche meine Geräte‘). Antwort: ‚… Ich habe eine neue Lampe mit dem Namen ‚Testlicht‘ gefunden. …‘
  • in der Alexa App wird unter Geräte das ‚Testlicht‘ angezeigt, wähle ich das Gerät jedoch aus, so wird der korrekte Zustand nicht angezeigt.

Ursache ist wohl, dass Symcon den ReportState Request nicht korrekt beantwortet:

ProzessRequest: {"directive":{"header":{"namespace":"Alexa","name":"ReportState","payloadVersion":"3","messageId":"82375406-421c-4477-a449-02e2fbf00160","correlationToken":"AAAAAAAAAQAWxHGYxHvHTNlHKuFX0\/X9BAIAAAAAAAAkN\/6cQ\/+8bJpjH3dExaJ5vIP5erXQifwF58Rs9+89v1FkMFJlU1Q3wNKQeJ3jatyclSBs4920ZbVpglBjXD4LkAYUFMzz086BmVVL8XmyCRq5BLc3DNmwqLJ3xHEfkhzzto1X289PhYTnE8\/rG7ADUfUosD8Yj6aN4F9PCrVkIIDNux9jmrSVLmgCxTT2npOuryUudxhRNDmhah3A+Jim+C91RyuAE4\/k83V1RQEHdFpUJpnZaRxwyQX4DCZocQvbo5rwVdeR2EMr3lqC9Xztot0SNQy4wDdursfpZNK\/Oud5H2+lV7x3qC0FIBFvJCEPNIzKmo1S0lzUWg3tAjTQdqZ8DBvkwWhJ0vcO3KtZ2W64Ic5vVGSHBsh4U1IkL2xNnU2fNOEuDeqIRlx0Rw0un9J0lLzgaQOT+Bykwlh0W6Ul9f6tzc6i3yIim5OoOtc9Ygs64y6bmfmRW4QHMrcSHsSoAroBcfQaSBkMGQRhK24w\/hH7D44b1o5X7fmgNmMLRaSpXRP+2vq7JctP\/tXTNfWQ1bQ9QEfDRRQ3A0oT7fyGYcZj9YMHfbkR4DdZwAR0r3D++\/4zr9IFOGht3EyoRcToLxTDiY3CR3Pd\/86ymUlRj9MC4Lpffbrd3DhH2rNDBumSNeHRDDH\/ANQW9kwKvJlW4rvKvGQG8pdvGq7+nA7\/U1U="},"endpoint":{"scope":{"type":"BearerToken"},"endpointId":"8","cookie":[]},"payload":[]}}

Response: {"properties":[],"payload":{},"eventName":"StateReport","eventNamespace":"Alexa"}

  • versuche ich, das ‚Testlicht‘ in der Alexa App zu schalten, so versendet Alexa erst gar keinen neuen Request zum Schalten - vermutlich weil der zyklische ReportState Request ja schon fehlschlägt.

Ich denke, das müsste sich bei euch 1:1 nachstellen lassen.

Gruß

Burkhard

Danke! Jetzt geht es bei mir auch. Ich musste erst verstehen, dass Alexa beim Aufruf von ‚Alexa, Licht aus‘ gar nicht auf die Namen der Geräte reflektiert, sondern dann alle Geräte der Gruppe vom Typ ‚Licht‘ ausschaltet.

Hat man also zwei Lampen in einer Gruppe (‚Deckenlicht‘ und ‚Wandlicht‘), so werden bei ‚Licht aus‘ beide Lampen ausgeschaltet.

Genau. Da wird man dann wohl nur die Geräte, die bei ‚Licht an/aus‘ geschaltet werden sollen, in die Gruppe aufnehmen dürfen. Die anderen wird man über ihren Namen ansprechen müssen.

Bin da aber auch noch am experimentieren.

Eine Frage an alle: gibt es irgendwo eine Dokumentation zu Alexa, wo die Zusammenhänge und vor allem auch die bislang unterstützten SmartHome Skill Eigenschaften beschrieben sind? Vom Preview Event habe ich da die Zahl 21 in Erinnerung …

Burkhard

Abschließen funktioniert :loveips:, Aufschließen will Alexa nicht wegen der Sicherheit und quittiert mit „Aus Sicherheitsgründen kann ich Smartgeräte noch nicht entsperren“, aber das ist auch gut so :D.

Gibt es für die Alexa API auch eine Redewendung um den Zustand vom Schloss abzufragen, ähnlich wie die Abfrage der Raumtemperatur oder brauche ich da nach wie vor einen Custom Skill für?

Understand the Smart Home Skill API

Frage in die Runde einen Typ für Rollläden gibt es ja nicht bei Alexa, wie habt ihr das gelöst das man sinnvoll auch von der Ansprache an Alexa einen Rollladen rauf / runter bzw. auf x% fahren kann?

@buumas: Bei mir funktioniert dein Beispiel einwandfrei. Die Anfrage von deiner Alexa sieht aber soweit korrekt aus. Hast du sonst irgendwelche Einstellungen an deinem Alexa-Modul gemacht? Wie sieht es aus, wenn du erst einmal alle Geräte bei Alexa verwirfst (oder zumindest die von dem Modul) und dann nochmal neu suchst? Ich habe leider spontan keine Idee, was das Fehlverhalten bei dir aussieht. Wie sieht die Konfiguration vom Alexamodul und der Schaltvariablen aus?

Ich bin etwas weiter gekommen: bei meinem Beispiel war in der Alexa Instanz dem Testlicht keine Variable zugeordnet:eek:
Ich vermute ich hatte das ‚Übernehmen‘ vergessen. Als Ergebnis fand dann die Funktion doDirective zwar die deviceID, aber call_user_func lieferte nichts.
Hier wäre es vielleicht schöner, wenn - bei leerer VariablenID - auch ein Fehler wie NO_SUCH_ENDPOINT
gesetzt würde.

Auch sollte es vielleicht nicht sein, dass bei der Gerätesuche Geräte mit leerer VariablenID berücksichtigt werden.

Ok. Nun habe ich die Variable zugeordnet, und Alexa neu suchen lassen. Damit klappt nun auch das Schalten des ‚Testlicht‘ und die Variable wird gesetzt.

Nutze ich aber statt des automatisch erzeugten Aktionsscript mein eigenes, dann bekomme ich die Fehlermeldung ‚Undefined index: CONFIGURATOR‘.
Ursache ist, dass $_IPS[‚SENDER‘] == ‚WebFront‘ ist, aber nicht wie sonst und dokumentiert $_IPS[‚CONFIGURATOR‘] gesetzt ist. Im V2 Modul war '$_IPS[‚SENDER‘] mit ‚AlexaSmartHome‘ gesetzt.

Wie soll es zukünftig sein?

//edit: Mein Problem von hier war auch in dem nicht gesetzten $_IPS[‚CONFIGURATOR‘] begründet. Ich habe dort nun eine Umgehung eingebaut:

if (!isset($_IPS['CONFIGURATOR'])) {
    $_IPS['CONFIGURATOR'] = 0;
}

Damit komme ich erst einmal weiter.

Ja, helfende Fehlermeldungen sind sicherlich noch eine gute Idee. Danke für die Recherche!

Ansonsten könnt ihr euer farbiges Licht jetzt auch dimmen, so dass durch das Dimmen die Farbe entsprechend aufgehellt oder abgedunkelt wird.

So, wir haben nochmal wegen den Systemvariablen überlegt. Wir schicken jetzt in allen Fällen als Sender VoiceControl. Der Sender wird auch für andere Sprachsteuerungssysteme verwendet werden. Im Falle von Szenen geben wir als VALUE an, ob die Szene aktiviert oder deaktiviert wird. Da die einfache Szene nur aktivierbar ist, wird VALUE für den Moment immer true sein.

Was wird denn zukünftig in $_IPS[‚SENDER‘] geschickt? ‚WebFront‘ ist eigentlich nicht richtig.

//edit: ups, da war ich zu spät mit meiner Frage

Genau, daher schicken wir da jetzt auch „VoiceControl“

Super, werde ich nachher gleich mal ausprobieren.

Ich würde gerne das Umschalten von Fernsehsendern als Szenen in Alexa anlegen. Da es unzählige Sender gibt und jeder Sender mit einem eigenen Skript aufgerufen wird, würde ich da eine Weile von Hand dran sitzen bis ich das Alles im Konfigurationsformular eingerichtet habe. Das gleiche gilt für weitere Skripte die ich gerne als Szenen anlegen will dies möchte ich automatisieren, um nicht Stundenlang einzelne Skripte nacheinander im Konfigurationsformular durchklicken zu müssen. Beim alten Alexa v1 Modul konnte man ja mit Links arbeiten, das war ja so was schnell per Skript erledigt.

Ich würde gerne per Skript Einträge im Alexa Modul ergänzen, also z.B. eine Kategorie durchsuchen und alles was an Skripten unter dieser Kategorie liegt dem Alexa Modul unter Szenen hinzufügen.

Ist das prinzipiell möglich, ich muss ja wohl nur eine Property des Moduls ändern? Wie wäre dazu vorzugehen, gibt es da vielleicht ein Skript Beispiel für, um Listeneinträge in einem PHP Modul per Skript zu ergänzen?

Besten Dank! Hast du auch eine Quelle, was bislang davon in Deutschland funktioniert?

Ich habe nun ein Schloss (HM-Sec-Key) eingebunden. Das Einbinden klappte und Alexa hat es erkannt.

In der Alexa App wird aber der Zustand (gesperrt/entsperrt) genau falsch herum angezeigt. Gibt es da noch etwas zu beachten?

So lange da keine Note steht, geht das theoretisch auch in Deutschland voraus gesetzt IP-Symcon unterstützt das dann auch. Bei Gerätetypen bei denen das noch nicht geht wie z.B. Entertainment Device steht da

Wann das dann hoffentlich auch in Deutschland verfügbar ist weis nur Amazon, man könnte ja aber zumindest schon mal Vorarbeit leisten auf Seiten von IP-Symcon, das dies dann, wenn es denn kommt, auch gleich unterstützt wird. Dokumentiert ist ja alles.