Mehrere Devices zu einer Szene zusammenfassen

Jeder der dich mit Smart-Home beschäftig, wird früher oder später auf sogenannte "Szenen" stoßen. Also eine Gruppe von Geräten, welche beim Aktiveren der Szene einen bestimmten Status annehmen. So lässt sich zum Beispiel vom Aktiveren der Szene "TV gucken" der TV einschalten, das Deckenlicht ausschalten, das Ambientlicht einschalten und der Soundreceiver auf die gewünschte Quelle und Lautstärke einstellen. Bei immer größerer Verbreitung von Sprachassisten gewinnen diese Szenen ebenfalls immer mehr an Bedeutung. Mit Befehlen wie "Alexa, schalte TV gucken an" lassen sich somit mehrere Geräte auf einmal schalten. Oft lassen sich solche Szenen direkt bei den entsprechenden Apps der Assistent einstellen, doch dort ist die Konfigurationsvielfalt oft begrenzt.

In diesem Beitrag möchte ich euch deswegen zeigen, wie ihr solche Szenen bereits in FHEM erstellt und dieser über Amazons Alexa oder Apples HomeKit steuern könnt.

Ich habe bereits über das Hilfsmodul LightScene geschrieben. Mit Hilfe dieses Moduls kann man eigene Lichtszenen erstellen und somit mehrere Devices zu einer Szene zusammenfassen. Dieses Modul ist vorrangig für Licht-Devices, mit dem "setcmd" lassen sich aber auch komplexere Befehle ausführen. Dennoch ist das Modul meiner Meinung nach suboptimal für komplexere Kommandos, welche nicht gerade einfache "set on/off-Befehle" sind. Bei komplexeren Szenen setze ich deshalb auf ein Dummy mit einem Notify. 

Die Szene als Dummy

Die eigentliche Szene wird als Dummy realisiert und wird wie folgt definiert:

define SceneTVgucken dummy

Damit die Szene an- und ausgeschaltet werden kann, erhält es noch das webcmd- und setList-Attribut:

attr SceneTVgucken webCmd on:off
attr SceneTVgucken setList on off

Die Szene lässt sich nun über ein "on" bzw. "off" geschaltet. Je nach Szene kann man nun noch ein Icon festlegen:

attr SceneTVgucken icon it_television

Da sich diese Szene nicht um eine Lampe handelt, kann man nun noch das Schalt-Icon ändern. Also anstelle einer Glühbirne, welches den aktuellen Status wiedergibt, kann man nun ein passenderes Icon festlegen. Sehr gut eignet sich dabei das grüne bzw. rote Quadrat. 

attr SceneTVgucken devStateIcon on:rc_GREEN:off off:rc_RED:on

Zum Schluss wird nun noch ein "alias" eingerichtet, damit der angezeigte Name etwas anschaulicher ist.

attr SceneTVgucken alias TV gucken

Notify - Das Gehirn der Szene

Damit mit Hilfe des Dummys die Szene geschaltet wird, wird ein Notify eingerichtet, welches alle Devices sozusagen zusammenführt. Das Notify reagiert dabei auf das Dummy. Wird dieses geschaltet, so reagiert das Notify und führt die Liste der gewünschten Befehle aus. 

Diese Befehle kann nun jede Art von Befehlen sein. Angefangen bei einfachem An- bzw. Ausschalten bis hin zu komplexeren Befehlen. Somit kann jedes Device wie gewünscht geschaltet werden. 

define notifySceneTVgucken SceneTVgucken set WZ_Papierlampe on; set WZ_Deckenlampe off; set WZ_TV on;

Wird nun die Szene durch das Dummy aktiviert, so wird die Papierlampe angeschaltet, die Deckenlampe ausgeschaltet und der TV eingeschaltet. Diese Definition ist relativ simpel. Das Notify lässt sich natürlich auch etwas komplexer definieren, so dass beim Ausschalten der Szene die vorherigen Zustände der betroffenen Device wiederhergestellt werden. Dazu passen wir das Notify über den DEF-Editor wie folgt an:

