Harmony

Aus FHEMWiki
Version vom 15. Dezember 2015, 21:04 Uhr von Wmr72 (Diskussion | Beiträge) (Vergleich im DOIF durch Regex-Match ersetzt)


harmony
Zweck / Funktion
Anbindung Logitech Harmony Hub basierter Fernsbedienungen
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Multimedia
Modulname 37_harmony.pm
Ersteller Andre (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Das Fhem-Gerätemodul harmony bietet die Möglichkeit Logitech Harmony Hub basierte Fernbedienungen an Fhem anzubinden und so von Fhem aus Aktivitäten zu starten und zu stoppen, in Fhem auf das Starten und Stoppen von Aktivitäten über eine der mit dem Hub verbundenen Fernbedienungen zu reagieren oder auf Geräteebene jedes im Hub konfigurierte Gerät über IR, Bluetooth und/oder einen Smart Keyboard USB Dongle zu steuern.

Unterstützt werden zur Zeit die Modelle Ulitimate Hub, Ultimate Smart Control, Ultimate, Smart Keyboard sowie alle darauf basierenden Kombinationen mit Smart Control und Smart Keyboard Add-On.

Define

 define <hub> harmony [<username> <password>] <ip>

Hier sind username und password die myharmony Zugangsdaten und ip ist die IP-Adresse des Hub im lokalen Netz.

Für die Firmware-Versionen 3.x ist die volle Funktionalität des Moduls auch ohne Angaben von username und password gegeben. Ab Firmware 4.x muss beides angegeben werden. Sonst ist keine Steuerung auf Geräteebene möglich.

Allgemeines

Aktivitäten und Geräte lassen sich an allen Stellen entweder als ID oder als Name angeben. Wenn der Name angegeben wird müssen hierbei Leerzeichen durch einen Punkt ersetzt werden. Dies kann auch für eventuell andere im Namen vorhandene Sonderzeichen gelten.

Aktivitäten

Das Reading currentActivity enthält die gerade laufende Aktivität. Beim Wechsel zwischen Aktivitäten erzeugt es Events auf die in Fhem über notify reagiert werden kann. Das Reading previousActivity enthält die davor laufende Aktivität sofern diese bekannt ist. Dieses Reading erzeugt keine Events.

In den Internals currentActivityID und previousActivityID stehen die dazu gehörenden IDs der Aktivitäten.

Innerhalb einer laufenden Aktivität kann mit

 set <hub> command <command>

ein IR-Kommando an eines der beteiligten Geräte gesendet werden.

Geräteebene

Innerhalb und außerhalb einer laufenden Aktivität kann mit

 set <hub> command <id|name> <command>

ein IR-Kommando an eines der im Hub bekannten Geräte gesendet werden. Hierbei ist darauf zu achten, dass innerhalb einer Aktivität keine Kommandos verwendet werden sollten, die den Smart-State betreffen.

Fhem Devices auf Geräteebene

Es ist möglich sich für einzelne oder alle im Hub konfigurierten Geräte ein zugehöriges FHEM-Device anlegen zu lassen:

 set <hub> autocreate [<id|name>]

Beim Umschalten zwischen Aktivitäten wird in diesen FHEM-Devices wird im Reading power den in der Aktivität konfigurierten Einschaltzustand: on,off oder manual. Mit einem notify auf power Events lässt sich in Fhem auf einzelne Geräte reagieren.

Wichtig: Diese FHEM-Device spiegeln nicht den tatsächlichen Gerätezustand wieder, sondern den innerhalb einer Aktivität beabsichtigen Zustand. Der tatsächliche Zustand kann z.b. auf Grund von Empfangsproblemen abweichen.

Das get commands sowie die set command, hidDevice, text, cursor und special Kommandos auf Hub-Ebene stehen hier direkt und ohne Angabe von Device-ID oder Name zur Verfügung.

Kommandos an Fehm senden

Da es (zur Zeit) nicht möglich ist Geräte-Kommandos oder einzelne Tasten direkt vom HUB zu empfangen muss hierzu ein zusätzlicher Empfänger in Fhem eingebunden werden. Dies kann z.b. mit einem MCE-IR Empfänger oder per Bluetooth geschehen. Ein Fhem-Modul hierzu findet sich im in diesem Forenthread.

Smart Keyboard

Der Harmony Hub kann über Bluetooth oder die zum Smart Keyboard gehörenden USB-Dongel mit einem Rechner, Media PC oder sonstigem Gerät, das Tastatureingabe unterstützt, verbunden werden. Fhem kann diese Verbindung nutzen, um beliebige Tastendrücke an ein solches Gerät zu senden. Das können Texte sein, Cursorbewegungen oder die Power-, Multimedia oder sonstigen Funktionstasten, die das Gerät unterstützt.

Alle gesendeten Tastendrücke beziehen sich normalerweise auf das zur gerade laufenden Aktivität gehörende Tastatureingabegerät. Mit dem hidDevice Kommando lässt sich die Tastatureingabe auf jedes im Hub dafür konfigurierte Gerät umschalten.

Wichtig: Dieses Umschalten kann einige Sekunden dauern, da hierbei die bestehende Bluetooth-Verbindung getrennt und eine neue aufgebaut wird.

Es stehen die Kommandos text, cursor und special zur Verfügung.

Beispiele:

Gehe in PLEX auf die Library Musik und spiele das erste Item in der OnDeck Liste:

 set <hub> text M
 set <hub> cursor right
 set <hub> text p

Beispiele

Vorgeschaltete Funksteckdose ansteuern

Vorbereitung Harmony

Nachdem die Geräte mit Strom versorgt werden, benötigen Sie einige Sekunden, bis Sie ihre Einschaltsignale verarbeiten können. Diese Verzögerung wird durch ein Dummy Gerät in jeder Aktion erzeugt.

1) In MyHarmony einen Amazon Fire TV anlegen und ihm einen passenden Namen geben (z.B. Pause)

