Website-Icon Dein Smart Home Blog

Bau dir deinen eigenen Fibaro Alexa Echo Skill

Fibaro -Amazon Echo Skill

Vor kurzem hatte ich dir hier auf siio eine Lösung mit dem Rapberry Pi gezeigt, um verbundene Geräte des Fibaro Home Center mithilfe von Amazon´s Alexa zu steuern. Mit diesem Skill kannst du Geräte nicht nur steuern, sondern auch Informationen abfragen - und du brauchst kein Raspberry Pi.

Sprachassitenten sind momentan stark im Trend und werden, davon bin ich überzeugt, das Thema Smart Home in diesem Jahr vorantreiben. Mehr noch, Sie werden bald so selbstverständlich wie grafische Oberflächen von uns bedient werden.

Bislang gibt es von Fibaro noch kein eigenes Amazon Echo Skill - ist aber schon angekündigt und erste große Veränderungen im Hause Fibaro, wie der Wechsel von home.Fibaro auf das neue Portal "Fibaro-ID", lassen hoffen das es bald soweit ist. Doch wissen wir stand heute noch nicht, ob Amazon ein Custom Skill umsetzen wird, oder sich an das Amazon Smart Home Skill anbindet. Der Unterschied ist schnell erklärt und dann bin ich mit meinem Vorgeplänkel auch fertig:

Smart Home Skill:
Ermöglicht den generischen Aufruf von Geräten. Bislang ist nur das Steuern von Geräten, wie ein- / ausschalten, dimmen usw. möglich. Auf dieser Basis setzt auch Philips Hue oder die TP-Link Steckdose auf.

Alexa, schalte Waschmaschine ein.

-okay

Custom Skill:
Erfordert einen Invocation Name (Aufrufnamen) vor dem Befehl. Ermöglicht aber auch Informationen abzurufen, wie Beispielsweise die Temperatur in einem Raum, Status von Geräten oder nach offenen Fenstern fragen. Wird genutzt von RWE, Magenta Smart Home und eben von dem hier in diesem Artikel vorgestellten Fibaro Skill.

Alexa, frage Fibaro, welche Fenster sind geöffnet?

-Folgende Fenster sind geöffnet: Fenster Büro, Fenster Kinderzimmer, ...

Was ist das, was brauchen wir und ist das gut?

Wie Eingangs beschrieben, benötigen wir keinen Raspberry Pi. Was du dir gleich herunter lädst, ist ein komplettes Skill - so wie es von den Entwicklern auch bei Amazon eingereicht wird. Irgendwie müssen die Entwickler Ihre Arbeit ja auch testen, daher gibt es sogenannte Developer Accounts. Skills welche dort hochgeladen werden, sind automatisch auf dem mit diesem Account verknüpften Amazon Echo verfügbar. Das ist genau den Weg welchen wir nehmen werden.

Aber keine Angst, du musst nicht hart programmieren, ich verspreche dir das es ganz einfach ist - aber mit viel Fleißarbeit verbunden.

Wir brauchen dazu zwei Accounts:

An dieser Stelle in ganz wichtiger Hinweis: Beide Accounts können kostenfrei angelegt werden - aber - der AWS Account ist nur 12 Monate ab dem Datum der Registrierung kostenfrei. Siehe mehr hier. Daher muss bei der Registrierung eine Zahlungsart hinterlegt werden.

Skill von GitHub laden

Das Skill ist wie bereits angeführt keine offizielle Entwicklung von Amazon, sondern wurde wird von Alexander Naumann entwickelt. Sieh das Skill bitte auch so an - es ist nicht offiziell und steckt in der Entwicklung. Es wäre daher fantastisch, wenn Ihr in den Kommentaren Feedback gebt, was noch nicht geht, damit Alex es vielleicht umsetzen kann. Wie du gleich sehen wirst, ist es eine große Fleißarbeit, alle möglichen Variationen der Aufrufe einzuarbeiten. Daher bitten wir hier um eure Unterstützung!

