Zuhause-Status: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:


== Lösungsansatz ==
== Lösungsansatz ==
Es wird eine Variable HomeStatus als dummy-device, also als Variable definiert.
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.
Desweiteren 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 neben die Wohnungstür, die Fernbedienung ans Bett.
 
Beim Drücken dieser Tasten wird HomeStatus auf 1, 2, 3 oder 4 gesetzt. Ausserdem werden die gemäß dem neuen Status benötigten bzw. nicht mehr benötigten Geräte ein- oder ausgeschaltet:
 


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 (ich komme zuhause an)
;Bei Setzen von HomeStatus 1 (ich komme zuhause an)
Zeile 41: Zeile 37:
: WLAN aus  
: 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, also der HomeStatus < 3 ist.
Regelmäßig geschaltete Geräte berücksichtigen ebenfalls den HomeStatus, z.B. startet das Wakeuplight nur an Wochentagen und nur wenn ich zuhause bin.






== Codings ==
== Hardware-Definition ==
  <nowiki>define HomeStatus dummy
Um die o.g. Schalter zu realisieren, heir ein Beispiel bei Umsetzung mit FS20. Selbstverständlich können ebenso gut Schalter aus anderen Hardwarefamilien verwendet werden.
attr HomeStatus room Wohnung
  <nowiki>
define whg_HomeStat1 FS20 696c 00
define whg_HomeStat1 FS20 696c 00
define whg_HomeStat2 FS20 696c 01
define whg_HomeStat2 FS20 696c 01
define whg_HomeStat3 FS20 696c 02
define whg_HomeStat3 FS20 696c 02
define whg_HomeStat4 FS20 696c 03
define whg_HomeStat4 FS20 696c 03 </nowiki>
 
== 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.
 
=== LightScene-device definieren ===
In das Kommandofeld des webfrontends eingeben: <br>
''define LS 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.<br>
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 aktuallen Schaltzustand alle in der Definition angegebenen Geräte.<br>
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 zeiotpunkt 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.<br>
Um also 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 wiederum auch über den Detailscreen möglich.<br>
In unserem Beispiel soll "kein Kommando" zugeordnet werden, <Befehl> ist also leer´:
set LS set home ez_LichtMaster
Zum Setzen einer anderen Solltemperatur wird also analog erfasst:
set LS set home ez_FHT desired-temp 21.0
 


== Umsetzung ohne LightScene ==
<nowiki>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 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 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

Version vom 25. Januar 2014, 11:52 Uhr

Abhängig davon, ob man sich zuhause aufhält, schläft oder ausser Haus ist, sollen Geräte unterschiedlich geschaltet werden.

Dabei sollen

  1. beim Statuswechsel (also "ich komme nach hause", "ich gehe schlafen" etc) Geräte geschaltet werden
  2. 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 (ich komme zuhause an)
Media an
Heizung auf Tagtemperatur
WLAN an
Bei Setzen von HomeStatus 2 (ich gehe schlafen)
Alle Lampen aus ausser Schlafzimmer
Media aus
Heizung auf Nachttemperatur
WLAN aus
Bei Setzen von HomeStatus 3 (verlassen der Wohnung für kurze Zeit)
Alle Lampen aus
Media aus
Heizung auf Nachttemperatur
WLAN aus
Bei Setzen von HomeStatus 4 (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, heir ein Beispiel bei Umsetzung mit FS20. 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.

LightScene-device definieren

In das Kommandofeld des webfrontends eingeben:
define LS 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.
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 aktuallen Schaltzustand alle 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 zeiotpunkt 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.
Um also 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 wiederum auch über den Detailscreen möglich.
In unserem Beispiel soll "kein Kommando" zugeordnet werden, <Befehl> ist also leer´:

set LS set home ez_LichtMaster

Zum Setzen einer anderen Solltemperatur wird also analog erfasst:

set LS set home ez_FHT desired-temp 21.0


Umsetzung ohne LightScene

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

define wakeup at *07:00 {\
 {Log 3, ('wakeupLOG WE:     '.$we)}\
 {Log 3, ('wakeupLOG HomeStatus: '.(Value("HomeStatus")))}\
 if ((!$we) '''and (Value("HomeStatus") < 3''') {\
   {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.")}\
 }\
}

Weitere Beispiele

Wakeuplight Licht bei Bedingungen einschalten