define notifySceneTVgucken SceneTVgucken {
​my $backup1 = ReadingsVal("SceneTVgucken","backup1",0);
my $backup2 = ReadingsVal("SceneTVgucken","backup2",0);

my $statusPapierlampe = ReadingsVal("WZ_Papierlampe","state",0);
my $statusDeckenlampe = ReadingsVal("WZ_Deckenlampe","state",0);

fhem("setreading SceneTVgucken backup1 $statusPapierlampe");
fhem("setreading SceneTVgucken backup2 $statusDeckenlampe");

set WZ_TV $EVENT; 
if($EVENT eq "on") {
  fhem("set WZ_Deckenlampe off"); 
  fhem("set WZ_Papierlampe on");}
else {
  fhem("set WZ_Papierlampe $backup1");
  fhem("set WZ_Deckenlampe $backup2");}
}

Bevor nun die Scene aktiviert wird, werden zunächst die gespeicherten Zustände geladen und anschließend die aktuellen Zustände als neue Backupwerte gesichert. Danach wird die eigentliche Szene je nach Status vom Dummy aktiviert bzw. deaktiviert. 

Die auszuführenden Aktionen können natürlich nun beliebig angepasst oder erweitert werden. Zudem lassen sich hier nun auch komplexere Befehle einrichten. 

Beim Aktivieren werden die Devices wie gewünscht geschaltet. Beim Deaktivieren der Szene werden die Devices auf die zuvor gesicherten Backupwerte wiederhergestellt. 

Szene mit Alexa und HomeKit schalten

Damit die Szene nun mit Alexa und HomeKita aktiviert werden kann, müssen natürlich die beiden Dienste mit FHEM verbunden werden. Wie hier FHEM-Devices mit Amazons Alexa steuert, könnt ihr hier nachlesen. Die Einrichtung von FHEM in Apples HomeKit wird hier erklärt. 

Damit das Dummy jedoch von den beiden Systemen erkannt wird, sind noch ein paar weitere Einstellungen notwendig.

Apples HomeKit

Damit Apples HomeKit das Dummy als kompatibles Gerät erkennt, sind ein paar Attribute notwendig. Als erstes sollte der Typ des Devices festgelegt werden. In diesem Fall ein einfacher Schalter.

attr SceneTVgucken genericDeviceTyp switch

Sollte beim Einrichten der Homebridge ein Filter durch einen separaten Raum eingerichtet worden sein, so muss sich das Dummy natürlich ebenfalls in diesem Raum befinden.

attr SceneTVgucken room Homekit

Anschließend wird der Homebridge (das Gateway zwischen FHEM und HomeKit) mitgeteilt, welches Reading bzw. welcher Wert geschaltet bzw. gesetzt werden soll. Bei einem einfach on/off-Dummy ist dieser Eintrag jedoch nicht unbedingt erforderlich. 

attr SceneTVgucken homebridgeMapping On=state,valueOn=on,valueOff=/off/,cmdOn=on,cmdOff=off

Nach einem Neustart der Homebridge wird der Dummy nun in HomeKit erkannt und kann z.B. über Siri aktiviert bzw. deaktiviert werden. 

Amazons Alexa

Wollt ihr die eingerichtete Szene auch mit Amazons Alexa steuern, so solltet ihr vorab die Einrichtung von Alexa in FHEM abschließen. 

Habt ihr während der Einrichtung einen Filter angelegt, so muss sich das Dummy natürlich auch in diesem Raum befinden.

attr SceneTVgucken room Alexa

Die weitere Einrichtung ist gleich der beim HomeKit. Solltet ihr also die Szene auch in Apples HomeKit eingerichtet haben, sollte das Device nun bereits in der Alexa App auftauchen. Hier lässt sich dann auch z.B. der Name anpassen. 

attr SceneTVgucken genericDeviceTyp switch
attr SceneTVgucken homebridgeMapping On=state,valueOn=on,valueOff=/off/,cmdOn=on,cmdOff=off

Fazit

Mit Hilfe eines einfachen Dummys und einem Notify lassen sich somit allmöglichen FHEM-Devices zusammenschalten und zu einer Szene zusammenfassen. Dank des Notifys lassen sich komplexe Szenen einrichten und mann ist nicht mehr auf den Funktionsumfang der HomeKit- oder Alexa-App abhängig. 

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

Benachrichtige mich zu:
avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
wpDiscuz