Den Skill kannst du hier herunterladen.

Lade dir das ZIP File (GitHub Seite oben rechts) herunter und entpacke es.

Konfigurieren der index.js

Fibaro Skill Source Code

In dem ZIP Container findest du eine "index.js" Datei. Öffne diese mit einem Script-Editor.  Was du benötigst ist:

[alert variation="alert-info"]Dein Router ist somit immer über die DynDns Domain erreichbar. Damit auf Port 80 (Webanwendung) deine Fibaro antwortet, musst du diesen Port noch forwarden, also auf deine Fibaro weiterleiten. Sei dir aber bewusst, das du damit eine potentielle Tür zu deiner Fibaro ins Netz stellst. Befehle die via http übermittelt werden sind unverschlüsselt und könnten mitgelesen werden.[/alert]

Amazon Developer Center

Nachdem du dich im Amazon Developer Center registriert und eingeloggt hast (die Registrierung sollte mit der eMail erfolgen, mit welcher auch dein Amazon Echo verknüpft ist), klickst du oben im Kopfmenü auf Alexa - > Alexa Skills Kit. Hier legst du über den Button "Add a New Skill" ein neues Skill an.

Developer Center

Der "Skill Type" bleibt auf "Costum Interaction Model" (den Unterschied zu den anderen Optionen hatte ich ja Eingangs beschrieben).
Language = German (Deutsch)

Name: Dies ist frei wählbar, das ist der angezeigte Name.
Invoction Name: Das auch frei wählbar, aber viel spannender! Das ist der Aufrufname. Trägst du hier Fibaro ein, heißt folglich der Aufruf:

Alexa, frage Fibaro ...

Sobald du auf den Button "Next" geklickt hast, erhältst du auch die , welche du in die index.js (welche wir eben bearbeitet hatten), an der entsprechenden Stelle einträgst.

Amazon Developer Center - Skill erstellen

Bis zu diesem Punkt ist im Developer Center erstmal Stopp - unsere Fleißarbeit geht dort aber gleich weiter. Daher öffne das AWS Center am besten in einem neuen Tab, so das du dann gleich wieder in das Developer Center zurück wechseln kannst.

Amazon AWS Center

Du hast nun alle benötigten Informationen in die index.js Datei eingetragen?

Dann erstelle nun aus beiden *.js Dateien (AlexaSkill.js und index.js) eine ZIP Datei. Wie du das Paket benennst ist völlig egal.
Danach gehst du in dein Amazon AWS Account.

Hier klickst du oben rechts auf die Landesauswahl und wählst: EU (Irland) aus. (Alexa Service ist für EU Frankfurt noch nicht verfügbar).

Amazon AWS - EU Irland auswählen

Danach klickst du oben links auf Services und suchst nach "Lambda".

Amazon AWS - nach Lambda suchen

Nun erstellt du eine neue Funktion. Wähle "Blank Function" und als Trigger das "Alexa Skill Kit".

Amazon AWS - blanc Function erstellen

Im nächsten Schritt wählst du folgende Einstellungen:

Amazon AWS Function konfigurieren

Mit dem Button "Next" geht es weiter. Hier erscheint noch eine Übersichtsseite und du findest unten rechts den Button "Create function".  Das wars im AWS Account.

Zurück in den Amazon Developer Account

Auf der linken Seite siehst du quasi den "Fortschritt". Den Abschnitt "Skill Informationen" (dort wo du die App-ID erhalten hast, welche du vor dem Upload der ZIP auf AWS in die index.js eingetragen hast), haben wir vorhin bereits abgeschlossen.
Jetzt beginnt die eigentliche Fleißarbeit und viel copy & paste Arbeit.

In dem ZIP File, welches du vorhin von GitHub geladen hattest, waren neben der beiden *.js Dateien eine ganze Reihe Textfiles (*.txt). Diese werden wir gleich ALLE brauchen.
Klicke auf den "Add Slot Type" Button zwischen den beiden Feldern: Intent Schema und Sample Utterances.

