Jan 2017
Marko
amazon echo (alexa) mit Harmony Hub verbinden und TV-Sender schalten
Immer wieder lese ich, dass Besitzer eines Amazon echo* vor allem eine Integration mit einer Harmony Hub* vermissen.
Klar, der Amazon echo bzw. „Alexa“ ist noch etwas von der Marktreife und eine Offizielle Lösung wird früher oder später sicher verfügbar sein.
In meinem Wohnzimmer habe ich das nun „vorab“ bereits mit Hilfe eines FHEM-Servers und ein wenig Programmieren erreicht.
Wie das Genau geht beschreibe ich im folgenden.
Das ist die Voraussetzung
Ihr benötigt:
- Natürlich einen Amazon echo dot* oder ein Amazon echo*
- Einen installierten und Eingerichteten FHEM-Server
- Natürlich einen Harmony Hub*
das setze ich voraus:
- Die Harmony Hub ist bereits in FHEM eingerichtet. Ihr also via FHEM bereits den hub bedienen könnt
- Das Alexa Modul für FHEM ist eingerichtet (Alexa-Fhem)
Wenn ihr die Voraussetzungen erfüllt habt, solltet ihr also bereits ein Fhem-Switch per Alexa Steuern können „Alexa, Schalte XY ein“…
Auf geht’s: wir legen FHEM Schalter an.
Zunächst legt ihr für jeden Kanal den Ihr schalten wollt einen Dummy switch an. Im Beispiel verwende ich die Sender Pro7, Sat1 und DMAX.
Die Switches nenne ich TV.KANAL.XXX usw, so kann ich später leichter Aktionen für die komplette Gruppe ausführen.
Ausserdem definiere ich für jeden „Kanal-Schalter“ die Attribute
webCmd, room und eventMap.
!!!Gerade eventMap ist wichtig!
Sonst erkennt Alexa die Schalter nicht als Geräte.!!!
// Schalter erstellen define TV.KANAL.PRO7 dummy; define TV.KANAL.SAT1 dummy; define TV.KANAL.DMAX dummy; // Standart Werte für alle Schalter Setzen attr TV.KANAL.* webCmd on:off; attr TV.KANAL.* room TV-Kanal; attr TV.KANAL.* eventMap on off;
!!! Wichtig ist auch, dass ihr für jeden Kanal auch noch einen sprechenden „alexaName“ setzt z.B. „prosieben“ für TV.KANAL.PRO7 usw.. !!!
Das Ganze sieht jetzt in etwa so aus:
Immer wenn ein Sender eingeschaltet wird…
Nun erstellt man ein Notify. Dieses soll immer auslösen sobald ein TV-Kanal auf „AN“ geschaltet wird. Ich habe ihn notify.sender.wechsel genannt:
define notify.sender.wechsel notify TV.KANAL.*:on {}
Was das Script tun soll
Die Theorie ist es einfach:
immer ein Kanal auf „EIN“ geschaltet wird. Sollen alle andere auf „AUS“ geschaltet werden. (denn es kann ja immer nur ein Kanal eingeschaltet sein)
Als nächstes schaut das Script welche Nummer zu dem eingeschalteten Kanal gehört und sendet entsprechende Tastenreihenfolge über das Harmony Hub Modul.
Ihr müsst also ab Zeile 6 eure Kanalnummern eintragen.
Außerdem müsst ihr die Zeile 10 anpassen..
Ich sende z.b. Taste 0 mit meiner Hub mit so einer Zeile:
fhem "set harmony_41246248 Number0"
in meinem Hub ist mein Samsung bereits verbunden.
Der Samsung TV heißt im FHEM harmony_41246248 und der Befehl für Taste 0 ist Number0.
!!!Hier müsst ihr unbedingt euren Hub Name eintragen!!!
TV.KANAL.*:on { my $alloff = "^(?!".$NAME.")TV.KANAL.* off"; print $alloff; fhem "set ".$alloff; my %code_of = ( "TV.KANAL.DMAX" => "14", "TV.KANAL.PRO7" => "7", "TV.KANAL.SAT1" =>"6", ); foreach my $char (split //, $code_of{$NAME}) { fhem "set harmony_41246248 Number$char" } }
So sieht das Script bei mir aus:
Wenn man nun einen Kanal EIN schaltet gehen alle anderen Switches auf AUS.
Dann wird geschaut welcher Kanal eingeschaltet wurde, entsprechend der CODE ermittelt und gesendet.
Nun einmal ALEXA-FHEM neu starten und dann in der Alexa app nach neuen Geräten suchen
Das war es auch schon,
selbes Script „leicht modifiziert“ kann z.b. auch verwendet werden um Harmony Szenen zu wechseln.
Fragen beantworte ich gerne in den Kommentaren
10 Kommentare zu "amazon echo (alexa) mit Harmony Hub verbinden und TV-Sender schalten"