Zuhause-Status
Abhängig davon, ob man sich zuhause aufhält, schläft oder ausser Haus ist, sollen Geräte unterschiedlich geschaltet werden.
Dabei sollen
- beim Statuswechsel (also "ich komme nach hause", "ich gehe schlafen" etc) Geräte geschaltet werden
- regelmäßig geplante "at *" -Vorgänge ihr Verhalten auch davon abhängig machen, ob jemand zuhause ist oder nicht.
Der Status kann z. B. per Schalter gesetzt werden. Automatisiert geht das auch mit dem PRESENCE Modul
Lösungsansatz
Es werden ein 4-Tasten-Wandschalter fs20-s4a und eine 4-Tasten-Fernbedienung fs20-s4 mit identischem Hauscode und Tastencodes versehen, die Tasten angelernt und benannt in HomeStat1, HomeStat2, HomeStat3, HomeStat4. Der Wandschalter kommt z.B. neben die Wohnungstür, die Fernbedienung ans Bett.
Beim Drücken dieser Tasten wird der HomeStatus gesetzt. Ausserdem werden die gemäß dem neuen Status benötigten bzw. nicht mehr benötigten Geräte ein- oder ausgeschaltet:
- Bei Setzen von HomeStatus 1 / home (ich komme zuhause an)
- Media an
- Heizung auf Tagtemperatur
- WLAN an
- Bei Setzen von HomeStatus 2 /sleep (ich gehe schlafen)
- Alle Lampen aus ausser Schlafzimmer
- Media aus
- Heizung auf Nachttemperatur
- WLAN aus
- Bei Setzen von HomeStatus 3 / away (verlassen der Wohnung für kurze Zeit)
- Alle Lampen aus
- Media aus
- Heizung auf Nachttemperatur
- WLAN aus
- Bei Setzen von HomeStatus 4 / travel (ich verlasse die Wohnung für längere Zeit)
- Alles aus
- Heizung runterregeln auf 'Ferienprogramm'
- WLAN aus
Regelmäßig geschaltete Geräte berücksichtigen ebenfalls den HomeStatus, z.B. startet das Wakeuplight nur an Wochentagen und nur wenn ich zuhause bin.
Hardware-Definition
Um die o.g. Schalter zu realisieren, hier ein FS20-Beispiel. Selbstverständlich können ebenso gut Schalter aus anderen Hardwarefamilien verwendet werden.
define whg_HomeStat1 FS20 696c 00 define whg_HomeStat2 FS20 696c 01 define whg_HomeStat3 FS20 696c 02 define whg_HomeStat4 FS20 696c 03
Umsetzung mit LightScene
Zum Schalten der Geräte kann das Modul LightScene verwendet werden.
Dabei können die unterschiedlichen HomeStatus (die in dem Modul 'scenes' genannt werden) definiert werden.
In der ersten Zeile wird der aktuelle Schaltzustand der Geräte angezeigt. Im unteren Bereich erscheint der Zielzustand, zu dem beim Aktivieren einer "Szene" geschaltet wird.
LightScene-device definieren
Bei der Definition des LightScene-device wird gleich mit angegeben, welche Geräte geschaltet werden sollen.
In das Kommandofeld des webfrontends also eingeben:
define <NameDesLightScene-device> LightScene <Liste der Geräte>, für ein Ergbnis wie im screenshot also z.B.
define LS LightScene ez_FHT ez_LichtMaster ko_LichtKorridor sz_LichtMaster whg_Audio whg_WLAN wz_LichtMaster wz_MacMini
Hinweis: Um die Liste der Geräte später zu verändern/erweitern, kann im Detailscreen auf DEF geklickt werden.
Hinweis: Man kann das LightScene-device natürlich auch "HomeStatus" nennen :)
Ein weiterer vorbereitender Schritt ist die Zuordnung der zu verwendenden Befehle. Ohne weitere Angaben wird beim späteren Aktivieren einer scene immer der Befehl 'set' verwendet. In unserem Beispiel soll für das Gerät ez_FHT jedoch nicht ein einfacher set-Befehl, sondern set desired-temp verwendet werden. Um dies zu erreichen, wird auf dem betroffenen device das Attribut lightSceneParamsToSave gesetzt. In unserem Beispiel also
attr ez_FHT lightSceneParamsToSave desired-temp
Szenen (=unterschiedliche HomeStatus) definieren
Das Modul LightScene verwendet beim Anlegen einer scene den aktuellen Schaltzustand aller in der Definition angegebenen Geräte.
Schalten Sie also alle Geräte zunächst so, wie sie zukünftig immer geschaltet sein sollen, wenn Sie nach hause kommen.
Dann erzeuigen Sie eine scene durch Zusammenklicken des Befehls oder Eingabe des Befehls in das Kommandofeld set <NameDesLighSceneDevice> save <NameDerNeuenScene>, also z.B.
set LS save home
Szenen bearbeiten
Es wurde nun also für alle Geräte der aktuelle Schaltzustand als Sollzustand für die scene home eingestellt.
Vielleicht war aber ein Gerät zum Zeitpunkt des save-Befehls gar nicht im gewünschten Zustand, oder ein bestimmtes Gerät soll z.B. gar nicht geschaltet werden. In unserem Bespiel trifft Letzteres z.B. auf das Gerät ez_LichtMaster zu. Dieses Gerät soll beim Verlassen der Wohnung ausgeschaltet werden, beim Betreten der Wohnung jedoch nicht automatisch eingeschaltet werden. Beim Aktivieren der scene home soll also das Gerät nicht geschaltet werden.
Um in einer bestimmten scene für ein bestimmtes Gerät den Befehl zu ändern (oder zu löschen), wird der Befehl set <LightSceneDevice> set <scene> <device> <Befehl> verwendet. Dies ist recht komfortabel über den Detailscreen möglich.
In unserem Beispiel soll z.B. dem Gerät ez_LichtMaster "kein Kommando" zugeordnet werden, <Befehl> ist also leer´; auch für andere Geräte soll der Befehl möglicherweise angepasst werden:
set LS set home ez_LichtMaster set LS set home whg_WLAN on set LS set home ez_FHT desired-temp 21.0
Analog werden nun die Szenen sleep´, away (kurz weg) und travel (lange weg) erzeugt.
Wenn in einer Szene nur Geräte enthalten sind die sich über ein klick auf das icon passend schalten lassen kann man sich die Szene mit den Icons im Spaltentitel' der Detailansicht der LightScene zusammen klicken' und mit save sichern. Alle Geräte die einer besonderen Behandlung bedürfen sollten hierzu vorher über lightSceneParamsToSave konfiguriert werden oder danach von Hand mit dem oben erwähnten set angepasst werden.
Szenen aktivieren
Last but not least muss nun noch der im vorhergehende Abschnitt definierte Schalter bei Tastendruck die jeweilige Szene aktivieren:
define Zuhause notify whg_HomeStat1 set LS scene home define Zuhause notify whg_HomeStat2 set LS scene sleep define Zuhause notify whg_HomeStat3 set LS scene away define Zuhause notify whg_HomeStat4 set LS scene travel
Szenen prüfen
Um zu prüfen, welche Geräte beim Aktiviren einer Szene geschaltet werden, steht der Befehl get <LightSceneDevice> <scene> zur Verfügung.
get LS home gibt also z.B. aus:
ez_FHT: desired-temp 21.0 ko_LichtKorridor: on sz_Main: on whg_Audio: on whg_WLAN: on wz_MacMini: on
Umsetzung ohne LightScene
Der HomeStatus wird in einem Dummy gespeichert.
Bei Wechseln des Werts dieses dummy wird ein entsprechndes notify ausgelöst, das das Schalten der Geräte übernimmt:
define HomeStatus dummy attr HomeStatus room Wohnung define Zuhause notify whg_HomeStat1 set HomeStatus 1;;trigger whg_Audio on;;set whg_WLAN,wz_MacMini on;;set ez_FHT desired-temp 21.0 define Schlafen notify whg_HomeStat2 set HomeStatus 2;;trigger whg_MediaAus off;;set ez_FHT desired-temp 19.0;;set ez_LichtAlle,wz_LichtAlle,ku_LichtAlle,whg_WLAN off define KurzWeg notify whg_HomeStat3 set HomeStatus 3;;set ez_FHT desired-temp 18.5;;trigger whg_MediaAus off;;set whg_WLAN,Wohnung_Licht off define LangeWeg notify whg_HomeStat4 set HomeStatus 4;;trigger whg_MediaAus off;;set Wohnung_Licht,whg_WLAN,wz_MacMini off;;set ez_FHT desired-temp 17.0
Geräte abhängig von HomeStatus schalten - Beispiel WakeupLight
Auch beim Schalten von Geräten kann der HomeStatus berücksichtigt werden.
Das coding unterscheidet sich bei Verwendung von dummy oder LightScene nur leicht - siehe 4. Zeile:
define wakeup at *07:00 {\ {Log 3, ('wakeupLOG WE: '.$we)}\ {Log 3, ('wakeupLOG HomeStatus: '.(Value("HomeStatus")))}\ if ((!$we) and (Value("HomeStatus") < 3) {\ ###bei Umsetzung mit LightScene: if ((!$we) and (Value("LS") eq "home" || Value("LS") eq "sleep")) {fhem("define wakeup2 at +00:18:00 set sz_Stehlampe on") }\ {fhem("define wakeupOff at +00:45:00 set sz_Leselampe,sz_Stehlampe off") }\ {fhem("set sz_Leselampe dim100% 1280") }\ {Log 4, ("wakeupLOG: define wakeupOff at +00:45:00 set sz_Leselampe,sz_Stehlampe off")}\ }\ else {\ {Log 3, ("wakeupLOG: no wakeup today.")}\ }\ }