SmartHome Heimautomation

Inhalt:

  1. Zielsetzung
  2. Auswahl der Steuerungs-Software
  3. FHEM
  4. openHAB
  5. Allgemeines
  6. Zentrale: HomeMatic CCU2
  7. Projekte:
    1. Haustürklingel läßt alle Telefone klingeln
    2. Waschmaschine sendet Nachricht, wenn fertig
    3. Wäsche-Trockner sendet Nachricht, wenn fertig
    4. Weihnachts-Außenbeleuchtung

Zielsetzung

Das Ziel des SmartHome sollte ein Komfortgewinn durch Automatisierung sein.
An die viel gepriesene Kosteneinsparung durch z.B. Heizungssteuerung glaube ich nicht wirklich, denn für die z.B. ca. 50 EUR eines Heizkörperthermostats kann man ziemlich viel "falsch" heizen, bis sich der Kauf amortisiert.

Auswahl der Steuerungs-Software

Wichtigste Kriterien, die eine SmartHome Steuerungs-Software erfüllen muss: In der End-Auswahl standen bei mir daher: Zuerst fiel meine Entscheidung auf FHEM.
Es unterstützt sehr viele Protokolle/Geräte, steht unter der GPL, existiert als Projekt seit ca. 2005 und benötigt als einzige Voraussetzung Perl und ist damit auf so gut wie jedem Linux sofort einsatzbereit.
Aber die Konfiguration setzt sehr viel Einarbeitung voraus!
Daher wollte ich mal sehen, wie sich openHAB dazu im Vergleich verhält.
Erst einmal gleicher Nachteil wie bei FHEM: Es gibt keine Gentoo ebuilds dafür.
Allerdings sind die ersten Schritte in openHAB größtenteils so selbsterklärend, dass nach wenig Tutorial lesen schon die ersten Regeln laufen.
Daher startete ich nach den ersten Versuchen mit FHEM doch mit openHAB.
Allerdings stellte sich dabei heraus, dass im openHAB 2 die Interaktion zwischen PaperUI und der textbasierten Konfiguration nicht richtig funktoniert und kein schlüssiges Backup-Verfahren existiert.
Daher mein Favorit: FHEM!

FHEM

Informationen

Basis-Installation