2) Unter "Geräte" dieses markieren und per "Ändern der Betriebseinstellungen" die Einstellungen aufrufen

3) Punkt "Ich möchte dieses Gerät eingeschaltet lassen, wenn Aktionen gewechselt werden und nur durch Drücken der Off-Taste ausschalten" auswählen

4) Einen harmlosen Befehl einfügen ("Search"), danach eine Verzögerung von 5000ms einbauen und dann noch einen Befehl ("Search"). Dies bewirkt eine Verzögerung von 5 Sekunden beim Ein- und Ausschalten

5) Unter Aktionen die Aktion auswählen und per "Einstellung ändern" das neue Gerät hinzufügen

6) Per "Diese Aktion anpassen" das neue Gerät an die erste Stelle schieben

7) Schritte 5-7 für alle Aktionen wiederholen


Konfiguration in FHEM

1) Der Harmony Hub muss existieren

 #Harmony Hub Wohnzimmer definieren
 define wz_harmonyhub harmony 192.168.123.123

2) Ihr benötigt eine fertig konfigurierte Funksteckdose (hier "wz_Multimedia")

3) Ihr baut eine Bedingung, die auf den Ein- und Ausschaltvorgang des Harmony Hub (hier wz_harmonyhub) reagiert und die Steckdose (hier wz_Multimedia) schaltet. Es wird eine zusätzliche Pause genutzt von 0 Sekunden bei der ersten Bedingung (wäre kontraproduktiv) und 10 Sekunden bei der zweiten Bedingung (DOELSEIF). Bei der Nutzung eines Beamers lässt sich hierüber die Abkühlzeit einstellen. Im Beispiel bleiben den Geräten somit 15 Sekunden zum Ausschalten und 5 Sekunden um die Empfangsbereitschaft herzustellen. Die erste Bedingung im DOIF ist eine Regex, da "currentActivity" bei mehrfachem Abschalten hintereinander immer wieder von "PowerOff" auf "Stopping PowerOff" wechselt.

 #Auf den Schaltvorgang des Hubs reagieren
 define wz_Multimedia_Automatik DOIF ([wz_harmonyhub:currentActivity] !~ /PowerOff/) (set wz_Multimedia on) DOELSEIF ([wz_harmonyhub:currentActivity] eq "PowerOff") (set wz_Multimedia off)
 attr wz_Multimedia_Automatik wait 0:10


Weblinks