Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

Bau dir deinen eigenen Fibaro Alexa Echo Skill

kiliantv

Best Member
Boardveteran
Registriert
27. Januar 2008
Beiträge
22.779
Reaktionspunkte
17.378
Punkte
1.093
Ort
von weit weit weg
Bau dir deinen eigenen Fibaro Alexa Echo Skill

amazonEchoBanner-790x361.png


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
Du musst dich Anmelden oder Registrieren um diesen link zusehen!

Raspberry Pi + (32€) (Single Core 700 Mhz)

Raspberry Pi 2 (39€) (Quad Core 900 Mhz)" class="glossaryLink ">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
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
. 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!

Du musst dich Anmelden oder Registrieren um diesen link zusehen!

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

Konfigurieren der index.js

Fibaro-Skill-Source-Code.jpg


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

  • dein Home Center Lite / 2 muss von Aussen per DynDns erreichbar sein. Darauf, wie ein DynDns angelegt und im Router konfiguriert wird möchte ich jetzt nicht eingehen, sonst sprengt es den Rahmen des Artikels. Angabe der URL erfolgt an dieser Stelle ohne dem http Zusatz.
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.
  • <PORT> den von Aussen auf das Home Center weitergeleiteten Port
  • <USER> dein Benutzername auf dem Home Center, sollte wenn möglich noch ein „normaler“ Benutzer sein, also noch keine eMail, wie sie derzeit im Zuge der Migration von dem Fibaro Wizard erstellt wird.
  • <PASSWORD> – das zum Nutzer zugehörige Passwort.
  • <APPID> – diese erhältst du im Amazon Developer Center. Dies erkläre ich dir im nächsten Schritt.
Amazon Developer Center
Nachdem du dich im
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
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.

Amazon-Developer.jpg


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-Skill.jpg


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?

  • <USER>
  • <PASSWORD>
  • <APPID>
  • <URL>
  • <PORT>
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-Landesauswahl.jpg


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

Amazon-AWS-Lambda.jpg


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

Amazon-Aws-blank-function.jpg


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

  • Name: Frei wählbar, beschreibt deine Funktion- zum Beispiel: Fibaro
  • Runtime: Node.js 4.3
  • Code entry type: Upload a. ZIP file -> hier lädst du das zuvor erstellte ZIP File aus den beiden *.js Dateien hoch
  • Handler: index.handler
  • Role: a costum role -> und auf der sich nun öffnenden Seite wählst du eine der bestehenden Lambda Roles aus, zum Beispiel „lambda_basic_execution
    • als Policy Name: eine bestehende Policy, zum Beispiel: oneClick_lambda_basic_execution
    • mit dem Button „Allow“ rechts unten gehts weiter.
  • Memory 512MB
  • die weiteren Einstellungen bleiben wie voreingestellt.
Amazon-AWS-function-konfig.jpg


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.
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-Interaction-Model.jpg


Wenn du nun auf den „Next“ Button klickst, wird Amazon AWS mit dir schimpfen und dich darauf hinweisen, das die Slot Types fehlen. Und hier fängt die echte Fleißarbeit an.
Klicke auf den „Add Slot Type“ Button zwischen den beiden Feldern: Intent Schema und Sample Utterances.

Amazon-Aws-Slot-types.jpg


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 AWS einzufügen. Der Inhalt muss entsprechend auf deine Szenennamen angepasst werden.

Amazon-AWS-Slot-anlegen.jpg


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

  • slot_areanames.txt -> AREANAMES
  • slot_buttonlabels.txt -> BUTTONLABELS
  • slot_device.txt -> DEVICES -> Name der Geräte anzupassen
  • slot_devicetypes.txt -> DEVICETYPES
  • slot_directtypes.txt -> DIRECTTYPES
  • slot_heatingtypes.txt -> HEATINGTYPES
  • slot_lighttypes.txt -> LIGHTTYPES
  • slot_modulnames.txt -> MODULNAMES -> Name der Virtual Devices anzupassen
  • slot_names.txt -> NAMES
  • slot_rollotypes.txt -> ROOMTYPE
  • slot_rooms.txt -> ROOMS -> Name der Räume aus dem
    Du musst dich Anmelden oder Registrieren um diesen link zusehen!
    ist die größte Zentrale von Fibaro. Sie kann im Vergleich zur HCL mit eigenen LUA Scripts programmiert werden.
    Preis: ca. 500€

    Daten:

    • Intel Atom 1,6 Ghz Prozessor
    • Elegantes Aluminiumgehäuse
    • LAN & Z-Wave
    • 1GB RAM, 2GB SLC Festplatte
    • 4 GB MLC Recovery Disc

    [img class="alignnone wp-image-15759 size-medium" src="
    Du musst dich Anmelden oder Registrieren um diesen link zusehen!
    " alt="Fibaro Home Center 2" width="300" height="86" />" class="glossaryLink ">HC2 1:1 übernehmen
  • slot_roomtype.txt -> ROLLOTYPE
  • slot_statuswert.txt -> STATUSWERT
  • slot_szenenames.txt -> SZENENAMES
  • slot_toggles.txt -> TOGGLES
  • slot_variablenames.txt -> VARIABLENAMES
  • slot_yesno.txt -> YESNO
So sollte das ganze dann aussehen:

Amazon-Aws-slots-fertig.jpg


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.jpg


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.jpg


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 ;-)

Quelle: siio.de
 
Zurück
Oben