emerge -avt dev-perl/RPC-XML
useradd --create-home --system --user-group fhem
mkdir -p /opt/fhem
mkdir -p /var/log/fhem
chown fhem:fhem /opt/fhem
chown fhem:fhem /var/log/fhem
su - fhem
cd /opt/fhem
wget http://fhem.de/fhem-5.7.tar.gz
gunzip -cd fhem-5.7.tar.gz | tar -xf -
ln -s fhem-5.7 fhem
cd fhem
mv log/* /var/log/fhem/
rmdir log
ln -s /var/log/fhem log
./fhem.pl fhem.cfg
Dann sollte man zumindest in Teilen diese Anleitungen lesen: Ansteuern kann man FHEM dann schon per Browser über http://localhost:8083/ oder per telnet: telnet localhost 7072
Dann sollte man gleich das erste Update durch Eingabe folgender Befehle in die Kommandozeile der FHEM Browser-Schnittstelle unter http://localhost:8083/:
update
shutdown restart

HomeMatic CCU2 einbinden

Nach dieser Anleitung folgende Befehle in die Kommandozeile der FHEM Browser-Schnittstelle unter http://localhost:8083/ eingeben:
define d_ccu HMCCU homematic-ccu2
attr d_ccu rpcport 2001,9292
attr d_ccu rpcqueue /tmp/ccuqueue
attr d_ccu rpcinterval 5
set d_ccu rpcserver on
attr d_ccu rpcserver on
get d_ccu devicelist
get d_ccu devicelist create ^HM-ES.* t=all f=HM_%n
get d_ccu devicelist create ^HM-Sen.* t=all f=HM_%n
save

openHAB

Basis-Installation

Nach dieser Anleitung in Kurzform:
echo "dev-java/oracle-jre-bin javafx" >> /etc/portage/package.use
emerge -avt dev-java/oracle-jre-bin
# Oracle Java 8 revision 101 oder höher prüfen:
java -version
Da es leider noch kein funktionsfähiges ebuild gibt, muß man manuell installieren:
useradd --create-home --system --user-group openhab
mkdir -p /opt/openhab2
chown openhab:openhab /opt/openhab2
su - openhab
cd /tmp
wget https://openhab.ci.cloudbees.com/job/openHAB-Distribution/lastSuccessfulBuild/artifact/distributions/openhab/target/openhab-2.1.0-SNAPSHOT.zip
unzip openhab-2.1.0-SNAPSHOT.zip -d /opt/openhab2
exit
su - openhab -c '/opt/openhab2/start.sh server </dev/null' >/tmp/openhab-start.log 2>&1 &
tail -f /opt/openhab2/userdata/logs/openhab.log
# Beenden würde so gehen:
kill $(runs org.apache.karaf.main.Main | awk '{print $2}')
Warten, bis der openHAB Konsolen-Prompt erscheint.
Danach sollte man mit dem Beginner Tutorial weitermachen. Das Dashboard öffnen: http://localhost:8080/
→ Standard
→ PaperUI
Für HomeMatic: → Add-ons
→ Bindings
→ Homematic Binding
→ Install
→ Configration
→ Things
→ Add things
→ Homematic Binding
→ Add manually
→ Gateway Address: homematic-ccu2
→ Inbox
weiter in diesem Teil der Anleitung
Nach den ersten Versuchen stellen sich ein paar noch offene Baustellen heraus:
Die Dokumentation ist an vielen Stellen noch unvollständig.
Außerdem existiert noch keine Backup-Strategie, siehe dazu auch issue #299
Alles, was man per PaperUI macht, landet (hoffentlich) in /opt/openhab2/userdata{etc|jsondb} und die manuell erstellten Textdateien sind ja sowieso in /opt/openhab2/conf.
Daher denke ich, dass man nur das sichern muß:
/opt/openhab2/userdata/etc
/opt/openhab2/userdata/jsondb
/opt/openhab2/conf/items
/opt/openhab2/conf/rules
/opt/openhab2/conf/sitemaps
/opt/openhab2/conf/things
Ein sehr gutes Beispiel einer Konfiguration ist von ThomDietrich zur Verfügung gestellt.

Allgemeines

Beim Einsatz von Schalt-Aktoren sollte man nicht nur auf den maximal erlaubten Dauer-Strom achten, sondern auch auf mögliche Einschalt-Ströme achten:
Bei LEDs sollte man wegen der hohen Einschalt-Ströme einen Einschaltstrombegrenzer vorschalten, z.B. ESB1, siehe auch Schaltaktoren.

Zentrale: HomeMatic CCU2

Die HomeMatic CCU2 ist schnell einsatzbereit:
Wichtig zu wissen:
Die Funkreichweite ist bestens, selbst durch 3 Stahlbeton-Zimmerdecken hindurch ist eine problemlose Verbindung möglich.

Projekte

Haustürklingel läßt alle Telefone klingeln

Zutaten: Motivation:
Die bestehende Haustürklingel mit 12V Wechselspannung ist zusätzlich an eine Auerswald Telefonanlage mit Haustürklingel-Eingang angeschlossen, welche alle Telefone mitklingeln läßt.
Da die Programmier-Software für die Auerwald nur auf sehr altem Windows läuft (3.11, 95 und 98) und einen seriellen Port benötigt, welches beides stark vom Aussterben bedroht ist, muß etwas modernes her.
Lösung:
Auf der Suche nach einer Lösung bin auf FHEM ruft FRITZ!Box gestoßen.
Allerdings halte ich das erwähnte simcmd für (noch) unbrauchbar, da der Code an vielen Stellen noch sehr unfertig ist: Zum Beispiel funktioniert die Kommando-Option "w" für die Wartezeit noch überhaupt nicht. Jeder, der das ernsthaft in einer Steuerung einsetzt, sollte erst einmal einen Blick in den Quelltext werfen.
Ebenfalls das bei c't empfohlene sipsak führte bei mir nicht zum gewünschten Ergebnis.
Also Weiter suchen... SIP ist doch ein Protokoll... und für Perl gibt es doch eigentlich für alle Protkolle ein Paket. Treffer:
Mit Net::SIP kann man sich mit ganz wenig Zeilen Perl einen SIP-Client bauen, der Telefone der FritzBox klingeln läßt.
Installation:
emerge -avt app-portage/g-cpan
emerge -avt dev-perl/Net-DNS
g-cpan -ai Net::SIP
Dann kann man so das Telefon 623 der FritzBox klingeln lassen:
sip-ring 192.168.178.1 624 SeCrEt '**623'
Dazu muss man vorher auf der FritzBox ein SIP Telefon (624) einrichten:
Und dann noch einen Gruppenruf einrichten, damit alle Telefone klingeln:
Dazu einfach eine neue Kurzwahl in der FritzBox einrichten, die dann die gewünschten Rufnummern der Nebenstellen klingeln läßt:
Telefonie → Telefonbuch → Neuer Eintrag → Beliebigen Namen vergeben
Unter Rufnummern im ersten Feld die Ziffernfolge **1#, gefolgt von den gewünschten internen Telefonnummern, ebenfalls durch # getrennt, eintragen, z.B.**1#51#620#621#622#623 um die Nebenstellen 51 und 620 bis 623 klingeln zu lassen.
Im Feld Kurzwahl die gewünschte Kurzwahl, z.B. 01, eintragen.
Dann kann man so alle Telefone klingeln lassen:
sip-ring 192.168.178.1 624 SeCrEt '**701'
Dann kann es in FHEM losgehen:
Hauptdevice umbenennen:
rename HM_HM_Sen_DB_PCB_NEQ0956189 Haustuerklingel
Raum zuordnen
attr Haustuerklingel room Haustuer
Dann den Event mit der Aktion verknüpfen.
(Event-Beispiel: HMCCUDEV Haustuerklingel 1.PRESS_SHORT: 1)
define n_Haustuerklingel notify Haustuerklingel:\d.PRESS_SHORT:.* "sip-ring 192.168.178.1 624 SeCrEt **701"
attr n_Haustuerklingel room Haustuer
Fertig!
Man sollte sich aber zur weiteren Vereinfachung folgende FHEM Module anschauen:

Waschmaschine sendet Nachricht, wenn fertig

Zutaten: Motivation:
Wie oft liegt fertige Wäsche in der Waschmaschine und die Hemden knittern vor sich hin? Da wäre es doch schön, wenn man eine Erinnerung bekäme, wenn die Maschine fertig ist.
Lösung:
Auf der Suche nach einer Lösung bin auf HomeMatic Funk-Steckdose mit Leistungsmessung: Deine Waschmaschine ist fertig gestoßen, die meinen Wünschen angepasst und etwas optimiert habe.
Maßgeblich sind die Ideen des Forumsbeitrags Waschmaschinenstatus mit eingeflossen.
Zuerst natürlich die CCU2 in FHEM einbinden.
Wenn man möchte, dass die schaltbare Steckdose nach einem Stromausfall nicht in den OFF Status geht, dann braucht man eine aktuelle Firmware.
Update auf Version 2.5 bei www.eq-3.de herunterladen, dann auf die CCU2 hochladen, dann "Geräte" → "Einstellen" → "Update".
Dann: "Aktion bei Spannungszufuhr" → "kurzen Tastendruck simulieren"
Dann kann es losgehen. Es wird gleich eine Zuordnung zu Räumen vorgenommen. Außerdem wird auch gleich gruppiert, um die Übersichtlichkeit zu wahren.
Hauptdevice umbenennen:
rename HM_HM_ES_PMSw1_Pl_LEQ1345527 Waschmaschine
Raum zuordnen:
attr Waschmaschine room Heizungskeller
attr Waschmaschine group Waschmaschine
Channel umbenennen, welcher die Leistung in Watt anzeigt:
rename HM_HM_ES_PMSw1_Pl_LEQ1345527_2 Waschmaschine_Power
attr Waschmaschine_Power room Heizungskeller
attr Waschmaschine_Power group Waschmaschine
Dummy WaschmaschineWatt für die Anzeige des aktuellen Watt-Verbrauchs definieren:
define WaschmaschineWatt dummy
attr WaschmaschineWatt room Heizungskeller
attr WaschmaschineWatt group Waschmaschine
Dummy WaschmaschineWatt mit Werten versorgen:
(Event-Beispiel: Waschmaschine_Power 2.POWER: 19.210000)
define WaschmaschineWattSet notify Waschmaschine_Power:\d.POWER:.* set WaschmaschineWatt $EVTPART1
attr WaschmaschineWattSet room Heizungskeller
attr WaschmaschineWattSet group Waschmaschine
Alle erfassten Daten in ein Logfile speichern:
define WaschmaschineLog FileLog ./log/waschmaschine.log WaschmaschineWatt|WaschmaschineStatus|WaschmaschineFertig
attr WaschmaschineLog room Heizungskeller
attr WaschmaschineLog group Waschmaschine
Dummy WaschmaschineStatus definieren zur Signalisierung, ob die Waschmaschine gerade arbeitet (on), oder nicht (off):
define WaschmaschineStatus dummy
attr WaschmaschineStatus event-on-change-reading state
attr WaschmaschineStatus room Heizungskeller
attr WaschmaschineStatus group Waschmaschine
Dann mit einem DOIF den WaschmaschineStatus setzen:
Wenn länger als 10 Sekunden weniger als 1 Watt verbraucht wird: off
Wenn "off" und mehr als 1 Watt verbraucht wird: on
Wenn länger als 5 Minuten mehr als 5 Watt verbraucht wird: running
Wenn "running" und länger als 5 Minuten weniger als 5 Watt verbraucht werden: done
define Programm.Waschmaschine.Status DOIF ([WaschmaschineWatt] < 1)\
(\
set WaschmaschineStatus off\
)\
DOELSEIF ([WaschmaschineWatt] >= 1 and [WaschmaschineStatus] eq 'off')\
(\
set WaschmaschineStatus on\
)\
DOELSEIF ([WaschmaschineWatt] >= 5)\
(\
set WaschmaschineStatus running\
)\
DOELSEIF ([WaschmaschineWatt] < 5 and [WaschmaschineStatus] eq 'running')\
(\
set WaschmaschineStatus done\
)
attr Programm.Waschmaschine.Status wait 10:300:0:300
attr Programm.Waschmaschine.Status room Heizungskeller
attr Programm.Waschmaschine.Status group Waschmaschine
Für die Benachrichtigung aus Handy habe ich mich für Pushbullet entschieden.
Dazu einfach dort kostenlos anmelden, einen Access-Token generieren lassen und die App auf dem Handy installieren.
Auf dem FHEM-Server benötigt man noch JSON:
emerge -avt dev-perl/JSON
Die Pushbullet Benachrchtigung einrichten:
define BenachrichtigungStephan Pushbullet dein_pushbullet_access_token
attr BenachrichtigungStephan room Benachrichtigungen
Und testen:
set BenachrichtigungStephan message Ein erster Test! | Test
Eine Variable definieren, in der die Verzögerung der Fertig-Benachrichtigung hochgezählt wird, um die Abstände der Nachrichten sukkzesive zu verlängern:
define WaschmaschineMeldungVerzoegerung dummy
set WaschmaschineMeldungVerzoegerung 1800
attr WaschmaschineMeldungVerzoegerung room Heizungskeller
attr WaschmaschineMeldungVerzoegerung group Waschmaschine
Dummy für "Fertig" Status:
define WaschmaschineFertig dummy
attr WaschmaschineFertig room Heizungskeller
attr WaschmaschineFertig group Waschmaschine
Benachrichtigung und Meldung ins Log:
define WaschmaschineFertigBenachrichtigung DOIF ([WaschmaschineStatus] eq 'done')\
(\
## das Wiederholungsintervall verdoppeln\
set WaschmaschineMeldungVerzoegerung {([WaschmaschineMeldungVerzoegerung]*2)}\
,\
set WaschmaschineFertig 'Fertig.'\
,\
## Nur beim ersten mal an Stephan senden\
IF ([WaschmaschineMeldungVerzoegerung] == 3600)\
(set BenachrichtigungStephan message Waschmaschine ist fertig! | Waschmaschine)\
,\
set BenachrichtigungSteffi message Waschmaschine ist fertig! | Waschmaschine\
)\
DOELSE \
(\
## Wieder den Inital-Wert (30 Minuten) setzen \
set WaschmaschineMeldungVerzoegerung 1800\
)
attr WaschmaschineFertigBenachrichtigung repeatcmd [WaschmaschineMeldungVerzoegerung]
attr WaschmaschineFertigBenachrichtigung repeatsame 5
attr WaschmaschineFertigBenachrichtigung do always
attr WaschmaschineFertigBenachrichtigung room Heizungskeller
attr WaschmaschineFertigBenachrichtigung group Waschmaschine
Für die ersten Tests kann man das "set Benachrichtung..." ja weglassen.
Die Benachrichtigung kommt sofort, dann nach 30 Minuten, dann jeweils um das doppelte zeitlich verlängert, bis Watt auf Null ist (Status "off"), also jemand ganz ausgeschaltet hat. Aber maximal 5 mal.
Und schon wird keine Wäsche mehr in der Maschine vergessen!

Wäsche-Trockner sendet Nachricht, wenn fertig

Zutaten: Motivation:
Wie oft liegt fertige Wäsche im Trockner und feuchtet noch etwas vor sich hin? Da wäre es doch schön, wenn man eine Erinnerung bekäme, wenn der Trocker fertig ist.
Lösung:
Analog zu obiger Anleitung: Waschmaschine sendet Nachricht, wenn fertig
Zuerst natürlich die CCU2 in FHEM einbinden.
Wenn man möchte, dass die schaltbare Steckdose nach einem Stromausfall nicht in den OFF Status geht, dann braucht man eine aktuelle Firmware.
Update auf Version 2.5 bei www.eq-3.de herunterladen, dann auf die CCU2 hochladen, dann "Geräte" → "Einstellen" → "Update".
Dann: "Aktion bei Spannungszufuhr" → "kurzen Tastendruck simulieren"
Dann kann es losgehen. Es wird gleich eine Zuordnung zu Räumen vorgenommen. Außerdem wird auch gleich gruppiert, um die Übersichtlichkeit zu wahren.
Hauptdevice umbenennen:
rename HM_HM_ES_PMSw1_Pl_DN_R1_NEQ1662991 Trockner
Raum zuordnen:
attr Trockner room Heizungskeller
attr Trockner group Trockner
Channel umbenennen, welcher die Leistung in Watt anzeigt:
rename HM_HM_ES_PMSw1_Pl_DN_R1_NEQ1662991_2 Trockner_Power
attr Trockner_Power room Heizungskeller
attr Trockner_Power group Trockner
Dummy TrocknerWatt für die Anzeige des aktuellen Watt-Verbrauchs definieren:
define TrocknerWatt dummy
attr TrocknerWatt room Heizungskeller
attr TrocknerWatt group Trockner
Dummy TrocknerWatt mit Werten versorgen:
(Event-Beispiel: Trockner_Power 2.POWER: 19.210000)
define TrocknerWattSet notify Trockner_Power:\d.POWER:.* set TrocknerWatt $EVTPART1
attr TrocknerWattSet room Heizungskeller
attr TrocknerWattSet group Trockner
Alle erfassten Daten in ein Logfile speichern:
define TrocknerLog FileLog ./log/trockner.log TrocknerWatt|TrocknerStatus|TrocknerFertig|TrocknerLaeufe
attr TrocknerLog room Heizungskeller
attr TrocknerLog group Trockner
Dummy TrocknerStatus definieren zur Signalisierung, ob die Trockner gerade arbeitet (on), oder nicht (off):
define TrocknerStatus dummy
attr TrocknerStatus event-on-change-reading state
attr TrocknerStatus room Heizungskeller
attr TrocknerStatus group Trockner
Dummy TrocknerLaeufe definieren zur Zählung, wann die nächste Filter-Reinigung fällig ist:
define TrocknerLaeufe dummy
set TrocknerLaeufe 0
attr TrocknerLaeufe room Heizungskeller
attr TrocknerLaeufe group Trockner
Dann mit einem DOIF den TrocknerStatus setzen:
Wenn länger als 10 Sekunden weniger als 1 Watt verbraucht wird: off
Wenn "off" und mehr als 1 Watt verbraucht wird: on
Wenn länger als 5 Minuten mehr als 200 Watt verbraucht wird: running
Wenn "running" und länger als 5 Minuten weniger als 200 Watt verbraucht werden: done
define Programm.Trockner.Status DOIF ([TrocknerWatt] < 1)\
(\
set TrocknerStatus off\
)\
DOELSEIF ([TrocknerWatt] >= 1 and [TrocknerStatus] eq 'off')\
(\
set TrocknerStatus on\
)\
DOELSEIF ([TrocknerWatt] >= 200)\
(\
set TrocknerStatus running\
)\
DOELSEIF ([TrocknerWatt] < 200 and [TrocknerStatus] eq 'running')\
(\
set TrocknerStatus done\
,\
## Anzahl der Laeufe hochzaehlen\
set TrocknerLaeufe {([TrocknerLaeufe]+1)}\
)
attr Programm.Trockner.Status wait 10:300:0:300
attr Programm.Trockner.Status room Heizungskeller
attr Programm.Trockner.Status group Trockner
Für die Benachrichtigung aus Handy habe ich mich für Pushbullet entschieden.
Dazu einfach dort kostenlos anmelden, einen Access-Token generieren lassen und die App auf dem Handy installieren.
Auf dem FHEM-Server benötigt man noch JSON:
emerge -avt dev-perl/JSON
Die Pushbullet Benachrchtigung einrichten:
define BenachrichtigungStephan Pushbullet dein_pushbullet_access_token
attr BenachrichtigungStephan room Benachrichtigungen
Und testen:
set BenachrichtigungStephan message Ein erster Test! | Test
Eine Variable definieren, in der die Verzögerung der Fertig-Benachrichtigung hochgezählt wird, um die Abstände der Nachrichten sukkzesive zu verlängern:
define TrocknerMeldungVerzoegerung dummy
set TrocknerMeldungVerzoegerung 1800
attr TrocknerMeldungVerzoegerung room Heizungskeller
attr TrocknerMeldungVerzoegerung group Trockner
Dummy für "Fertig" Status:
define TrocknerFertig dummy
attr TrocknerFertig room Heizungskeller
attr TrocknerFertig group Trockner
Benachrichtigung und Meldung ins Log:
define TrocknerFertigBenachrichtigung DOIF ([TrocknerStatus] eq 'done')\
(\
## das Wiederholungsintervall verdoppeln\
set TrocknerMeldungVerzoegerung {([TrocknerMeldungVerzoegerung]*2)}\
,\
set TrocknerFertig 'Fertig.'\
,\
## Nur beim ersten mal an Stephan senden\
IF ([TrocknerMeldungVerzoegerung] == 3600)\
(set BenachrichtigungStephan message Trockner ist fertig! | Trockner)\
,\
set BenachrichtigungSteffi message Trockner ist fertig! | Trockner\
)\
DOELSE \
(\
## Wieder den Inital-Wert (30 Minuten) setzen \
set TrocknerMeldungVerzoegerung 1800\
)
attr TrocknerFertigBenachrichtigung repeatcmd [TrocknerMeldungVerzoegerung]
attr TrocknerFertigBenachrichtigung repeatsame 5
attr TrocknerFertigBenachrichtigung do always
attr TrocknerFertigBenachrichtigung room Heizungskeller
attr TrocknerFertigBenachrichtigung group Trockner
Für die ersten Tests kann man das "set Benachrichtung..." ja weglassen.
Die Benachrichtigung kommt sofort, dann nach 30 Minuten, dann jeweils um das doppelte zeitlich verlängert, bis Watt auf Null ist (Status "off"), also jemand ganz ausgeschaltet hat. Aber maximal 5 mal.
Und schon wird keine Wäsche mehr im Trocker vergessen!
Ganz nebenbei spart das eine Menge Strom, da der Knitterschutz intervallmäßig immerwieder bis knapp 100 Watt braucht.

Dann noch die Benachrichtigung für die Reinigung:
define TrocknerReinigung DOIF ([TrocknerLaeufe] == 5)\
(\
## Zaehler wieder auf Null setzen\
set TrocknerLaeufe 0\
,\
set BenachrichtigungStephan message Trockner Filter REINIGEN! | Trockner\
)
attr TrocknerReinigung do always
attr TrocknerReinigung room Heizungskeller
attr TrocknerReinigung group Trockner

Zum Schluß kann man noch den "Heizungskeller" zweispaltig darstellen und die Waschmaschine und den Trockner nebeneinander:
attr WEB column Heizungskeller:Waschmaschine|Trockner

Weihnachts-Außenbeleuchtung

Zutaten: Motivation:
Nachdem die alte analoge Zeitschaltuhr für die Weihnachts-Außenbeleuchtung auseinandergefallen ist, muß ein zeitgemäßer Ersatz her.
Hauptnachteil der alten Lösung: Die Gartensteckdose ist durch einen Schalter schaltbar und da kommt es schon des öfteren vor, dass unsere Kinderlein das zeitweise ausschalten, was zu einer verstellten Uhrzeit der Zeitschaltuhr führte.
Lösung:
Falls noch nicht im FHEM sichtbar, dann:
get d_ccu devicelist create ^HM-LC.* t=all f=HM_%n
save
Namen vergeben:
rename HM_HM_LC_Sw1_Pl_DN_R1_OEQ0478896 WeihnachtsBeleuchtung
Raum zuordnen:
attr WeihnachtsBeleuchtung room Garten
attr WeihnachtsBeleuchtung group WeihnachtsBeleuchtung
attr WeihnachtsBeleuchtung statedatapoint 1.STATE
attr WeihnachtsBeleuchtung statevals on:true,off:false
Erster Test:
set WeihnachtsBeleuchtung on
set WeihnachtsBeleuchtung off
Dann die Zeitschaltung per DOIF:
define WeihnachtsBeleuchtungSteuerung DOIF ([6:00-9:00] or [16:00-22:00])\
(set WeihnachtsBeleuchtung "on")\
DOELSE\
(set WeihnachtsBeleuchtung "off")
Das schaltet allerdings nur zu den angegebenen Zeiten.
Wenn die Stromzufuhr zum Funk-Schaltaktor unterbrochen wird oder jemand manuell am Aktor schaltet, dann reagiert das DOIF (richtigerweise) nicht.
Das kann man einfach beheben, indem man auf den 1.WORKING Event reagiert, also:
define WeihnachtsBeleuchtungSteuerung DOIF ( [WeihnachtsBeleuchtung:"1.WORKING"] and ([6:00-9:00] or [16:00-22:00]) )\
(set WeihnachtsBeleuchtung "on")\
DOELSE\
(set WeihnachtsBeleuchtung "off")
attr WeihnachtsBeleuchtungSteuerung do always
attr WeihnachtsBeleuchtungSteuerung room Garten
attr WeihnachtsBeleuchtungSteuerung group WeihnachtsBeleuchtung
Und schon hat man eine smarte Zeitschaltuhr!
Zurück zur Hauptseite
Valid HTML 4.01 Transitional   Valid CSS!