Amazon Developer- Slot Types definieren.

Slot Types:

Für jeden benötigten Slot gibt es eine eigene Textdatei, dessen Inhalt du in den jeweiligen Slot Type kopieren und auf dein Home Center anpassen musst. Die Namen der Slot Types müssen in GROSSBUCHSTABEN eingegeben werden.

Beispiel: Beginne mit der Datei "slot_szenennames.txt. Benenne im AWS den Slot Type nach dem Namen der Textdatei, aber wie bereits beschrieben, in Grossbuchstaben - also: SZENENAMES
Dann öffne die"slot_szenennames.txt" Datei und kopiere dessen Inhalt um Ihn im Developer Center einzufügen. Der Inhalt muss entsprechend auf deine Szenennamen angepasst werden.

Amazon Developer: Slot Type anlegen

Das ganze ist nun mit allen Dateien zu wiederholen, wobei die Inhalte angepasst werden müssen:

Für den Abschnitt "Interaction Model" benötigen wir nun die Textdatei: "intent.txt". Öffne diese und kopiere dessen Inhalt im Developer Center in das Feld: "Intent Schema". Gleiches wiederholst du mit der Datei: "Utterance.txt", dessen Inhalt kopierst du in das Feld: "Sample Utterances".

Amazon Developer Center: Interaction Model

So sollte das ganze dann aussehen:

Amazon Developer - alle Slot Types angelegt

Nachdem du deine Fleißarbeit beendet hast klicke auf "Save", es wird das Build erstellt, das dauert eine Weile, danach geht es mit "Next" weiter.

Amazon Developer Configuration

Amazon Developer - Configuration

Du hast es fast geschafft. In dieser Seite wählst du noch als Endpoint: "AWS Lambda ARN (Amazon Recource Name)" aus. Danach setzt du die Checkbox bei "Europe". In das Eingabefeld unter Europa kommt die "ARN" Nummer, welche du im AWS Account findest. Also wechsle nochmal zurück in deinen AWS Account. Wenn du in der Maske der vorhin erstellten Funktion bist, findest du die ARN Nummer ganz oben rechts.

Amazon AWS ARN Nummer

Testen

Klicke nun auf "Save", nicht auf Next, dann dort gelangst du zu der Maske, um deinen Skill im Amazon Store freizugeben.

Wenn du nun alles richtig gemacht hast, frage Alexa doch ein paar Dinge - wie zum Beispiel:

Alexa, frage Fibaro wie warm ist es im Schlafzimmer ?

Alexa, frage Fibaro wie feucht ist es im Bad ?

Alexa, frage Fibaro welche Fenster sind offen ?

Alexa, sage Fibaro, stelle die Heizung im Wohnzimmer auf 24° für 30 Minuten.

Alexa, sage Fibaro, schalte die Lampen im Büro ein.

.. das Wort Fibaro ist natürlich durch dein eigenes Aktivierungswort zu ersetzen, welches du im Amazon Developer Center im Abschnitt "Skill Information" angegeben hast.

Hilf mit beim entwickeln!

Wie eingangs beschrieben, steckt dieser Skill noch mitten in der Entwicklung. Alexander, der Entwickler, kann natürlich nicht jedes Gerät zur Verfügung haben oder kommt auf die gleichen Fragestellungen, Aussagen ect wie Ihr. Postet doch bitte in den Kommentaren welche Funktionen Ihr umgesetzt haben möchtet- oder vielleicht schon habt. Alternativ könnt Ihr Fragen auch im Forum stellen, dort wird es wohl einfacher sein euch zu helfen, da Ihr dort auch Screenshots posten könnt. Einen Log findet ihr im Amazon AWS unter: Monitoring -> View logs in Cloudwatch. Wenn Ihr Probleme habt brauchen wir zwingend einen Screenshot des aktuellsten Logs.

Viel Spaß mit Alexa ;-)

Die mobile Version verlassen