Beruflich Dokumente
Kultur Dokumente
Heimautomatisierung Mit Fhem PDF
Heimautomatisierung Mit Fhem PDF
Heimautomatisierung
mit fhem
- Fr Einsteiger
Ulrich Maa
Homematic-Anhang von Martin Pittner
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 1
Inhaltsverzeichnis
Vorwort aller Anfang ist schwer ................................................................................................................................ 4
Einleitung und Grundlagen ........................................................................................................................................... 5
Hardware-Systeme: FS20, HomeMatic und Andere ................................................................................................. 6
Weitere Hardware: Computer und Computer-Funk-Schnittstelle (CUL).................................................................. 8
Adressierung, Hauscode und Tastencode ................................................................................................................ 9
Einrichten von Sensoren......................................................................................................................................... 11
Anlernen von Aktoren (Pairing) .............................................................................................................................. 13
Funktionsgruppen, Lokale Master, Globale Master ............................................................................................. 13
Planung Ihres Heimautomatisierungs-Systems ...................................................................................................... 14
fhem-Grundlagen........................................................................................................................................................ 16
fhem installieren .................................................................................................................................................... 16
fhem Systemberblick ............................................................................................................................................ 16
Die fhem Benutzer-Oberflche............................................................................................................................... 16
Anlernen von Sensoren in fhem - autocreate ........................................................................................................ 18
Schalten von Aktoren - set ..................................................................................................................................... 19
Aufzeichnung in Logdateien ................................................................................................................................... 19
fhem-Konfiguration - Attribute ................................................................................................................................... 20
Attribute: Modell und Raum .................................................................................................................................. 21
fhem-Konfiguration: Das besondere Gert Global ............................................................................................. 21
CUL: Definition und Attribute ................................................................................................................................. 23
Gerte-Infos: Readings ............................................................................................................................................... 24
Mehrere Gerte mit einem Klick schalten - structure ................................................................................................ 24
Timer ........................................................................................................................................................................... 25
Dimmer ....................................................................................................................................................................... 25
Schalten zu bestimmten Zeitpunkten at .................................................................................................................. 26
Schalten von Ereignissen abhngig machen - notify .................................................................................................. 26
Verwendung von notify als Makro ..................................................................................................................... 27
Starten eines Makros trigger ........................................................................................................................... 27
Bearbeiten ber das Webfrontend .................................................................................................................... 28
Pairing: direkt oder indirekt ........................................................................................................................................ 28
Anpassen der Darstellung im Webfrontend - FHEMWEB-Attribute ........................................................................... 31
Bildschirmgre und "Skin": stylesheetPrefix ........................................................................................................ 31
Weniger Menpunkte: hiddenroom ...................................................................................................................... 31
Zustzliche Menpunkte menuEntries ................................................................................................................ 32
Nur bestimmte Befehle fr ein Gert - webCmd ................................................................................................... 32
Befehle umbenennen - eventMap ......................................................................................................................... 32
Rume sortieren: sortRooms ................................................................................................................................. 32
Gruppen bilden und umbenennen: group ............................................................................................................. 33
Mehrspaltige Darstellung: column ......................................................................................................................... 33
Iconaktualisierung ohne browser-refresh longpoll ............................................................................................. 33
Welche Icons? stylesheetPrefix und iconPath ....................................................................................................... 33
Eigene Icons ............................................................................................................................................................ 34
Icon vor dem Gertenamen - icon ..................................................................................................................... 34
Icon vor dem Raumnamen - roomIcons ............................................................................................................. 34
Eigene Icons fr Gerte-Schaltzustnde ............................................................................................................ 35
Weblink .................................................................................................................................................................. 35
Beispiel zur Konfiguration ...................................................................................................................................... 36
Gruppen frei auf dem Bildschirm platzieren: Dashboard ....................................................................................... 37
Einrichten eines Grundrisses mit eigenen fhem-Gerten ...................................................................................... 37
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 2
Version 4.0
Seite 3
ber ein kurzes Feedback von Lesern freue ich mich brigens sehr! Hats geholfen, ist eine bestimmte
Passage nicht so gut verstndlich, fehlt etwas? Schickt mir doch einfach mal ne kurze Mail an
mailto:[email protected]
Mein Dank gilt den Korrekturlesern Annette, Klaus, Andreas und Peter sowie allen Entwicklern von
fhem, vor allem Rudolf Knig.
Version 4.0
Seite 4
Energie sparen durch das zielgerichtete Regeln bzw. Ein- und Ausschalten von Gerten
Mehr Komfort durch Automatisierungen zeitgesteuert oder abhngig von Messdaten wie z.B.
der Temperatur, dem Sonnenstand etc.
Zugriff auch ber (W)LAN und das Internet
Spa beim Basteln :-)
In der Welt der Heimautomatisierung gibt es dafr vier Gruppen von Gerten:
1. Sensoren (Thermometer, Lichtschalter, Fernbedienungen, Bewegungsmelder, InfrarotEmpfnger etc. - also Gerte, die Werte aus der Umwelt aufnehmen und an das System senden).
2. Aktoren (Steckdosenschalter, Unterputzschalter, Rolladen-Schalter etc. also jedes Gert, das
Befehle vom System entgegennimmt und als Schaltvorgang umsetzt).
3. Sender&Empfnger, die als Funk-zu-PC-Schnittstelle fungieren und die (Funk-)kommunikation
bernehmen das kann ein Hardwaresystem-spezifisches PC-Interface sein oder auch ein "CUL"
genannter generischer Sender&Empfnger.
4. Auerdem bentigen Sie einen Computer, also einen PC oder einfachen Rechner wie z.B. ein
NAS, einen RaspberryPi oder eine FritzBox, der stndig eingeschaltet ist, an der der CUL
angeschlossen ist und auf dem fhem luft.
Sensoren und Aktoren gibt es von mehreren Herstellern. Jeder Hersteller hat dabei ein jeweils in sich
geschlossenes Hardwaresystem, das zunchst auch ohne fhem funktioniert. Beispiele dafr sind die
Systeme FS20, FHT, HomeMatic, OneWire oder EnOcean (wenn Sie keine Ahnung haben, was das alles
ist spter mehr). Jedes dieser Systeme umfasst eine Vielzahl von Komponenten, bestehend aus
Sensoren wie z.B. Bewegungsmelder, Thermostate, Wandschalter (Unterputz und Aufputz) und
Fernbedienungen, sowie Aktoren wie z.B. Steckdosenschalter (Funk-Zwischenstecker), funkgesteuerte
Steckdosenleisten, Dimmer, Stellantriebe fr Heizkrperventile oder Rollladenschalter.
Die meisten dieser Hardwaresysteme funktionieren per Funk in den speziellen Frequenzbndern
433 MHz oder 868 MHz. Bei manchen Systemen erfolgt die Kommunikation aber auch ber Kabel wie
z.B. in den Hardwaresystemen One-Wire oder KNX/EIB.
Der berwiegende Teil dieser Hardwaresysteme bietet auch ein PC-Interface, um Schaltvorgnge vom
PC, ggf. auch ber Webfrontend und mit Automatisierungen, steuern zu knnen. Im FS20-System heit
dieser PC-Adapter z.B. FHZ1300PC, bei HomeMatic heit er CCU oder LAN-Adapter.
fhem kann sich in diese Hardwaresysteme "einklinken". Dazu wird entweder der systemeigene Adapter
genutzt (es wird also die FHZ1300PC oder der LAN-Adapter von fhem aus gesteuert), oder man
verwendet statt dieser relativ teuren Hardwaresystem-eigenen PC-Interfaces (=Sender&Empfnger) ein
generisches Gert, den sogenannten CUL. Dieser ist deutlich gnstiger und kann z.T. mehrere
Hardwaresysteme gleichzeitig bedienen. Der CUL kann also z.B. eine FHZ1300PC ersetzen.
Version 4.0
Seite 5
Vermutlich besitzen Sie schon jetzt Gerte, die mit Hilfe von fhem gesteuert werden knnen: einen
modernen SmartTV, eine FritzBox, vielleicht auch ihr AV-Receiver? Diese knnen Sie ohne Mehrkosten
steuern und berwachen.
Wenn Sie tiefer in die Heimautomatisierung mit fhem einsteigen mchten, sollten Sie sich zunchst fr
(mindestens) eines der oben genannten Hardwaresysteme entscheiden und die entsprechenden
zueinander passenden Komponenten beschaffen.
Einfache Anwendungen, die sich dann gestalten lassen, sind z.B.:
-
Ein Sensor soll einen Aktor steuern, z.B. soll mit einem Lichtschalter an der Wand eine Lampe
ein- und ausgeschaltet werden.
Derselbe Schalter soll evtl. auch mehrere Gerte (also Aktoren) bedienen, wenn z.B. mit nur
einem Tastendruck mehrere Lampen oder beliebige Verbraucher ein- und ausgeschaltet werden
sollen.
Es sollen evtl. auch mehrere Schalter die gleiche Funktion auslsen, z.B. soll im Schlafzimmer das
Licht sowohl vom Lichtschalter an der Wand als auch von der Fernbedienung am Bett bedienbar
sein.
Wenn Sie fhem nutzen, knnen Sie alle Schaltvorgnge sowohl von einem Webfrontend auf
einem Computer als auch von einer App auf einem mobilen Gert steuern. Auerdem knnen
Sie zeit- und ereignisbasierte Schaltvorgnge auslsen.
Eine solche Konfiguration knnen Sie ganz ohne Programmierkenntnisse erreichen, es braucht nur
einiges technisches Grundverstndnis.
Wenn Sie Aktoren ausschlielich vom Webfrontend (also ohne physischen Schalter) bedienen wollen,
mssen Sie diese durch wenige einfache Programmzeilen hinzuprogrammieren.
Das Zusammenfassen von mehreren Aktoren in Rumen mit gemeinsamer Schaltung vom Webfrontend
aus ist ebenfalls mit wenigen Programmzeilen recht einfach oder kann innerhalb des Hardwaresystems
eingerichtet werden (also z.B. alle Lampen im Schlafzimmer sollen mit nur einem Tastendruck
ausgehen).
Wenn Sie weitergehende Mglichkeiten nutzen mchten, z.B. Zeitsteuerungen wie Laufzeiten, Sonnenauf-/-untergang, Ferienkalender, thermostatgefhrte Heizungssteuerung etc., mssen Sie zunehmend
tief in die fhem- und ggf. Perl-Programmierung einsteigen.
fhem ist sehr umfangreich. Es bietet die Mglichkeit, einfache Konfigurationen ohne
Programmierkenntnisse zu erstellen, wie auch eine komplexe Heimautomatisierung, die eben
Programmierung bentigt.
Vor dem Einstieg in fhem ist es erforderlich, zunchst die Funktionsweise der Steuerung zu verstehen.
Also geht es zunchst um
Version 4.0
Seite 6
auch sind diese Hardwaresysteme erweiterbar. Und ja: auch manche (!) der vorgenannten BaumarktSteckdosen lassen sich aus fhem heraus schalten.
Das derzeit am weitesten verbreitete Hardwaresystem heit FS20. Die Gerte dafr werden im
Wesentlichen von den Firmen ELV und Conrad vertrieben. Wenn Sie auf deren Webseiten den
Suchbegriff FS20 eingeben, bekommen Sie eine bebilderte bersicht der Komponenten: Sensoren wie
Wand-Lichtschalter, Fernbedienungen, Bewegungsmelder, Thermostate oder Helligkeitssensoren,
Aktoren wie Steckdosenschalter, Infrarotsender, Steckdosenleisten, Rollladenschalter etc. - schauen Sie
doch gleich mal nach.
In FS20 knnen Sensoren ausschlielich senden und Aktoren ausschlielich empfangen (der
Lichtschalter an der Wand kann Funktelegramme nur senden, die Steckdose kann sie nur empfangen).
Das ist eigentlich ausreichend bis ein Aktor z.B. durch eine Funkstrung oder wegen schlechter Laune
mal einen Befehl verpasst. Das FS20-System geht einfach davon aus, dass der gesendete Befehl auch
ausgefhrt wurde. Im vergleichbaren Hardware-System HomeMatic hingegen knnen Aktoren auch
senden, sie senden also eine Besttigung, dass sie den Befehl auch wirklich gehrt haben. Das ist zwar
noch keine absolute Garantie, dass der Befehl auch wirklich umgesetzt wurde, aber immerhin gibt es ein
Feedback. Bleibt dieses aus, kann z.B. der Befehl erneut gesendet oder eine Warnmeldung ausgegeben
werden. HomeMatic-Komponenten sind somit deutlich zuverlssiger, aber auch teurer (sie kosten
hufig das Doppelte der vergleichbaren FS20-Komponente). Wenn Sie kritische Gerte steuern mchten,
z.B. Ihre Rolllden auch als Einbruchsicherung dienen und daher definitiv geschlossen sein sollen,
knnen Sie HomeMatic in Erwgung ziehen. Wenn es lediglich um das Ein- oder Ausschalten von
Lampen u. . geht, oder Sie fr gewhnlich Zuhause sind und die Schaltergebnisse selbst sehen, ist FS20
wahrscheinlich ausreichend. Die Erfolgsquote beim Schalten von FS20-Gerten liegt bei mittleren
Entfernungen, mittleren Eigenschaften der Wnde und gutem Batterie-Ladestand der Sensoren
(=Sender) bei gefhlten 95-98%.
Sowohl HomeMatic (HM) als auch FS20-Systeme lassen sich mit fhem steuern. Eine Mischung beider
Systeme ist mglich allerdings bentigen Sie dann einen CUL je System - also einen fr FS20, einen fr
HM.
Bei der Definition eines Gerts in fhem gibt man den Typ des Hardwaresystems an. Wenn Sie in fhem ein
Gert definieren, mssen Sie dabei angeben, ob es sich um FS20, Homematic usw. handelt. Ist diese
Gertedefinition einmal vorgenommen, knnen dann alle fhem-Funktionen gleichartig genutzt werden,
da das Gert dann nur noch ber seinen Namen angesprochen wird. Das Einschalten eines Gerts
erfolgt z.B. durch den Befehl set Lampe on . Dabei ist es dann gleichgltig, ob das Gert Lampe ein
FS20, HomeMatic oder anderes Gert ist.
Im Weiteren wird FS20 fr alle Beispiele verwendet. Eine Erklrung zum Hardwaresystem HomeMatic
finden Sie im Anhang "Das Hardwaresystem HomeMatic".
Die grte Besonderheit von fhem ist, dass mehrere Hardwaresysteme eingebunden und ggf. auch
kombiniert werden knnen. Vermutlich werden Sie mit einem Hardwaresystem starten, haben aber die
Mglichkeit, Ihr System spter zu erweitern und sind bei dieser Erweiterung somit nicht auf nur ein
Hardwaresystem festgelegt. Eine vollstndige (stndig wachsende) Liste finden Sie in der fhem
Befehlsreferenz am Anfang unter Devices sowie auf dieser Seite.
Version 4.0
Seite 7
Version 4.0
Seite 8
Hinweis: Von einigen Hardware-Komponenten finden Sie in den Webshops (leider) unterschiedliche
Revisionsstnde, z.B. FS20-st-2 oder FS20-st-3. Diese sind in ihrer Funktion identisch und
knnen auch gemischt betrieben werden.
Wenn Sie starten mchten, bestellen Sie den Sender&Empfnger (CUL) zuerst, da er ein paar Tage
Lieferzeit hat. Zum Testen knnen Sie sich auerdem z.B. zunchst 2 Funk-Schalt-Steckdosen (FS20-st)
und einen Funk-Lichtschalter (FS20-S4A) besorgen.
Version 4.0
Seite 9
Hauscodes! Die Gruppen werden durch vom Hardwaresystem vorgegebene, spezielle Tastencodes
gebildet. Eine detaillierte Beschreibung finden Sie im Handbuch jedes FS20-Sensors. Diese Handbcher
sind auch als pdf im Webshop der Anbieter ELV und Conrad verfgbar. Auch ist zu beachten, dass ein
Aktor gegebenenfalls mehrfach angelernt werden muss je einmal fr Funktionsgruppe, Local Master
und Global Master.
Alternativ lassen sich solche Schaltgruppen ebenso in der fhem-Konfiguration bilden ebenfalls ber
unterschiedliche Hauscodes hinweg. Das ist bequemer einzurichten als das Einstellen der Tastencodes
an den Schaltern, fhrt jedoch beim Schalten von Gertegruppen zu mehr Funkverkehr: es wird dann
nicht ein Funktelegramm mit dem Gruppen-Tastencode gesendet, sondern ein Funktelegramm je
Kombination Hauscode+Tastencode (=Adresse) also ein Funktelegramm je Gert. Da auf Grund
funkrechtlicher Bestimmungen (1%-Regel) nicht mehr als 160 Funktelegramme pro Stunde gesendet
werden drfen, kann dies in groen Systemen zu Problemen fhren. Bitte bercksichtigen Sie dies,
wenn Sie Ihre Systematik von Haus- und Tastencodes entwerfen.
Als Empfehlung fr den Start: Je Hauscode knnen bis zu 225 Tastencodes definiert werden. Wenn dies
fr Sie ausreichend ist, nutzen Sie nur einen Hauscode, um ggf. spter Schaltgruppen einfhren zu
knnen. Reicht Ihnen diese Anzahl nicht, nutzen Sie einen Hauscode je Etage. Damit knnen Sie
Gruppen innerhalb der Etage durch das Hardwaresystem bilden, Gruppen ber Etagen hinweg in fhem.
Wenn Sie also 3 Etagen haben, und alle Lampen im Haus ausschalten wollen, mssen Sie nur 3
Funktelegramme senden (ein Funktelegramm fr die entsprechende Gruppe je Etage).
Zu Gruppen und fhem spter mehr.
Version 4.0
Seite 10
FS20-S4A
Aus
An
An/Aus
An/Aus
Aus
An
An/Aus
An/Aus
2-Kanal = 2 Tastenpaare
4-Kanal = 4 Taster
Der Wandschalter sendet also bei Bettigung einer Taste ein Funktelegramm bestehend aus Hauscode,
Tastencodes und den auszufhrenden Befehl, z.B. on oder off. Dieses Funktelegramm wird von allen
Aktoren in Reichweite gehrt es reagiert jedoch nur der Aktor, der auf die passende Kombination
von Hauscode und Tastennummer angelernt oder ge-paired ist dazu mehr auf den nchsten
Seiten.
Wenn mehrere gleichartige Schalter dieselben Aktoren ansprechen sollen, geben Sie ihnen einfach
dieselbe Kombination von Hauscode und Tastencodes. Dadurch erzeugt z.B. der 4-knpfige Lichtschalter
an der Wand dieselben Funktelegramme wie die 4-knpfige Fernbedienung. Da ein Aktor (Steckdose)
lediglich Hauscodes und Tastencodes unterscheidet, ist fr ihn das Signal vom Lichtschalter dasselbe wie
das der Fernbedienung und ggf. das des CUL, nachdem Sie das Funktelegramm in fhem angelernt
haben auch dazu spter mehr.
Version 4.0
Seite 11
Sie knnen mit den vier Tastern aber auch vier unterschiedliche Gerte jeweils ein- und ausschalten,
jede einzelne Taste verhlt sich dann wie ein Ein-/Aus-Schalter (Hinweis: nennt man auch toggle) fr
ein Gert.
Details zur Einstellung stehen im jeweiligen Handbuch. Fr einen FS20-S4A gilt:
-
Hauscode einstellen: Tasten 1+3 fr 5 Sekunden halten bis die LED blinkt. Dann den Hauscode als
beliebige 8-stellige Zahl festlegen (Aufschreiben!), dabei kann jede der acht Stellen einen Wert
zwischen 1 und 4 haben, entsprechend der 4 Tasten. Ein Hauscode wre also z.B. 12341234.
Hinweis: Setzen Sie bei diesen Schritten den Deckel auf den Schalter eintippen
direkt auf der Platine funktioniert nicht!
Tasten-Benutzung: Fr 2 Tastenpaare mit jeweils aus und an halten Sie die Tasten 2+3 fr 5
Sekunden, bis die LED kurz blinkt. Wenn Sie 4 einzelne Taster jeweils zum Ein- und Ausschalten
nutzen mchten (Achtung die fhem-Einrichtung ist spter komplizierter!) halten Sie die Tasten
1+4 fr 5 Sekunden, bis die LED kurz blinkt.
00
off
on
off
on
01
00 01
toggle
toggle
toggle
toggle
02 03
Hauscode
Hauscode
2-Kanal
4-Kanal
Im FS20-System werden beim Bettigen einer Taste immer genau folgende Informationen in einem
Funktelegramm bermittelt:
-
Wenn Sie Ihren Schalter als 2-Kanal konfiguriert haben und Sie drcken den Taster oben rechts, sendet
dieser <Hauscode> 00 on. Drcken Sie unten links, sendet er <Hauscode> 01 off.
Version 4.0
Seite 12
Hinweis: Sollte Ihnen die Standard-Tastenbelegung links = OFF, rechts = ON unnatrlich erscheinen,
drehen Sie den Schalter einfach um 90 Grad nach links, dann ist oben an und unten aus :-)
Haben Sie Ihren Schalter als 4-Kanal konfiguriert, sendet dieser statt on/off lediglich den Befehl
umschalten, englisch toggle. Drcken Sie die Taste oben rechts, sendet der Schalter demzufolge
<Hauscode> 01 toggle. Je nachdem, ob das zu schaltende Gert also zuvor an oder aus war, wird es
durch toggle in den entgegengesetzten Zustand versetzt.
Ein unschner Nebeneffekt ist die Darstellung auf dem fhem Web-Interface: whrend passend zu den
Zustnden on und off eine hbsche leuchtende oder graue Glhlampe erscheint, wird bei Vier-KanalTastern ein immer gleiches Icon angezeigt. Wie man das ausbgeln kann, wird spter erklrt es
erfordert Programmierung (siehe untoggle).
Hinweis: Wenn Sie einen Taster lnger als 0,4 Sekunden drcken, werden statt on/off/toggle die
analogen Befehle dimup/dimdown/dimupdown zum Dimmen gesendet. Auf diese gehen wir
erst spter ein.
Globaler Master der Grundgedanke ist, dass alle Aktoren innerhalb des Hauscodes auch auf
diese Gruppenadresse angelernt werden. Dadurch knnen mit nur einem Funktelegramm ALLE
Gerte ein- oder ausgeschaltet werden, z.B. als Not-Aus. Je Hauscode gibt es nur einen
Tastencode (44 44) fr den Globalen Master.
Lokaler Master gedacht fr z.B. alle Gerte in einem Raum. Je Hauscode gibt es bis zu 15
Lokale Master.
Funktionsgruppen gedacht fr raum-bergreifende Gruppen, z.B. alle Lichter, alle Audiogerte
etc. Je Hauscode gibt es bis zu 15 Funktionsgruppen.
Version 4.0
Seite 13
Die Einrichtung von Gruppen in fhem wird spter in diesem Dokument erklrt. Es ist jedoch zu beachten,
dass die Autocreate-Funktion fr gewhnlich auf Basis der individuellen Gerteadresse lernt. Damit der
in fhem angezeigte Schaltzustand des einzelnen Gerts auch dann korrekt angezeigt werden kann, wenn
ein Gert durch einen Gruppenbefehl geschaltet wurde, mssen Globaler Master, Lokaler Master und
Funktionsgruppen manuell zur Definition der Gerte hinzugefgt werden. Details dazu finden Sie in der
FS20-commandref bei den Informationen zu define.
Eine einfache Anleitung zur Einrichtung findet sich auch im drittletzten Beitrag dieses Posts .
Welche Gerte mchten Sie schalten und steuern (z.B. Lampen, Rolllden, Heizkrperventile,
Kaffeemaschinen, Radios, WLAN an/aus etc.)?
Wo befinden sich diese Gerte, in welcher Struktur lassen sie sich zusammenfassen (z.B. Etage
und/oder Zimmer)?
Wo sollen welche Sensoren platziert werden?
Welche Gruppen von Aktoren sollen gemeinsam geschaltet werden knnen?
Bauen Sie sich eine Liste auf, in der alle Paare von Sensoren und Aktoren gelistet sind. Geben Sie jedem
dieser Paare einen Namen sowie einen Haus- und Tastencode, z.B.
Sensor
FS20-S4A
Wohnzimmer,
Erdgeschoss,
Tastenpaar 01
FS20-S4A
Schlafzimmer,
Erdgeschoss,
Tastenpaar 00
Hauscode
12341234
Tastencode
01
fhem-Name
eg_wz_Stehlampe
12341234
00
og_sz_RolladenLinks
Sie knnen beliebige Namen whlen, die jedoch eindeutig sein mssen. Gertenamen drfen neben
Punkt und Unterstrich keine Sonderzeichen enthalten. Ein weiteres Beispiel zur Benennung der Gerte
finden Sie hier.
Definieren Sie auch, welche Gerte gemeinsam in Gruppen geschaltet werden sollen. Auslser ist auch
bei Gruppen ein bestimmter Tastencode. Fhren Sie bei den Aktoren auf, welche Ihrer Aktoren bei
Auslsen dieser Gruppe geschaltet werden sollen. Bedenken Sie, dass die Bildung von Gruppen nur
innerhalb eines Hauscodes mglich ist.
Version 4.0
Seite 14
Sensor
Hauscode
fhem-Name
(Gruppe)
12341234
Gruppenund
Tastencode
44 11*
FS20-S4A 2
Wohnzimmer,
Erdgeschoss,
Tastenpaar 00: Alle
Lichter WZ
FS20-S4A 2
Wohnzimmer,
Erdgeschoss,
Tastenpaar 01:
Media
eg_wz_LichtAlle
Funktionsgruppe fg 11:
Stehlampe, Wandleuchte,
Deckenlicht, Tischleuchte,
Wohnzimmer, Erdgeschoss
12341234
44 12*
haus_MediaAlle
Funktionsgruppe fg 12:
Verstrker, TV,
Videorecorder, Airplay Kche,
Airplay Bad
*) Eine detaillierte Erklrung der Adress-Struktur finden Sie im Handbuch fr den FS20 S4A ab Seite 12.
Mit den bisherigen Ausfhrungen sollte die Funktionsweise des FS20-Systems deutlich geworden sein.
Weitere Details entnehmen Sie den FS20 Handbchern, die jedem Sensor beiliegen und auch online
einsehbar sind schauen Sie z.B. auf der ELV-Homepage unter FS20-S4A nach, dort finden Sie das
Handbuch als pdf.
Version 4.0
Seite 15
fhem-Grundlagen
Wir knnen uns nun dem eigentlichen Spa zuwenden: der Einbindung der gekoppelten Gerte. In
diesem Abschnitt werden grundlegende FS20- und fhem-Befehle dargestellt. Es liegt im Auge des
Betrachters, ob man dies als Scripting oder bereits als Programmierung bezeichnet :-)
Auch werden wir die unterschiedlichen Mglichkeiten kennenlernen, um diese Konfigurationen
vorzunehmen.
fhem installieren
Die Installationsschritte sind abhngig vom verwendeten Computer. Grundstzlich sind folgende Schritte
erforderlich:
1. Installieren des Betriebssystems, z.B. Linux oder Windows
2. Installieren von Perl (dies ist Voraussetzung, da fhem in Perl programmiert ist)
3. Installieren von fhem
Im fhem-Wiki finden Sie Anleitungen zur Installation fr unterschiedliche Betriebssysteme und teilweise
auch fr bestimmte Hardware, z.B. FritzBox oder QNAP NAS. Bitte schlagen Sie dort nach.
fhem Systemberblick
fhem besteht aus dem Kernel (fhem.pl) sowie einer Vielzahl von Modulen. Module knnen die
unterschiedlichsten Aufgaben bernehmen vom Anbinden eines Hardwaresystems ber die
Bereitstellung eines Frontends bis zur Automatisierung von Aufgaben. Eine bersicht der grundlegenden
Systemarchitektur finden Sie hier.
Version 4.0
Seite 16
Liste der Rume zu Beginn der Einrichtung erscheinen nur Unsorted und Everything. Rume
werden den Gerten in der Konfiguration mittels attr <Gert> room <Raumname> zugeordnet.
Links auf Hilfetexte, die fhem-Doku und zur Konfigurationsseite Edit files
Mit Klick auf den save-button speichern Sie Ihre Konfigurations-nderungen in der Datei
fhem.cfg . Achtung! Nach Eingabe eines fhem-Befehls NICHT auf den SAVE-button klicken,
sondern lediglich <ENTER> bettigen!
In neueren fhem-Versionen gibt es statt des im screenshot gezeigten save-buttons im oberen
Bereich des Mens den Eintrag "save config", dieser hat dieselbe Funktion.
Nach der Einrichtung erscheinen hier Ihre Gerte mit der Darstellung des Schaltzustands und
einem on/off-Schalter
Mit dem Event-Monitor knnen Sie alle Funkbefehle verfolgen. Sehr hilfreich, um Ablauf und
Inhalt der Funkkommunikation zu verstehen.
Hinweis: Der Funkverkehr ist auch ber ein telnet-Terminalprogramm an Port 7072 zu sehen,
wenn Sie in der telnet-Terminalsitzung inform timer eingeben.
Version 4.0
Seite 17
Das ist nun also der neue fhem-Name des Funktelegramms, also dem Paar aus gedrcktem Taster bzw.
Taster-Paars und dem entsprechend angelernten Aktor. Auf dem fhem-frontend erscheint nun
wz_LampeKlein mit den klickbaren Links fr ON und OFF.
Version 4.0
Seite 18
Damit ist Ihr erstes fhem-device erstellt. Sie knnen diese Steckdose nun vom Schalter und vom
Webfrontend steuern.
Um Ihre neue Konfiguration mit dem umbenannten FS20-device dauerhaft in der Konfigurationsdatei
fhem.cfg zu speichern,
Wenn derselbe Schalter mehrere Aktoren schalten soll, lernen Sie die weiteren Aktoren einfach genauso
wie den ersten am selben Sensor (Schalter) an.
Um zu verstehen, welche Funktelegramme mit welchen Inhalten gesendet werden, verwenden Sie den
Event Monitor oder Terminal 7072 inform timer (Anleitung siehe Zugang ber Terminalprogramm,
Telnet)
Mit dem set-Befehl knnen auch mehrere Gerte gemeinsam geschaltet werden. So knnen Sie z.B.
mehrere Gerte aufzhlen:
set lamp1,lamp2,lamp3 on
oder falls Ihre Gerte passend benannt sind- einen Bereich angeben:
set lamp[1-3] on
oder wildcards verwenden (eine Perl-Besonderheit: * reicht nicht, es muss .* angegeben werden):
set lamp.* on
Weitere Beispiele und Erklrungen finden Sie in der commandref unter Device Specifications. Mit den
bisher beschriebenen Schritten lsst sich bereits eine recht umfangreiche Konfiguration erreichen.
Aufzeichnung in Logdateien
Alle Funktelegramme, egal ob von einem Sensor oder von fhem/CUL gesendet, werden in Logdateien
mitgeschrieben. Besonders wichtig ist die Haupt-Log-Datei von fhem. Diese ist normalerweise in
Monatsscheiben aufgeteilt. In meinem System sieht das so aus:
Der Inhalt der Logdatei sind alle Funktelegramme, aber auch Fehlermeldungen
von fhem. Insbesondere deshalb ist es wichtig, immer mal wieder, sptestens
aber beim Auftreten von Fehlern in die Logdatei zu schauen.
Hier ein Auszug:
2012.03.12
2012.03.12
2012.03.12
2012.03.12
08:40:00
09:01:01
09:20:01
09:20:01
2:
2:
2:
2:
FS20
FS20
FS20
FS20
set
set
set
set
Die Funktion autocreate legt auerdem eine Logdatei je Gert an. Insbesondere fr Messgerte wie
Temperatursensoren ist diese wichtig, da der Inhalt die Grundlage fr die Darstellung in Diagrammen ist.
Dazu spter mehr.
Bevor weitere fhem-Befehle erklrt werden, zunchst ein Blick auf die Konfiguration von fhem.
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 19
fhem-Konfiguration - Attribute
Die in fhem angelernten bzw. manuell angelegten Gerte knnen weiter konfiguriert werden, indem
ihnen Attribute mit einem Wert zugewiesen werden.
Die Einstellungen z.B. zu ez_LichtRegal knnen ber das webfrontend eingesehen werden, indem man
nach dem Klick im linken Bereich auf Everything nicht auf ON oder OFF, sondern auf den Namen des
Gertes klickt, z.B. auf ez_LichtRegal. Dadurch erreicht man diesen sogenannten device-DetailBildschirm:
Die Vernderung von Gerte-Attributen (Details spter) knnen Sie auf drei unterschiedlichen Wegen
erreichen:
1. Klicken Sie im oben gezeigten Detail-screen auf einen Attribut-Namen, um dessen Wert zu
bearbeiten oder whlen Sie aus der Dropdown-Liste das Attribut aus, das Sie hinzufgen
mchten. Als Beispiel whlen Sie das Attribut model aus, dann in der rechten Liste fs20-st und
klicken dann die Schaltflche attr. Schlieen Sie Ihre Konfiguration ab durch Eingabe des
Befehls save in das Eingabefeld oder klicken auf "save config" im Men, durch den Ihre
Konfiguration in der Datei fhem.cfg gespeichert wird.
2. Geben Sie den Befehl attr wz_MediaServer model fs20-st in das Eingabefeld ein und
besttigen Sie mit <ENTER>. Schlieen Sie Ihre Konfiguration ab durch Eingabe des Befehls save
in das Eingabefeld, durch den Ihre Konfiguration in der Datei fhem.cfg gespeichert wird.
3. Klicken Sie im linken Bildschirmbereich auf Edit Files, dann auf fhem.cfg (oder verwenden Sie
einen anderen Editor). Scrollen Sie zu der Definition Ihres devices. Fgen Sie darunter die Zeile
attr wz_MediaServer model fs20-st ein. Klicken Sie im oberen Bildschirmbereich den
button save fhem.cfg.
Alle diese Bearbeitungsvarianten erzielen denselben Effekt: Sie ndern Ihre fhem-Konfiguration und
speichern Ihre nderungen in der Datei fhem.cfg . Am bequemsten ist der
Weg 1, der auch Tippfehler bei der Eingabe weitgehend vermeidet. Zur besseren Lesbarkeit sind im
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 20
weiteren Text alle Befehle so dargestellt, wie sie in das Kommandofeld eingetippt werden knnen
alternativ knnen Sie alle Befehle aber auch durch Klicks im Detailbildschirm der Gerte erreichen.
Probieren Sie die drei Varianten der fhem-Konfiguration aus: ber ber das webfrontend, ber
Kommandozeile oder direkt in der fhem.cfg. Es wird empfohlen, den Groteil der Konfigurationsschritte
mit Variante 1 oder 2 vorzunehmen. Lediglich das Definieren neuer devices (also define.) muss ber
die Varianten 2 oder 3 erfolgen, da es das device im webfrontend ja noch nicht gibt und man daher auch
nicht dorthin navigieren kann.
Besondere Beachtung verdient die Information STATE (siehe Screenshot ). STATE zeigt den zuletzt
gesendeten Zustand des Gerts. Meist ist dieser Zustand on oder off, kann aber auch toggle oder
dim50% oder (bei einem Temperatursensor) T: 8.0 C sein je nachdem, was zuletzt gesendet wurde
und welches Gert verwendet wird.
Die Angabe des Modells erlaubt eine passendere Darstellung in den fhem-frontends, z.B. werden fr
Schalter keine Dimm-Befehle angeboten etc.
Auch knnen Sie nun jedes device einem Raum in Ihrer Wohnung zuordnen:
attr wz_MediaServer room Wohnzimmer
attr wz_Lampe room Wohnzimmer
Sie sehen nun im Men links einen neuen Raum Wohnzimmer. Wenn Sie dort klicken, werden alle
Gerte angezeigt, die diesem Raum zugeordnet wurden.
Hinweis: Einen existierenden Raum knnen Sie im Detailscreen durch Auswahl aus der dropdown-Liste
zuordnen. Wenn Sie einen neuen Raum anlegen mchten, mssen Sie diesen dem ersten
relevanten Gert durch Eingabe des Befehls in das Kommandofeld zuordnen. Allen weiteren
Gerten kann dann auch dieser neue Raum wieder ber Auswahl aus der Dropdown-Liste
zugeordnet werden.
Wie bereits erklrt, gibt es drei Mglichkeiten zur Konfiguration von fhem:
1. ber die Detail-Sicht der einzelnen Gerte
2. ber die fhem Kommandozeile
3. ber Eintrge direkt in der Datei fhem.cfg
Wichtig: Bei Nutzung der Varianten 1 und 2 werden Ihre nderungen erst dann in die Datei fhem.cfg
geschrieben, wenn Sie ber die Kommandozeile den Befehl save ausfhren.
Da der Weg 1 empfohlen wird, werden Sie fr gewhnlich nicht direkt in fhem.cfg arbeiten.
Dennoch ist es wichtig, die Syntax und den Inhalt zu verstehen.
Version 4.0
Seite 21
Hinweis: nderungen an Gerten werden erst dann in der Konfiguration gespeichert, wenn man im
Kommandofeld den Befehl save eingibt und dann <ENTER> drckt. Verwendet man diesen
Befehl nicht, sind alle Eingaben beim nchsten Neustart verloren.
Hinweis: Fr Details lesen Sie den Anhang: Ein Einblick in die Konfigurationsdatei fhem.cfg .
Ein direktes Bearbeiten dieser Datei ist fr gewhnlich nicht erforderlich ebenso wenig wie das direkte
Bearbeiten der Registry eines Windows-Systems.
Beschreibung
modpath
Gibt an, unter welchem Pfad des Betriebssystems sich der Ordner fhem befindet. Der
Pfad hngt von dem Betriebssystem und hufig auch der Hardware ab, auf der fhem
installiert wurde.
attr global modpath /var/InternerSpeicher/fhem
(Hier muss natrlich der zu Ihrem Gert passende Pfad stehen!). Durch die Angabe %Y-%m
wird eine separate Datei pro Monat pro Jahr angelegt wie weiter oben im InternalWert currentlogfile zu sehen ist. Das erlaubt eine zielgerichtete Archivierung, da die
Logdateien je nach Anzahl und Art der verwendeten Gerte recht schnell recht gro
werden knnen.
Im Beispiel ist zu sehen, dass die Logdateien auf einen USB-Stick ausgelagert wurden.
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 22
statefile
Neben der fhem.cfg spielt auch die Datei fhem.save eine zentrale Rolle. In dieser Datei
werden die Schaltzustnde aller Gerte gespeichert, wenn Sie save ausfhren so
werden alle Gerte nach einem Neustart von fhem wieder mit ihrem letzten
Schaltzustand angezeigt.
Der Speicherort dieser Datei ist festgelegt durch
attr global statefile /var/InternerSpeicher/fhem/log/fhem.save
verbose
Eine vollstndige (lange) Liste aller global-Attribute finden Sie in der commandref hier.
Die FHT-ID (im Beispiel 2332) ist quasi der Hauscode des Hardwaresystems FHT, das parallel zu FS20
betrieben werden kann und zur Heizungssteuerung dient. Solange Sie keine FHT-Gerte betreiben (z.B.
FHT80b, FHT8V, ) setzen Sie die FHT-ID auf 0000, da sonst unntige Funktelegramme gesendet
werden.
Zum Betreiben von FS20-Komponenten wird der Hauscode ausschlielich in der Definition der FS20Gerte verwendet, es ist nicht erforderlich, den FS20-Hauscode dem CUL zuzuweisen.
Version 4.0
Seite 23
Gerte-Infos: Readings
Einige Gerte stellen zustzliche Informationen zur Verfgung, sogenannte Readings. So wird z.B. bei
einem Bewegungsmelder der Zeitpunkt des letzten Auslsens angezeigt, bei einem Temperatur- und
Luftfeuchte-Sensor (S300TH) stehen eben die zustzlichen Readings Temperatur, Luftfeuchtigkeit und
Zeitpunkt der letzten bermittlung zur Verfgung. Auch diese Readings werden im Detail-Bildschirm
eines Gerts angezeigt.
Hier als Beispiel ein Temperatur- und Luftfeuchte-Sensor:
Die Einrichtung von Gruppen innerhalb des Hardwaresystems. Diese Gruppen sind auch von
fhem aus bedienbar. Die Vorgehensweise ist in den jeweiligen Handbchern beschrieben, siehe
auch Funktionsgruppen, Lokale Master, Globale Master
Die Zuordnung der zu gruppierenden Gerte zu einem Makro (siehe notify spter in diesem
Dokument)
Die Einrichtung von Gruppen innerhalb fhem. Dieser Weg ist in diesem Kapitel beschrieben.
Wie bereits erwhnt liegt der wesentliche Unterschied im erzeugten Funkverkehr: Whrend fr das
Schalten einer im Hardwaresystem gebildeten Gruppe das Senden nur eines Funktelegramms erfordert,
wird beim Schalten einer in fhem gebildeten Gruppe ein Funktelegramm je Gert gesendet.
Version 4.0
Seite 24
Um alle Gerte einer Gruppe (also z.B. alle Gerte im Wohnzimmer) mit nur einem Klick gemeinsam
schalten knnen zu knnen, legen Sie in der fhem.cfg die Gruppe fest:
define wz_LichtAlle structure room wz_Lampe wz_MediaServer
Nach dem Speichern wird nun auch die Struktur wz_LichtAlle mit ihren ON und OFF-Schaltern angezeigt
und ist bedienbar. Wenn Sie auch diese Struktur dem Raum Wohnzimmer zuweisen, wird die Struktur
auch in diesem Raum angezeigt:
attr wz_LichtAlle room Wohnzimmer
Dabei wird diese Festlegung nun auf alle der Struktur zugehrigen Objekte vererbt (wz_Lampe und
wz_MediaServer werden ebenfalls dem Raum Wohnzimmer zugeordnet).
Details zur Einrichtung finden Sie hier.
Timer
Viele Aktoren beherrschen auch eine timer-Funktion, so z.B. die Funksteckdose FS20-st oder der
Dimmer FS20-di.
In fhem stehen hierfr mehrere Befehle zur Verfgung. Ein Beispiel ist
set lamp1 on-for-timer 10
(lamp1 fr 10 Sekunden einschalten, dann wieder ausschalten). Analog gibt es den Befehl off-for-timer.
Die Zeitangaben fr timer-Befehle akzeptieren jeglichen ganzzahligen Wert in Sekunden. Der timer
verfgt leider nur ber 112 Werte, mit denen sich in wachsender Abstufung Zeitrume von 0,25
Sekunden bis 4,25 Stunden abbilden lassen. (Die Auflsung betrgt 0,25s bei 0 bis 4s, 0,5s von 4 bis 8s,
1s von 8 bis 16s usw. Fr bessere Genauigkeit bei groen Werten verwenden Sie besser at) Ggf. wird Ihr
Wert automatisch umgesetzt auf den nchsten Passenden Wert in diesem Fall erscheint eine Meldung
im Log.
Da der Timer innerhalb des Aktors abgearbeitet wird, und der letzte an ihn gesendete Befehl ein on-fortimer ist, wrde nun das Glhbirnen-Symbol im Webfrontend dauerhaft auf ON stehenbleiben. Um dies
zu verhindern gibt es das Attribut follow-on-for-timer. Damit aktivieren sie diesen Modus fr Ihr
Gert. Setzen Sie also z.B.
attr lamp1 follow-on-for-timer 1
Dimmer
Als spezielle Aktoren gibt es auch Dimmer, z.B. FS20-di. Diese lassen sich wie Schalter mit on/off/toggle
bedienen, beherrschen aber einige zustzliche Befehle: dimup, dimdown, dimupdown sowie die
Einstellung auf vorgegebene Dimmstufen, z.B. dim50%. Die vollstndige Liste der 16 Dimmstufen finden
Sie in der fhem-Referenz.
Wenn Sie an einem Sensor (Schalter) den Taster lnger als 0,4 Sekunden gedrckt halten, sendet dieser
statt on/off/toggle den Befehl dimup/dimdown/dimupdown. So lassen sich wiederum ohne
Programmierung auch Dimm-Vorgnge erreichen.
Ein Dimmen aus dem fhem-Webfrontend ist ber eingetippte Befehle mglich, Sie knnen also z.B. set
lampe1 dimup oder set lampe1 dim50% eingeben.
Version 4.0
Seite 25
Eine besondere Variante via fhem ist die Einstellung eines gleichmigen Dimm-Vorgangs ber einen
Zeitraum. So kann z.B. die Nachtischlampe zum wakeup-light werden, wenn sie ber ca. 20 Minuten
(1280 Sekunden) langsam heller wird:
set lampe1 dim100% 1280
Die Funktionen des Wakeuplight lassen sich beliebig erweitern. So kann man den o.g. Befehl z.B. durch
einen at-Befehl (siehe nchstes Kapitel) auslsen lassen und ber eines der Multimedia-Module (siehe
ebenfalls weiter unten in diesem Dokument) mit der Wiedergabe von Musik und dem Hochfahren der
Rollden kombinieren.
(Um eine solche Zeitschaltuhr anzulegen, tippen Sie den o.g. Befehl einfach im fhem webfrontend in
das Kommandozeilen-Feld ein.)
LampeAnUm1700 ist hierbei lediglich ein Name/Platzhalter, unter dem diese Zeitschaltuhr in fhem
gespeichert wird und spter wiedergefunden werden kann. Sobald Sie den oben genannten Befehl
eingeben, erscheint dieses geplante Ereignis unter Everything im Abschnitt at. Ist die angegebene
Uhrzeit erreicht, wird die Anweisung genau einmal ausgefhrt. Damit ist das Ereignis erfolgreich
abgearbeitet und wird gelscht.
Auch Wiederholungen sind mglich, z.B. tglich um 17:00. Dazu wird der Uhrzeit ein * vorangestellt:
define LampeTaeglichAn at *17:00:00 set lamp on
Der modify-Befehl dient dazu, den Zeitpunkt zu ndern, ohne den Befehls-Teil erneut angeben zu
mssen:
modify LampeTaeglichAn *17:30:00
ber die absolute Angabe von Schaltzeiten (um 17:00) hinaus erlaubt der at-Befehl auch relative
Angaben. Dies wird durch ein vorangestelltes Plus-Zeichen erreicht. Also in 10 Minuten:
define a5 at +00:10:00 set lamp on
Die Kombination von + und * bewirkt dann z.B. alle 10 Minuten, hier fr 30 Sekunden:
define a6 at +*00:10:00 set lamp on-for-timer 30
Fr solche Durchlufe kann auch die gewnschte Anzahl der Wiederholungen in geschweiften Klammern
angegeben werden:
define a7 at +*{3}00:00:02 set lamp on-for-timer 1
also z.B.
define Schalter1Notify notify Schalter1 set wz_Media on
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 26
Der bei definenotify angegebene Name bezeichnet den Event-Handler. Die besondere Eigenschaft
dieser notify-Anweisungen ist, dass sie nicht zum Zeitpunkt der Eingabe oder zu einer festgelegten
Uhrzeit ausgefhrt werden, sondern im Hintergrund mitlauschen. Sobald der nach notify angegebene
Sensor (Schalter1) einen Funkbefehl bermittelt, wird die im notify angegebene Anweisung ausgefhrt.
Die oben dargestellte Zeile schaltet also wz_Media an, sobald der Taster Schalter1 bettigt wird.
Hufig mchten Sie mit nur einem Klick mehrere Gerte schalten. In diesem Fall knnen Sie als
<command> auch eine Liste von Gerten angeben (siehe devspec beim Befehl set) oder eine Struktur
schalten (siehe structure).
Allerdings ist das o.g. Beispiel -so wie es da steht- ein Anwendungsfall vornehmlich fr die Einstellung als
4-Kanal-Schalter, also Tastern: das Gert soll beim Bettigen des Schalter1 immer eingeschaltet werden.
Fr das Ausschalten wrde man also analog Schalter 2 mit dem off-Befehl koppeln:
define Schalter2Notify notify Schalter2 set wz_Media off
Ist Ihr Schalter als 2-Kanal definiert, knnen Sie herausfiltern, ob der on- oder der off-button gedrckt
wurde:
define Schalter1NotifyOn notify Schalter1:on set wz_Media on
oder Sie schalten das Licht aus, wenn Media eingeschaltet wird und umgekehrt:
define Schalter1NotifyAn notify Schalter1:on set wz_Media on;;set wz_Licht off
define Schalter1NotifyAus notify Schalter1:off set wz_Media off;;set wz_Licht on
Hinweis: Bei Aufzhlungen keine Leerstellen vor und nach den Semikola!
Als krzere Alternative zu
define Schalter1NotifyOn notify Schalter1:on set wz_Media on
define Schalter1NotifyOff notify Schalter1:off set wz_Media off
(alte Schreibweise)
Dabei hat $EVENT genau den Wert, der vom abgefragten Sensor (also Schalter1) gesendet wurde.
Sendet also Schalter1 den Wert on, so wird der Befehl set wz_Media on ausgefhrt. Sendet der
Schalter1 den Befehl off, so wird set wz_Media off ausgefhrt. Analog funktioniert das fr jeden
Befehl des Sensors, also auch toggle, dimup, dimdown etc.
Eine Beschreibung mit vielen Beispielen gibts im fhemWiki.
Verwendung von notify als Makro
Als Makro bezeichnet man das Ausfhren mehrerer Befehle auf Grund nur eines auslsenden
Ereignisses (also z.B. dem Drcken einer Taste, dem Klick auf einen Weblink o..). In diesem Sinne lsst
sich notify als Makro verstehen, wenn Sie wie oben als <command> mehrere Befehle durch Semikola
getrennt- angeben:
define Schalter1NotifyAn
notify Schalter1:on
Das Abarbeiten eines notify (Makros) wird gestartet, sobald das <pattern> eintritt.
Starten eines Makros trigger
Ein solches Ereignis muss nicht durch ein Funktelegramm ausgelst werden, sondern kann auch durch
den Befehl trigger gestartet werden.
Wenn z.B. abends in jedem Raum eine Lampe eingeschaltet werden soll:
define Abends notify Abends set wz_LampeKlein on;;set sz_Stehlampe on;;set
ku_Downlight on
Version 4.0
Seite 27
Diese Mglichkeit ist besonders zum Testen neuer notify-Makros hilfreich. Eine umfangreiche
Darstellung der Mglichkeiten von notify finden Sie in diesem Wiki-Artikel.
Bearbeiten ber das Webfrontend
Wenn Ihre notify-Definition bzw. Ihr Makro einmal erstellt ist, knnen Sie es im Webfrontend
bearbeiten. Klicken Sie dazu im Men auf Everything und scrollen dann zum Abschnitt notify. Durch
Klicken auf den Namen des notify gelangen Sie in den Detail-Bildschirm, den Sie ja von Gerten bereits
kennen:
Wenn Sie auf DEF klicken, knnen Sie die Definition Ihres notify in einem Textfeld bearbeiten z.B.
wenn Sie ein weiteres Gert zu Ihrem Makro hinzufgen mchten.
Hinweis: Im DEF-Textfeld erscheinen nur <pattern> und <command>. Der Name des notify steht
unterhalb des Textfensters.
Beenden Sie die Bearbeitung mit Klick auf die Schaltflche modify <name> .
Hinweis: Ihre nderung wird erst dauerhaft in die Konfigurationsdatei fhem.cfg bernommen, wenn Sie
nach dem Klick auf modify <name> ber das Kommandofeld den Befehl save ausfhren.
Version 4.0
Seite 28
dass das Licht nach Bettigen des Lichtschalters eben sofort angeht. Geschieht dies nicht, vermuten
viele einen Fehler und drcken den Schalter gleich noch mal
Im Rahmen der Hausautomatisierung gibt es aber hufig den Fall, dass nach dem Drcken eines
Schalters erst noch geprft werden soll, welche Aktion nun auszufhren ist ist es vielleicht Nacht und
es soll statt des grellen Korridorlichts nur eine kleinere Lampe eingeschaltet werden? Daher gibt es auch
die Alternative, den Aktor separat vom Sensor zu definieren - also nicht durch das Anlernen auf Basis
eines Sensor-Funktelegramms. Sensor und Aktor verwenden in diesem Fall NICHT DIE SELBE
Kombination von Hauscode und Tastencode; vielmehr wird in fhem ein device angelegt mit einer
ANDEREN Adresse (Kombination Hauscode+Tastencode) als der des Sensors. Auf diese separate fhemAdresse wird der Aktor angelernt. Ein Funktelegramm eines Sensors (Lichtschalter) wird dann also von
keinem Aktor umgesetzt, da kein Aktor auf dieses Funktelegramm angelernt wurde. CUL+fhem hren
das Funktelegramm (und lernen falls noch nicht geschehen- den Sensor ber autocreate an). In fhem
kann man nun mittels notify eine beliebige Reaktion auf dieses Funktelegramm, also auf das
eingetretene Ereignis (das Drcken einer Taste oder das Auslsen eines Bewegungsmelders) definieren.
Je nach im notify definierter resultierender Aktion sendet fhem ggf. ein separates Funktelegramm mit
einer anderen Adresse, auf die ein Aktor angelernt ist und seinerseits reagiert. hnliches gilt, wenn ein
Aktor gar nicht von einem physischen Schalter, sondern ausschlielich aus dem Web-Frontend
getriggert (engl. ausgelst) werden soll: Eine bestimmte Kombination von Hauscode und Tastencode
wird an keinem Sensor eingestellt, sondern nur in einem fhem-device definiert, um dann einen Aktor auf
das fhem-Funktelegramm anzulernen, das nach Klick auf on oder off im webfrontend vom CUL
gesendet wird.
Fr indirektes Pairing muss ein Aktor manuell in fhem eingerichtet werden. Hierfr wird der Befehl
defineFS20 verwendet:
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 29
Auerdem ist beim indirekten Pairing eine fhem-Kopplung zwischen Sensor und Aktor erforderlich, da
fhem zunchst nicht wissen kann, welcher Sensor welchen Aktor schalten soll. Fr diese Kopplung wird
der Befehl definenotify verwendet. Wenn also z.B. durch das Drcken von Schalter1 der Aktor
lampe1 eingeschaltet werden soll, so wird dies erreicht durch
define <name> notify <pattern> <command> , also z.B.
define S1notify notify Schalter1 set lampe1 on
In diesem Beispiel waren Sensor und Aktor aus demselben Hardwaresystem FS20. Der Aktor lampe1
kann aber ebenso gut aus einem anderen Hardwaresystem stammen man kann also z.B. einen FS20Wandschalter als Sensor verwenden, und dadurch ber notify einen HomeMatic- oder 1-wire-Aktor
schalten. Ebenso funktioniert es natrlich auch umgekehrt ein EnOcean-Sensor kann eine FS20- oder
Intertechno-Steckdose schalten.
Version 4.0
Seite 30
erzeugt eine fr PC-Bildschirme angepasste Darstellung. Den gewnschten "Skin" knnen Sie unter dem
Menpunkt "Select Style" auswhlen. Jeder Style ist die Kombination des Farbschemas (default, dark,
iOS7) und der Optimierung auf die jeweilige Bildschirmgre (default, smallscreen, touchpad).
Um eine Darstellung mit dunklem Hintergrund zu erzeugen, whlen Sie unter "Select style" aus der Liste
"dark" aus dadurch wird im Hintergrund gesetzt
attr WEB stylesheetPrefix dark
Port 8085 (WEBtablet) trgt den prefix touchpad. Hierdurch werden Schriftgre und Darstellungsart
fr Tablet-PCs optimiert.
define WEBtablet FHEMWEB 8085 global
attr WEBtablet stylesheetPrefix touchpad
Besonderheit: fr iPhone und iPad ist die Darstellung in smallscreen und touchpad so gestaltet, dass
das Webfrontend wie eine Fullscreen-App genutzt werden kann. Dazu ffnen Sie fhem
in Safari mit dem entsprechenden port (also z.B. http://<ip>:8085/fhem) . Klicken Sie auf
den Optionen-button
und whlen Sie Zum Homebildschirm. Dadurch erhalten Sie
ein neues Icon, mit dem Sie diese fhem-Seite mit nur einem Klick starten knnen. Die
Leiste fr URL und Websuche werden dann nicht angezeigt, so dass sich fhem verhlt
wie eine vollwertige App.
Version 4.0
Seite 31
Ebenso kann man den Zugang zum Detailview der Gerte blockieren (detail), das Kommandofeld
unterdrcken (input) und den save-Button ausblenden (save). Dies kann mit dem Attribut hiddenroom
erreicht werden.
Hinweis: Verwenden Sie eine ltere fhem-Version, ist insbesondere das Ausblenden des "save"-buttons
fr Anfnger empfohlen, da er durch seine Position direkt neben dem Kommando-Eingabefeld
immer wieder zu Verwirrung fhrt. Mit diesem Button wird nicht die Eingabe eines Befehls
besttigt (dazu reicht das drcken der <ENTER>-Taste), sondern es wird die aktuelle
Konfiguration gespeichert, damit sie nach dem nchsten Neustart von fhem wieder verfgbar
ist. Nach dem Ausblenden dieses Buttons kann das Speichern dadurch erfolgen, dass man den
Befehl save in das Kommandofeld eingibt und <ENTER> drckt (oder bei neueren Versionen im
fhem-Men auf "save config" klickt).
Nachher:
Version 4.0
Seite 32
erzeugt also einen neue Gruppe "Heizung", die dann als separater Block in einem Raum dargestellt wird.
Durch Setzen dieses Attributs werden also im Raum "bersicht" die Gruppen Wohnung, Heizung und
iTunes untereinander dargestellt, in einer Spalte rechts daneben erscheint die Gruppe weather. Die Liste
kann natrlich fr weitere Rume erweitert werden.
Zur Anpassung der Darstellung im Webfrontend stehen weitere Attribute zur Verfgung. Eine
vollstndige Liste der Mglichkeiten findet sich in der commandref.
Ist die default-Einstellung, solange dieses Attribut nicht gesetzt ist. Mit
attr WEB iconPath openautomation:default
Version 4.0
Seite 33
wird die Suchreihenfolge umgekehrt: wo vorhanden, werden die SVG-icons aus dem Ordner
openautomation verwendet.
Vorher:
attr WEB iconPath openautomation:default
Nachher:
Probieren Sie es doch einfach mal aus.
Hinweis: iOS 7 gestattet das Aktulisieren von jpg/png-icons mittels longpoll leider nicht. Mchten Sie
also longpoll verwenden, stellen Sie auf die Darstellung mit openautomation-icons um.
Eigene Icons
fhem sieht auerdem die Mglichkeit vor, den Gerten andere bzw. eigene Icons zuzuweisen. Dabei
kann grundstzlich jedes Bild verwendet werden, es empfiehlt sich jedoch, sich an der Gre der bereits
vorhandenen Icons zu orientieren. Legen Sie eigene Icons in den geeigneten Ordnern ab, siehe
vorheriger Abschnitt.
Icon vor dem Gertenamen - icon
Klicken Sie in der Detail-Ansicht eines Gerts auf den Link Select icon. Sobald Sie ein Icon auswhlen,
wird dem Gert ein Attribut Icon mit dem entsprechenden Dateinamen als Wert zugeordnet. Alternativ
knnen Sie dieses Attribut natrlich auch manuell eingeben oder es lschen, wenn kein Icon mehr
verwendet werden soll.
Fr die Liste der verfgbaren Icons werden von fhem alle Dateien mit dem Prefix ico angezeigt
benennen Sie Ihre eigenen Icon-Datei also ico*.jpg oder ico*.png.
Icon-Bilddateien liegen im Icon-directory fhem/www/images/default .
Hier ein Beispiel mit und ohne Icon vor dem Gertenamen:
Vorher:
attr ez_FHT icon icoHEIZUNG.png
Nachher:
Icon vor dem Raumnamen - roomIcons
Auch vor einem Raumnamen im fhem-Men kann ein icon angezeigt werden. Die Zuordnung erfolgt
ber das FHEMWEB-Attribut roomIcons: Angegeben werden durch : verbundene Paare von Raumname
und icon, die Paare sind durch Leerstellen getrennt:
Version 4.0
Seite 34
Jeder dieser Suchlufe erfolgt dabei auf Basis der Ordnerstruktur unterhalb des Dateipfads
fhem/www/images .
-
Eine Besonderheit der Suchreihenfolge ist die Bercksichtigung von stylesheetPrefix: ist hier z.B.
"dark" eingestellt, wird zunchst im Ordner dark gesucht, ob hier spezielle Icons zur Darstellung vor
dunklem Hintergrund vorhanden sind. Wird dort kein Icon gefunden, wird die Suche gem
iconPath fortgesetzt. Die Voreinstellung hierfr ist eine Suche zunchst im Ordner default, danach
im Ordner openautomation.
Wird kein icon gefunden, wird der aktuelle Schaltzustand nicht als Icon, sondern als Wort
dargestellt.
Weblink
In das fhem-webfrontend knnen Hyperlinks und Web-Grafiken eingebunden
werden. Hierzu ist das (Pseudo-)device weblink verfgbar. Details und
Beispiele finden Sie in der commandref hier .
Ein Beispiel ist das Einblenden eines Wetterberichts (Achtung: EINE Zeile!):
define Wetter weblink iframe http://www.wetteronline.de/cgibin/hpweather?PLZ=12345
Zur Anzeige und Verwendung von Wetterdaten gibt es auerdem die fhemModule weather und GDS, siehe unter Wetterbericht einbinden .
Version 4.0
Seite 35
Version 4.0
Seite 36
Auch die Variable $EVENT haben wir bereits verwendet. Sie reprsentiert den aktuellen Schaltzustand:
define Schalter1Notify notify Schalter1 set wz_Media $EVENT
Da fhem in Perl programmiert ist, gibt es auch die Mglichkeit, Perl-code aus fhem heraus auszufhren.
Oder andersherum: zustzlich zu den fhem-eigenen Befehlen lassen sich auch Perl-Routinen zur
Steuerung verwenden. Um unterscheiden zu knnen, ob fhem-Befehle oder Perl-Befehle verwendet
werden, werden Perl-Kommandos immer in geschweifte Klammern gesetzt.
Auch aus Perl-Code heraus lassen sich fhem-Befehle absetzen. Daher bewirken folgende zwei Zeilen
dasselbe:
set lamp off
{fhem("set lamp off")}
In der ersten Zeile ist der bereits bekannte fhem set-Befehl verwendet.
In der zweiten Zeile ist Perl-Code dargestellt er ist in geschweifte Klammern eingebunden. In Perl gibt
es den Befehl fhem, mit dem man aus Perl heraus fhem-Befehle ausfhren kann. Als Parameter des
Befehls fhem ist der auszufhrende Befehls-String angegeben also das, was Sie sonst in das fhem
Kommandofeld eingeben wrden.
Die Perl-Version des o.g. Codes knnen Sie nun zusammen mit einem notify oder at verwenden, oder Sie
knnen das Perl-Kommando (incl. geschweiften Klammern!) ebenso in das fhem Kommandofeld
eingeben. Durch die geschweiften Klammern wei fhem, dass es sich um Perl-Code handelt.
define LampeAusUm9 at 09:00 {fhem("set lamp off")}
Der vermutlich am hufigsten verwendete Befehl ist der if-Befehl. Seine Syntax lautet:
{ if (Bedingung) {Befehl1} else {Befehl2} }
Wenn also die Variable $EVENT den Wert off hat, wird in fhem der Befehl set wz_Media off
ausgefhrt.
Hinweis: In Codebeispielen im Wiki oder alten Forumsbeitrgen finden Sie eventuell noch die Variable
% statt $EVENT.
Version 4.0
Seite 37
Achtung: Wenn Sie im Code Ihres notify anstatt der Variable % wirklich das Zeichen % verwenden
mchten, schreiben Sie dies als %% bzw. analog \\ oder @@. Das sieht im Programmcode
seltsam aus, zum Ausfhrungszeitpunkt wird aber in einfache Zeichen umgewandelt. Details
und weitere Sonderflle finden Sie in der commandref hier im Abschnitt Notes.
Tipp:
Um ein notify oder at mit Perl-Code zu erstellen, gehen Sie in zwei Schritten vor:
1. Definieren Sie das notify/at in der Kommandozeile mit einem leeren Perl-code-Block, also
z.B. define Schalter1Notify notify Schalter1 {}
2. Wechseln Sie nun ber das Men Everything in die Detail-Ansicht Ihres at/notify. Klicken
Sie dort auf DEF um die Details Ihres at/notify zu bearbeiten. Fgen Sie erst dort den PerlCode ein. Klicken Sie schlielich die Schaltflche modify <name> zum Speichern Ihres Codes.
Auf diese Weise ist die Bearbeitung am einfachsten und entspricht der, die bereits bei notify
gezeigt wurde (siehe dort Bearbeiten ber das Webfrontend)
Hinweis: Die Schreibweise von Perl-code ist in der Detail-Ansicht ganz normal, d.h. Sie knnen ganz
normalen Perl-code verwenden. Nachdem Sie Ihre nderungen gesichert haben und
auerdem den Befehl save ausgefhrt haben, schauen Sie sich das Ergebnis in fhem.cfg an. Sie
werden feststellen, dass dort a) alle Semikola, Prozentzeichen und @ verdoppelt wurden und
b) jeder Zeilenumbruch mit einem backslash ( \ ) geschtzt wurde. Ersparen Sie sich diese
Schreibweise, indem Sie nicht direkt Ihre fhem.cfg bearbeiten, sondern die Detail-Ansicht Ihres
at/notify zur Bearbeitung von Perl-code verwenden.
Tipp:
Verwenden Sie einen Editor, bei dem Schlsselwrter und vor allem zusammengehrende
Klammerpaare ersichtlich sind. Der hufigste (Anfnger-)Fehler sind vergessene oder in
falscher Reihenfolge gesetzte schlieende Klammern! Verwenden Sie z.B. das kostenlose
Notepad++ . Erst nachdem Sie in Notepad++ alle Klammern richtig gesetzt haben, kopieren Sie
Ihr Miniprogramm nach fhem und hngen es z.B. wie oben beschrieben an ein at oder notify.
Tipp:
Fr Notepad++ gibt es die Mglichkeit, fhem-Befehle erkennen zu lassen. Damit lassen sich
Tippfehler leichter finden. Installieren Sie dafr die zustzliche Programmiersprache fhem und
whlen Sie diese beim Bearbeiten der fhem.cfg oder Ihrer include-Datei aus.
Tipp:
Version 4.0
Seite 38
Die Variable $EVENT ist hier ersetzt durch die Funktion Value(), es wird der Status des Gerts Schalter1
ausgelesen. Man hat nun die Mglichkeit, den Status eines beliebigen Gerts als Schaltbedingung
einzubauen, es muss nicht dasselbe sein, das den notify auslst. Also z.B.
define Schalter1Notify notify Schalter1 { if ( Value("Schalter1") eq "off" &&
Value("Schalter2") eq "off") {fhem("set wz_Media off")} }
Hier wird wz_Media nur dann ausgeschaltet, wenn sowohl Schalter1 als auch Schalter2 den Zustand off
haben.
Wie im Abschnitt fhem-Konfiguration: Das besondere Gert Global gezeigt, verfgen viele Gerte
nicht nur ber den STATE im oberen Bereich (der bei den meisten Gerten on oder off ist, z.B. bei
Thermometern aber die aktuellen Messwerte zeigt), sondern auch ber Detailwerte, die sogenannten
Readings im unteren Bildschirmbereich der Detailansicht.
Die Funktion Value() liest STATE des Gerts aus, oben blau markiert.
Um ein Reading (oben rot markiert) auszuwerten, wird die Funktion ReadingsVal() verwendet. Hier
muss man zustzlich zum Devicenamen auch den Namen des gewnschten Readings hinterlegen.
Auerdem wird ein Default-Wert angegeben, der verwendet wird, falls das Auslesen des Readings
fehlschlagen sollte. Die Syntax ist
ReadingsVal(<device>, <reading>, <default-Wert>)
Mchte man also einen Schaltvorgang z.B. von der gemessenen Temperatur des im screenshot
dargestellten device abhngig machen, knnte das so aussehen:
Version 4.0
Seite 39
Es wird also jede Stunde geprft, ob die Auentemperatur unter 20 Grad Celsius liegt und abhngig
davon die Heizung ein- oder ausgeschaltet. (o.k., man kann den Temperatursensor ja auch nach innen
hngen ;-)
Wenn statt des Reading-Werts der Zeitstempel ausgelesen werden soll, verwenden Sie die Funktion
ReadingsTimestamp(<device>, <reading>, <default-Wert>)
$EVTPART0,
$EVTPART1 usw.
Erklrung
Enthlt den Wert des zuletzt eingetretenen Ereignisses, also z.B. on oder off oder
toggle oder 20C. Die alte Schreibweise dafr ist das Prozentzeichen, die neue
und empfohlene Schreibweise ist $EVENT.
Wenn der vom Gert bermittelte event aus mehreren Worten besteht (getrennt
durch Leerzeichen), so enthlt $EVTPARTx die einzelnen "Worte". Bei einem eventWert "actuator: 86 %" enthalten die Variablen also folgende Werte:
$EVENT: actuator: 86 %
$EVTPART0: actuator:
$EVTPART1: 86
$EVTPART2: %
$NAME
Enthlt den Namen des Gerts, von dem das Ereignis ausgelst wurde. Die alte
Schreibweise dafr ist das at-Zeichen @, die neue und empfohlene Schreibweise ist
$NAME.
$we
Die Programmiersprache perl hat die Besonderheit, dass Variablen nicht mit einem Typ definiert
werden. Deklariert man also z.B. MeineVariable (my $MeineVariable;), so wird dabei nicht angegeben,
ob sie vom Typ Character, Integer, Date o.. ist. Das vereinfacht die Deklaration und fhrt zu weniger
Fehlermeldungen bei Wertzuweisungen im weiteren Programmverlauf. Allerdings muss bei spteren
Auswertungen klargestellt werden, ob der Wert der Variable als Character (String) oder als Zahl
betrachtet werden soll. Ein Beispiel:
my $var1 = '10'; my $var2 = '2';
# Ergibt true, da die Zahl 10 grer ist als die Zahl 2:
if ($var1 > $var2)...
# Ergibt false, da die Zeichenfolge 10 kleiner ist als die Zeichenfolge 2:
if ($var1 gt $var2)...
Die Unterscheidung wird also nicht zum Zeitpunkt der Variablendeklaration durchgefhrt, sondern
durch die Auswahl des Operators (hier > oder gt). Daher merke:
<, >, <=, >=, ==, !=
lt, gt, le, ge, eq, ne
Version 4.0
Seite 40
Auch sei darauf hingewiesen, dass der Operator eq auf identischen Inhalt prft, zB
my $val="on"; if ($val eq "on") #ist true
Dieser Mustervergleich (matching) ist uerst mchtig und firmiert auch unter dem Namen "Regular
Expression" oder kurz "regexp". Mehr Lesestoff findet sich z.B. hier.
Wenn Sie am Wochenende lnger schlafen mchten und daher auf diesen Weckdienst verzichten
wollen, knnen Sie das folgendermaen erreichen:
define WeckenMitLicht at *08:00 { if (!$we) { fhem("set sz_Lampe on") } }
Die Variable $we wird von fhem automatisch gefllt: Sie ist true an Samstagen und Sonntagen, und
false an Wochentagen.
Mit einem ! knnen Sie auerdem die Auswertung umkehren: !$we steht fr nicht am Wochenende
und ist gleichbedeutend mit nur an Wochentagen.
Wenn Sie also am Wochenende zu einer spteren Zeit geweckt werden mchten:
define WeckenMitLichtWE at *09:30 { if ($we) {fhem("set sz_Lampe on")}
Version 4.0
Seite 41
Holiday
In einer separaten Datei werden alle Feiertage eines Jahres gelistet. Hier ein Beispiel des Datei-Inhalts
von Bayern.holiday (mit einer kleinen Erweiterung am Ende) :
#
1
1
1
1
1
1
1
1
#
#
2
2
2
2
2
Osterbezogene Feiertage
Format: 2 <relative Tage von Ostern> <Text>
-2 Karfreitag
1 Ostermontag
39 Christi Himmelfahrt
50 Pfingsten
60 Fronleichnam
also z.B.
in fhem eingebunden.
ber die Kommandozeile knnen Sie dann prfen, ob an einem bestimmten Datum ein Feiertag ist:
get <holidayname> mm-dd
get Bayern 12-26
Das Ergebnis ist none oder der in der Liste hinterlegte Name des Feiertags.
holiday2we
Wenn eine Ihrer Feiertagsdateien zur Ermittlung von Schaltvorgngen einbezogen werden soll, whlen
Sie diese zur berleitung in die Variable $we aus:
attr global holiday2we Bayern
Es wird nun tglich um Mitternacht geprft, ob der anbrechende Tag gem der angegebenen holidayDatei ein Feiertag ist und die Variable $we ggf. auf true gesetzt.
Verschachteltes at
Ein hufiger Anwendungsfall ist das Schalten zu einer bestimmten Uhrzeit mit von der Startzeit
abhngigen weiteren Schaltvorgngen. Beispielsweise soll Ihr morgendlicher Weckvorgang um 7:30
starten mit dem langsamen Hochdimmen der Nachtischlampe. Auerdem soll 15 Minuten spter das
Rollo hochgefahren und schlielich 30 Minuten nach wakeup-Zeit die Nachtischlampe wieder
ausgeschaltet werden. Wichtig: Den Startzeitpunkt knnen Sie leicht mit modify wakeup *08:00
ndern die Angabe z.B. fr das Rollo bezieht sich auf den Start dieser Prozedur, wird also durch das
modify ebenfalls verschoben.
Als Code sieht das so aus:
Version 4.0
Seite 42
Beachten Sie die Verwendung der * bei den Zeitangaben: Der wakeup-Zyklus soll tglich ausgefhrt
werden, also Angabe mit * . Nach diesem tglichen Start sollen aber die weiteren Steuerungen nur
jeweils einmalig ausgefhrt werden, daher ist hier bei den Zeitangaben kein * gesetzt.
Ein detailliert erklrtes Beispiel dazu finden Sie im fhem-wiki.
Heizungssteuerung
Die Steuerung von Heizungen kann zunchst in drei Bereiche gegliedert werden:
1. Messen der Ist-Temperatur
2. Berechnen der erforderlichen Heizleistung, um von der gemessenen Ist-Temperatur zur
gewnschten Zieltemperatur zu gelangen. Dabei soll die angeforderte Heizleistung umso grer
sein, je grer der Unterschied von Ist- und Solltemperatur ist, damit die Solltemperatur
mglichst schnell erreicht wird.
3. Regeln der Heizleistung
Version 4.0
Seite 43
Thermostat zur zuletzt eingestellten Solltemperatur zurck und passt darauf basierend die Heizleistung
wieder an. So wird ein fr drauen heizen vermieden.
Auch kann man ber die reine Beeinflussung der Solltemperatur hinausgehen. So kann man z.B. den
Heizungsbrenner abschalten, wenn alle Thermostate als erforderliche Heizleistung 0% melden.
Hinweis: Zur direkten Beeinflussung des Heizungsbrenners ist es in der Regel erforderlich, einen
Funkschalter an die Heizungsanlage anzuschlieen. Dies nicht von einem Elektriker oder
Heizungsfachmann durchfhren zu lassen, gefhrdet nicht nur die Heizanlage, sondern auch
Sie es wre Sparen am falschen Ende !
In meinem eigenen Haushalt betreibe ich einen Funk-Raumthermostat in nur einem Raum, dessen
Solltemperatur ich abhngig vom HomeStatus setze. Auf Ventilstelltriebe verzichte ich vollstndig.
Meldet der Thermostat eine erforderliche Heizleistung von <50%, wird der Heizbrenner meiner
Etagenheizung durch fhem abgeschaltet. Meldet der Thermostat eine erforderliche Heizleistung von
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 44
>50%, wird der Brenner freigegeben und die Heizungsanlage arbeitet auf die dort fest eingestellte
Solltemperatur (=Wohlfhltempratur 21C) hin.
Da fhem zwei PID-Module bietet ( PID und die erweiterte Version PID20), ist es auerdem denkbar,
regulre Funkthermometer zu verwenden, die erforderliche Heizleistung durch den PID-Regler in fhem
zu berechnen und gekoppelte Funk-Ventilstelltriebe direkt zu steuern und/oder den Heizbrenner direkt
zu steuern. Dabei knnen die Komponenten durchaus aus unterschiedlichen Hardwaresystemen
stammen, also z.B. Temperaturmessung mit 1-wire und Heizkrperreglung mit FHT, HomeMatic oder
MAX.
Fr welchen Weg Sie sich entscheiden, hngt von den Gegebenheiten ihres Heims und Ihrer
Heizungsanlage ab.
Die an fhem anbindbaren Hardwaresysteme sind:
Hardwaresystem
FHT
HomeMatic
MAX!
1-wire und andere
Raumthermostat
Ventilstelltrieb
Thermostat +
Stelltrieb in einem
FHT80b
FHT8v
-/-
HM-CC-TC
(alt)
HM-CC-VD
(alt)
HM-CC-RT-DN
(neu)
-/-
-/-
Ja
Nur Thermometer
-/-
-/-
Mit den Schaltflchen am oberen Rand kann die Zoomstufe (Tag, Woche, Monat) verndert werden,
auch kann man mit den grnen Pfeiltasten durch die Historie wandern.
Die dargestellten Werte werden aus der zugeordneten Logdatei gelesen. In der commandref finden Sie
die relevanten Infos unter FileLog und weblink fileplot .
Details dazu folgen in der erweiterten Version dieses Dokuments.
Version 4.0
Seite 45
Beleuchtung
Heizung
Musik
Zuhause
Korridorbeleuchtung
an fr 5 Minuten
Solltemperatur 21C
Starten
Schlafen
Solltemperatur 18C
Stoppen
Kurz weg
Alle aus
Solltemperatur 19C
Stoppen
Lange weg
Alle aus
Solltemperatur 17C
Server herunterfahren
Auch kann der HomeStatus zur Steuerung weiterer Gerte verwendet werden. So soll z.B. morgens zur
Weckzeit das Wakeuplight nur dann aktiviert werden, wenn auch jemand zuhause ist (HomeStatus
Zuhause oder Schlafen) oder nachts durch den Bewegungsmelder nicht das grelle Korridorlicht, sondern
nur eine schwache Beleuchtung eingeschaltet werden (HomeStatus Schlafen), whrend die Alarmanlage
nur dann aktiv ist, wenn niemand zuhause ist (HomeStatus Kurz weg oder Lange weg).
In fhem sieht diese Tabelle z.B. so aus:
(In der ersten Zeile sieht man den aktuelle Schaltzustand der Gerte, im unteren Block den Zielzustand
je Status, hier home, sleep, away, travel)
Ein Beispiel mit dem zugehrigen code findet sich im fhem-wiki.
Der Komfort kann weiter erhht werden, indem das Setzen des Status automatisch erfolgt. Zur
Anwesenheitserkennung gibt es unterschiedliche Mechanismen:
-
Version 4.0
Seite 46
Verwendung von Bewegungsmeldern funktioniert gut fr den bergang von niemand da ->
bewohnt, jedoch ist schwierig herauszubekommen, ob alle Bewohner das Haus verlassen haben
oder nur gebannt vor dem Fernseher sitzen.
Verwendung von Mikrotastern, um zu erkennen, ob die Haus-/Wohnungstr verschlossen ist nur
nutzbar falls nachts nicht abgeschlossen wird, erkennt auch nicht, ob niemand zuhause ist oder alle
schlafen.
Erkennung ber Bluetooth dies verbraucht bei mobilen Gerten jedoch noch zu viel Strom, um
dauerhaft genutzt werden zu knnen.
Erkennung des Nutzer-Aufenthaltsorts, z.B. ber Geofancy (zu dem auch ein gleichnamiges fhemModul existiert) auch hierzu erforderliche GPS-Empfnger verbrauchen in mobilen Gerten zu viel
Strom, um dauerhaft eingeschaltet bleiben zu knnen.
Manuelles Setzen des HomeStatus ber einen Wandschalter neben der Eingangstr funktioniert
zuverlssig, sofern nicht vergessen wird, den Schalter beim Verlassen oder Betreten der Wohnung
zu bettigen :)
Der Knigsweg fr dieses Thema ist also leider noch nicht gefunden. Welcher Weg fr Ihre Umgebung
am besten passt, mssen Sie selbst entscheiden.
In meinem eigenen Haushalt habe ich mich fr das manuelle Setzen des HomeStatus durch einen
Schalter neben der Eingangstr und eine Fernbedienung neben dem Bett entschieden.
Anwesenheitssimulation
Um whrend des eigenen Urlaubs potentiellen Einbrechern vorzugaukeln, dass jemand zuhause sei,
lassen sich Gerte in definierbaren Zeitrumen zufllig ein- und ausschalten. Beispiele und die
Einrichtung sind beschrieben im Modul RandomTimer.
Version 4.0
Seite 47
Multimedia-Gerte
Eine zunehmende Zahl von Multimedia-Gerten kann ber LAN gesteuert werden. Ein einfaches
Anwendungsbeispiel ist das Regeln der Lautstrke bei eingehendem Anruf. Die unten angegebenen
Gerte knnen aus fhem heraus gesteuert werden. Die Anzahl verfgbarer Module wchst stndig, hier
eine kleine Auswahl (Stand 01/2014):
Gertetyp
Hersteller / Gert
fhem-Modul
Audio
Logitech
Squeezebox
SB_PLAYER
MPD
MPD
StreamRadio
Sonos
SONOS,
SONOSPLAYER
Yamaha Blueray
Player
YAMAHA_BD
Sony TV
Viera
Samsung TV
STV
LG TV
LGTV
Philips TV
PhilipsTV
AppleTV
iTunes
Yamaha
YAMAHA_AVR
Onkyo
ONKYO_AVR
Denon
DENON_AVR
Satellitenreceiver /
Set-top-boxen
Dreambox, VUplus
ENIGMA2
Mediacenter
XBMC
XBMC
MediaPortal
MediaPortal
iTunes
iTunes
Gerte mit
Firmware von
www.listenlive.nl
Listenlive
TV / Video
AVR
(Audio/Video-Receiver)
Radiowecker
Infrarot-Fernbedienung
Einige Gerte sind nur ber Infrarot ansprechbar. Zur Einbindung in fhem gibt es zwei FS20 InfrarotGerte: FS20-iru (IR-Empfnger) und FS20-IRF (IR-Sender) sowie einen iTach.
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 48
Webservices, http-Verbindungen
Wetterbericht einbinden
Hierfr gibt es die fhem-Module weather basierend auf yahoo-Weather, sowie das Modul GDS zur
Einbindung von Daten des deutschen Wetterdienstes. Beide aktualisieren die Informationen in
einstellbaren Intervallen (z.B. alle 15 Minuten) und stellen die gelesenen Daten in fhem als Readings zur
Verfgung. In das Webfrontend knnen so Wetterberichtsdaten eingeblendet werden. Die
Vorhersagedaten knnen beispielsweise zur vorausschauenden Heizungssteuerung verwendet werden,
um z.B. morgens die Heizung frher anspringen zu lassen, wenn es nachts besonders kalt war, oder um
die Markise einzufahren und Rolllden zu schlieen wenn starke Winde oder Hagel vorhergesagt sind.
Version 4.0
Seite 49
Version 4.0
Seite 50
Infoquellen
Mit den bisher dargestellten Mglichkeiten sollten Sie alle Grundlagen haben, um Ihre eigene
Anwendung in fhem abzubilden.
Weitere hilfreiche Informationsquellen sind
-
Im folgenden Abschnitt erhalten Sie eine Kurzbersicht ber weitere Mglichkeiten, die Sie mit fhem
haben.
Im Sammelsurium finden Sie kleine Hinweisschnipsel, z.B. zum Flashen Ihres CUL.
Bei der weiteren Arbeit mit fhem wnsche ich viel Spa und Erfolg!
Mnchen, Februar 2014
Uli Maa
Version 4.0
Seite 51
Dummy
In fhem knnen dummy-devices angelegt werden, die wie eine Variable genutzt werden knnen. So
wird z.B. zur Abbildung des HomeStatus ein dummy benutzt: Der Wert des HomeStatus soll gespeichert
werden, eine Funkkommunikation wie z.B. bei einem FS20-Gert gibt es aber nicht. Diesem dummy
knnen dann Attribute zugeordnet werden, die z.B. nur das Setzen bestimmter Werte zulassen, siehe
Nur bestimmte Befehle fr ein Gert - webCmd.
Infos in der commandref finden Sie hier.
Watchdog
Mit dieser Funktion knnen Vorflle berprft und ggf. Aktionen eingeleitet werden, wenn z.B. ein
Fenster lnger als einen bestimmten Zeitraum offen steht oder sich ein Gert seit ber einen definierten
Zeitraum nicht meldet. Watchdog ist also immer dann relevant, wenn nach Eintreten eines bestimmten
Ereignisses nach einer bestimmten Zeitspanne geprft werden soll, ob dasselbe oder ein anderes event
(nicht) erneut eingetreten ist. Hier finden Sie die commandref-Infos
shell-commands
Aus fhem heraus knnen nicht nur Perl-Programme, sondern auch Betriebssystem-Programme gestartet
werden. Siehe hierzu den Aufruf ber system() oder `backticks` - mehr Details stehen in der
commandref hier.
Zusammenfassungen readingsGroup
Mit dem Modul readingsGroup lsst sich ein Pseudo-Device anlegen, das dazu dient, readings
unterschiedlicher Gerte in einer gemeinsamen liste anzuzeigen. Diese Liste kann dann in einem
beliebigen Raum oder in einem floorplan angezeigt werden.
Beispiele sind die Anzeige des readings battery von allen devices in Ihrer Konfiguration, oder das
Anzeigen aller Temperature-Messwerte. Es kann auch eine beliebige Liste unterschiedlicher readings
von unterschiedlichen Gerten zusammengestellt werden. Details stehen in der Modulbeschreibung,
viele Beispiele finden Sie im entsprechenden Wiki-Artikel.
Version 4.0
Seite 52
Kleine Programmierbeispiele
Wakeup-Light
Ihre Nachtischlampe soll als Wakeuplight funktionieren, also morgens durch langsames hochdimmen
den Sonnenaufgang simulieren, um das Aufwachen ertrglicher zu machen.
Details in einem Wiki-Artikel.
Untoggle
Beim Verwenden von Schaltern als Taster (4-Kanal-Modus) soll das gesendete toggle in on bzw. off
umgesetzt werden, um die Darstellung im Webfrontend zu verschnern.
Die Lsung steht in einem Wiki-Artikel.
Sunset und Sunrise
Steuerzeitpunkte knnen vom Sonnenauf- und -untergang abhngig gemacht werden. Infos stehen in
der commandref. Auch eine dmmerungsabhngige Steuerung ist mglich auf Basis von Twilight.
Tag und Nacht - isday
Wenn Sie einen Bewegungsmelder haben, der aber fr ein Nachtlicht nur nachts auslsen soll,
verwenden Sie die Funktion isday():
define Nachtlicht notify Bewegungsmelder {if (!isday() ) {fhem("set lampe on")} }
Da isday() von SUNRISE_EL gesetzt wird, muss dieses Modul aktiv sein.
Erstellen eigener fhem-Programme
Wenn Ihre eigenen Routinen an notify oder at zu lang und unbersichtlich werden, lohnt sich das
Auslagern in eigene Programmdateien. Erste Schritte dazu finden Sie hier.
Beachten Sie die bernahme von Code-nderungen mit reload.
Beachten Sie die fhem Perl-Specials aus der commandref (siehe hier).
Entwicklung eigener fhem-Module
Der fhem-core ist bewusst flexibel gestaltet, um Entwicklern das anbinden eigener Module zu
erleichtern. Einen Einstieg zur Entwicklung eigener Module mit einer Erklrung der InterfaceDatenstrukturen findet sich im wiki hier.
Neue Module knnen auch in das fhem-repository in sourceforge aufgenommen werden. Dabei gibt es
zwei Varianten:
-
Einchecken in den Zweig contrib. Hier eingecheckte Module werden nicht in die fhemDistribution aufgenommen, werden nicht ber update verteilt und erscheinen auch nicht in
der commandref. Mchte ein user dieses Modul verwenden, muss es manuell aus dem SVN
heruntergeladen werden.
Einchecken in den Zweig fhem/FHEM. Module, die hier eingecheckt werden, werden
automatisch zum Bestandteil der nchsten fhem-Version. Folgende Kriterien sind zu erfllen:
o Das Modul muss eine Dokumentation enthalten, die dann automatisch in die fhem
commandref eingebunden wird. Als Beispiel kann ein beliebiges anderes fhem-Modul
dienen.
Version 4.0
Seite 53
Der Modulautor muss bereit sein, das Modul ber das Forum mindestens drei Monate
lang zu betreuen, also auf user-Fragen zu reagieren und ggf. bugfixes zu
implementieren.
Fr beide Wege muss sich der Modulautor einen logon zu Sourceforge besorgen und dann eine Mail an
Rudolf Knig senden, damit der user Schreibrechte fr den fhem-Branch erhlt.
Version 4.0
Seite 54
Sammelsurium
FritzBox specials
Schichtenmodell & Zugnge
Schichtenmodell FB7390
Fritz!
Oberflche
Fritz!
Firmware
fhemweb
GUI
fhem
Anwendung
Perl
Linux
BIOS
Firmware
culfw
Fritz!Box
Hardware
CUL
Zugnge
http://fritz.box:80
https://<WAN-IP>:443
fhemweb
Fritz!
Oberflche
fhem
Fritz!
Firmware
http://fritz.box:8083/fhem
http://fritz.box:8084/fhem
telnet://fritz.box:7072
Perl
Linux
BIOS
telnet://fritz.box:23
Fritz!Box
Version 4.0
Seite 55
FB7390: fhem-Installation
Es gibt es zwei Varianten. Beide fhren zu einem lauffhigen fhem, das an der Oberflche identisch
aussieht auf der Linux-Ebene laufen diese Systeme aber unterschiedlich:
1. Fritz!Labor-Image von AVM, das fhem auf Ihre FritzBox installiert. Diese Distribution luft in
einer sogenannten "chroot"-Umgebung. Diese ist besser gegen Zugriff von auen geschtzt,
erlaubt jedoch keinen Zugriff auf die FB-eigenen Funktionen (z.B. WLAN von fhem aus ein- und
ausschalten, Mailversand, Zugriff auf Telefonie-Befehle wie den callmonitor usw.)
2. fhem-Distribution von fhem.de. Luft eben NICHT in einer chroot-Umgebung, hat krzere Pfade
(praktisch!) und erlaubt den Zugriff auf die FB-eigenen Funktionen. Den download gibts hier
Egal ob Sie das Labor-Image ober das von fhem.de verwenden es kann wie ein Firmwareupdate ber
die FritzBox-Oberflche installiert werden. Damit ist die Installation von fhem abgeschlossen. Sie knnen
nun den CUL in die FritzBox stecken der CUL blinkt, im FritzBox-Systemprotokoll steht: Unsupported
USB-Device klingt nicht gut, ist aber ok. Im fhem-Startbildschirm erscheint CUL initialized das
entspricht running.
fhem kann nun aufgerufen werden mit http://fritz.box:8083/fhem
Bei Problemen:
- in der FB unter Heimnetz\USB-Gerte den USB-Fernanschluss aktivieren (dort Hkchen bei USBGerte setzen), dann wieder deaktivieren -> bei manchen hats geholfen und es erschien wie
von Zauberhand unter /dev auch ttyACM0, was dann auch von fhem erkannt wird
- Oder FritzBox neu starten
- Oder CUL erneut flashen
Siehe auch den Post im Wiki.
FB7390: Neustart von fhem (Restart)
Manuelles Stoppen des fhem-Servers mit shutdown; manuelles Starten mit:
cd /var/InternerSpeicher/fhem
sh startfhem
Quelle: Forums-Beitrag
Zugang ber Terminalprogramm, Telnet
Telnet-Client herunterladen und installieren, zB PUTTY for windows (install als Admin starten!)
PuTTY verwenden:
Hinweis: Fr eine FritzBox kann am DECT-Telefon der Telnet-Zugang der FritzBox ein- oder ausgeschaltet
werden:
#96*7* Telnet an
#96*8* Telnet aus
Siehe auch Schichtenmodell erreichen von:
fhem: <ip> port 7072, Protocol RAW (nicht telnet), flag "Terminal:Implicit CR in every LF"
Sobald das Terminal-Fenster erscheint, einmal <enter> tippen, dann den Befehl inform timer
mit <enter> eingeben. Ab sofort werden alle Funktelegramme angezeigt. Dieses Fenster kann
Version 4.0
Seite 56
man im Hintergrund lnger geffnet lassen, um den Funkverkehr ber einen lngeren Zeitraum
zu beobachten. Alle Funktelegramme werden auch im Log mitprotokolliert.
Linux: <ip> port 21, Protocol telnet
Version 4.0
Seite 57
Quelle: Forums-Beitrag
Anleitung zum Einrichten von Funktionsgruppen, Local Master,Gglobal Master
Eine gute Anleitung zum Einrichten von Local Master, Global Master und Anlernen der Aktoren gibts
hier.
global
global
global
global
global
global
global
autoload_undefined_devices 1
holiday2we Bayern
logfile /var/InternerSpeicher/fhem/log/fhem-%Y-%m.log
modpath /var/InternerSpeicher/fhem
port 7072 global
statefile /var/InternerSpeicher/fhem/log/fhem.save
verbose 3
Feiertage Bayern
Pfad und Name der Logdatei
Pfad zum FHEM-Verzeichnis
fhem soll ber port 7072 per telnet zugngig sein
Pfad zu fhem.save Speicherort der Schaltzustnde
Verbose Loglevel (5=alles loggen, 1=nur Katastrophen)
Zu Anfang der Datei finden Sie alle Attribute des (Pseudo-)Gerts global , siehe auch fhemKonfiguration: Das besondere Gert Global.
Version 4.0
Seite 58
Der Speicherort dieser Datei und damit der Betriebssystem-Pfad zum Ordner fhem ist als Attribut
modpath angegeben:
attr global modpath /var/InternerSpeicher/fhem
(hier muss natrlich der zu Ihrem Gert passende Pfad stehen! Wenn dieses Attribut in Ihrer fhem.cfg
Datei bereits eingestellt ist und fhem funktioniert, lassen Sie diese Angabe am besten unverndert).
Ebenso wichtig ist die Pfadangabe zur fhem Logdatei:
attr global logfile /var/InternerSpeicher/fhem/log/fhem-%Y-%m.log
(Hier muss natrlich der zu Ihrem Gert passende Pfad stehen!). Durch diese Angabe wird eine separate
Datei pro Monat pro Jahr angelegt. Das erlaubt eine zielgerichtete Archivierung, da die Logdateien je
nach Anzahl und Art der verwendeten Gerte recht schnell recht gro werden knnen.
Neben der fhem.cfg spielt auch die Datei fhem.save eine zentrale Rolle. In dieser Datei werden die
Schaltzustnde aller Gerte gespeichert, wenn Sie save ausfhren so werden alle Gerte nach einem
Neustart von fhem wieder mit ihrem letzten Schaltzustand angezeigt.
Der Speicherort dieser Datei ist festgelegt durch
attr global statefile /var/InternerSpeicher/fhem/log/fhem.save
In der Definition des CUL finden Sie die FHT-ID des CUL, z.B. 2332. Die FHT-ID ist quasi der Hauscode
des Hardwaresystems FHT, das parallel zu FS20 betrieben werden kann und zur Heizungssteuerung
dient. Solange Sie keine FHT-Gerte betreiben (z.B. FHT80b, FHT8V, ) setzen Sie die FHT-ID auf 0000,
da sonst unntige Funktelegramme gesendet werden.
Zum Betreiben von FS20-Komponenten wird der Hauscode ausschlielich in der Definition der FS20Gerte verwendet, es ist nicht erforderlich, den FS20-Hauscode dem CUL zuzuweisen.
Version 4.0
Seite 59
Version 4.0
Seite 60
Einleitung
Diese Anleitung ist eine Sammlung von Informationen, die ich in verschiedenen Foren und Webseiten
gefunden habe sowie aus eigenen Tests.
Vielen Dank an alle, die bereits sehr hilfreich Infos bereitgestellt haben und mir die Inbetriebnahme erst
ermglichten.
Eingerichtet werden Dimmer, Jalousie-Steuerung, Lichtschalter und Fernbedienungen. Die Anleitungen,
die ich bisher gefunden habe, waren sehr hilfreich, haben jedoch den Umfang meiner Installation, den
ich mir vorstelle, nicht komplett abgedeckt. Einige der bentigten Funktionen knnten somit nicht
realisiert werden.
Diese Anleitung erhebt in keinster Weise Anspruch auf Vollstndigkeit. Sie wurde nach bestem Wissen
erstellt, kann jedoch fehlerhaft sein.
Die Benutzung und Anwendung ist auf eigene Gefahr und im eigenen Ermessen. Es wird keinerlei
Garantie bernommen.
HomeMatic ist ein Produkt aus dem Hause eQ3. Diese Anleitung behandelt nur Produkte der Homematic
Reihe.
Lesen des Dokuments
Die Anleitung beginnt mit der Beschreibung von HM und den Prinzipien wie ich sie verstehe. Auerdem
wird die Arbeitsweise in FHEM dargestellt. Fr den Schnellstart - und damit man schon einmal etwas
sehen kann sind im hinteren Teil Beispiele aufgefhrt wer will kann also gleich mal probieren und
Details sowie Grundlagen bei Bedarf nachlesen.
Philosophie
Als Zentrale wird eine AVM FritzBox 7390 eingesetzt. Die Anbindung zum HM Funknetz erfolgt ber
HMLAN Interface. Die FritzBox 7390 wird zur Konfiguration, Logging , berwachung und Datensicherung
bentigt. Fr operationellen Betrieb kann man in vielen Fllen direkt Sensor und Aktor peeren. Eine
Zentrale ist zum Schalten dann nur notwendig, wenn aufwendigere Aktionen bentigt werden wie
tageszeitabhngige Schaltungen, uvm. Auch zum Mischen verschiedener Systeme wie HM und FS20
muss man ber die Zentrale gehen.
Version 4.0
Seite 61
Es wird angestrebt, die Sensoren und Aktoren mglichst direkt zu peeren. Dies hat Vorteile in
Ausfallsicherheit und vor allem der Schaltgeschwindigkeit sowie Przision der Steuerung.
Ansatz ist somit:
Komponenten ber FHEM zu konfigurieren
Sensoren (speziell Taster / Remotes) direkt mit Aktoren zu peeren. Man kann diese Funktionen
somit ohne Zentrale betreiben. Auerdem wird die Schaltgeschwindigkeit und Przision erhht.
FritzBox 7390 wird fr Logging verwendet.
Spezielle Kommandos werden ber FHEM gesteuert. Ein Beispiel wre das Einbinden einer
Wetterstation.
Voraussetzungen
Das HMLAN Interface ist eingerichtet. Hierzu kann man ggf. Die mitgelieferte Software von eQ3
verwenden.
Die Konfigurations-Software fr Devices wird nicht verwendet, dies wird ber FHEM gemacht.
Ausnahme ist das einrichten von AES-keys.
Verwendet man statt HMLAN einen CUL, steht die Software HM Konfigurator nicht zur Verfgung. Die
Konfiguration der Devices ist dann ausschlielich ber FHEM mglich.
Nomenklatur und Konventionen im Dokument
Entity:
Bezeichnet eine Instanz, also ein Element, das mit define erzeugt wird. In CUL_HM ist es
ein Kanal oder ein Device.
Device:
Der logische Aufbau von HM Gerten folgt einer festen Struktur. Device ist die logische
Einheit in einem HM-Gert welche im Wesentlichen fr das Protokoll verantwortlich ist.
Jedes Gert hat ein Device das fr alle Kanle das Senden bernimmt und Empfangen.
Kanal:
Ist eine Funktionseinheit im Gert. Jedes Gert hat mindestens einen Kanal (irgend eine
Funktion muss es ja haben). Jeder Button einer Fernbedienung ist ein eigener Kanal,
jeder Lichtschalter auch.
Kanle in einem Device knnen unterschiedliche Funktionen haben, so hat ein TC einen
Kanal fr den Temperaturfhler, einen fr die Heizungssteuerung und einen fr die
Verbindung zu Fensterkontakten.
Alle Kanle werden in FHEM automatisch angelegt, wenn das Gert an FHEM angelernt
wird. Es werden auch alle notwendigen Attribute gesetzt, die zum Betrieb notwendig
sind.
Aktor:
Aktor ist ein ausfhrender Kanal, beispielsweise ein Lichtschalter oder Dimmer.
Sensor:
Sensoren ist ein Eingabekanal, der Daten erfassen und Trigger sendet. Auch Remotes
und Buttons sind Sensoren. Ein Trigger knnte beispielsweise einen Tastendruck oder ein
Bewegungsmelder Ereignis sein.
Pairen
Pairen ist das Anlernen des Device an die Zentrale. Dies ist dann fr alle Kanle im Gert
gltig. Pairen ordnet das Gert der Zentrale unter. Bestimmte Aktionen knnen nach
dem pairen nicht mehr von Device ausgefhrt werden (peeren oder 'anlernen' von
Kanlen ohne Zentrale). Es stehen aber immer noch alle Kommandos durch die Zentrale
Version 4.0
Seite 62
zu Verfgung.
Es wird strikt empfohlen alle Devices mit der Zentrale zu pairen. Dies sollte die erste
Aktion der Inbetriebnahme sein.
Peeren/Peer:
Man kann Kanle miteinander verknpfen, das heit peeren . Aktor und Sensor werden
zu peers. Der Sensor sendet dann Trigger direkt zum Aktor. FHEM kann den direkten
Verkehr monitoren. Die Verbindung zwischen 2 Peers ist ein Link, die Peers sind der
Endpunkt.
Peeren kann man somit nur einen Sensor mit einem Aktor. Sowohl Sensoren alsauch
Aktoren knnen meist mehrere peers gleichzeitig haben.
Link
Ein Link ist die Verbindung zwischen zwei Kanlen. Ein Link hat 2 Endpunkte, welche als
Peer bezeichnet werden.
HMID:
6stellige HM ID (3 Byte hex) die aus dem FHEM log ermittelt werden kann. Die Nummer
ist von Hersteller fr jedes Gert unvernderlich vorgegeben.
Die HMID ist die Adresse in allen Messages. Der User hat nur selten etwas mit der HMID
zu tun da fast immer den Namen der Entity gearbeitet werden kann/soll.
HMIDch:
Fr Kanle wird in FHEM die pseudo HMID genutzt die sich aus HMID und der
Kanalnummer in hex zusammensetzt. Bei einem Schalter mit 2 Kanlen ist es 01 und 02.
Bei einer Fernbedienung RC12 sind dies die Nummern von 01 bis 0B.
In FHEM sollte der User anstelle der HMIdD den Namen der Entity benutzen.
HMserial:
Seriennummer die auf den Gerten und/oder der Schachtel aufgeklebt ist
HMIDlanIF
HMdev:
HMch
1. Tabelle: Konventionen
HM-Gerte Allgemein
Hintergrund zu HM-Gerten allgemein
Bei HM (und sicher nicht nur bei HM) werde Gerte nach Sensoren und Aktoren unterschieden.
Sensoren (auch Buttons und Taster sind Sensoren) senden Trigger aufgrund von Ereignissen,
Schwellwerten oder zyklisch. Beispiele sind Fenstersensoren, die ein ffnen, Kippen und Schlieen des
Fensters melden. Wasserstandsmelder haben einen Schwellwert, der ggf auch einstellbar sein kann.
Fernbedienungen die das Drcken einer Taste erkennen senden den entsprechenden Trigger.
Aktoren ergreifen Aktionen aufgrund von Triggern. Es sind Lichtschalter (nicht der Taster sondern das
Relais) Heizungsventile, Dimmer . Die Aktion fr einen ankommenden Trigger wird nicht im Taster
festgelegt sondern im Aktor.
HM bietet Gerte mit Funktionen meist getrennt nach Sensoren und Aktoren. Ein Gert kann mehrere
Funktionen beinhalten eine Fernbedienung bis zu 17 Tasten plus Display , ein Dimmer 2 Lampen
bedienen. Funktionalen Einheiten im Gert sind Kanle. FHEM legt fr jeden Kanal eine Entity an, eine
steuer- und kontrollierbare, quasi-selbstndige Einheit. Bei Gerten mit nur einen Kanal wird zur
Version 4.0
Seite 63
Vereinfachung Kanal und Device in einer Entity zusammengefasst. Der User kann bei Bedarf/Geschmack
den Kanal selbst erstellen um auch hier eine saubere Trennung zu erhalten.
Anmerkung: Es gibt Device, welche Sensoren und Aktoren beinhalten. Z.B. kann ein Thermostat TC von einem
Fenster-Sensor Trigger empfangen, diese Verarbeiten und in der Rolle als Sender die ThermostatVentile steuern.
Zustzlich hat es noch einen eingebauten Sensor zur Temperaturmessung. Dies nur als Beispiel das die Trennung
Sensor/Aktor nicht auf Gerte ebene passiert sondern eine Funktion des Kanals ist.
Um eine direkte Kommunikation zwischen HM Kanlen herzustellen werden die Sensoren und die
Aktoren gepeert. D.h. man erstellt einen Link, also eine Verbindung zwischen dem Sensor und dem
Aktor. Ziel ist, dass der Aktor auf Trigger des Sensors reagiert. Umgekehrt erwartet der Sensor eine
Rckmeldung des Aktors als Empfangsbesttigung. Peers werden im Aktor und Sensor eingetragen die
Beiden kennen sich nicht wirklich und stimmen sich auch nicht weiter ab. Ein Sensor hat keine Ahnung
ob der Aktor ein Lichtschalter oder eine Heizungssteuerung ist, Hauptsache er antwortet auf den Trigger.
Gerte haben eine gemeinsame Hauptebene das Device. Es betreibt die Kommunikation, steuert und
koordiniert die Reihenfolge der zu sendenden Messages. Ferner kann (sollte) das Device an eine Zentrale
angelernt - gepairt- werden. Ist eine Zentrale eingetragen wird sie ber nderungen der Zustnde aller
Kanle am Laufenden gehalten. Praktisch wird eine Info-Nachricht an die Zentrale bei Zustandsnderung
gesendet, z.B. Licht jetzt ein.
Unterscheiden muss man also zwischen
peer oder peerChan: erstellen einer Verbindung oder Link zwischen zwei HM Kanlen.
Version 4.0
Seite 64
1. Abbildung: HM GertArchitektur
HM Gerte beinhaltet das Device (Protokoll-Instanz), sowie je entsprechende Kanle. Ein 2-fach Schalter
besteht aus 2 Kanlen (Aktoren). Eine Fernbedienung mit 12 Tasten hat 12 Kanle (Sensoren).
Komplizierter ist es bei der 19 Tasten Fernbedienung mit Display. Die hat 17 Kanle fr Tasten
(Sensoren) (2 weitere Tasten sind nicht extern verfgbar) und einen 18ten Kanal zum Steuern des
Display (Aktor). FHEM bildet die Struktur ab wie von HM vorgegeben.
Kanle sind die Funktionseinheiten des Gertes.
Nun gibt es noch Links , logische Verbindungen, die durch peeren (koppeln) von Kanlen entstehen.
Wenn ein Sende-Kanal (z.B. Taste) einem Aktor-Kanal (z.B. Schaltsteckdose) zugeordnet wird, dann wird
sowohl im Sendekanal als auch im Aktor-Kanal ein Peer erstellt. Der Peer ist der Endpunkt eines Links.
Im Aktor wird fr diesen Peer die Steuerinformation hinterlegt. So legt der peer im Aktor fest, ob beim
Drcken der Taste die Steckdose an, aus, wechselt oder nur fr eine bestimmte Zeit angeht
(Treppenhausschalter).
Sowohl Aktor-Kanal als auch Sensor-Kanal kann mehrere peers verwalten. Praktisch heit dies, ein
Lichtschalter kann auf mehrere Buttons hren. Die Reaktion auf jeden Button wird unabhngig
festgelegt!
Konfigurieren muss man im Wesentlichen 3 Ebenen
-
Kanal-Ebene: Es werden die Einstellungen je Kanal vorgenommen. Meist ist jedem Kanal eine
List1 zugeordnet welche kanalindividuelle Daten wie Laufzeit des Rollo bei einem Rollo-Aktor
Version 4.0
Seite 65
beinhalten. Auch wenn ein Gert nur einen Kanal hat (wie z.B. Rollo-Aktoren) so bleibt die
Aufteilung Gert /Kanal doch bestehen.
-
Peer-Ebene: Kanle knnen mehrere Peers haben. Im Peer wird das Verhalten festgelegt. Auf
der Sensorseite ist dies die Art der Kommunikation mit der Aktor-Peer (Burst oder AES, siehe
spter). Daten fr Sensoren sind in List4 zu finden.
Beim Aktor-Peer ist das Verhalten des Kanals zum Verarbeiten eines Triggers meist in List3
einstellbar.
Jeder Peer in einem Kanal hat einen eigenen Registersatz, der erst beim Peeren angelegt und
vorbelegt wird.
Version 4.0
Seite 66
aktueller Zustand.
CMDs_done: alles bertragen. Keine Probleme bei der LETZEN bertragung
CMDs_done_Events xx: Es gab xx Probleme bei der letzten bertragung. Der Zustand
ist vom Anwender zu prfen.
CMDs_processing...: Kommandos werden gerade abgearbeitet.
CMDs_pending: Es warten Kommandos auf die Verarbeitung (siehe Transmit-Modi).
protCmdPend
protLastRcv
protSnd
protResnd
Anzahl wiederholter Messages. Dient nur zur Info, ist noch kein Fehler
protResndFail
protCmdDel
protNack
protIOerr
ProtIOdly
protTimedOn
Ein timer (on-for-timer oder hnlich) wurde nicht korrekt bertragen und
wiederholt.
2. Tabelle: Protokoll-Infos
Die Zhler sind kontinuierlich ab reboot. Sie sind manuell rcksetzbar mit:
set <name> clear msgEvents
Wenn Fehler angezeigt werden sollte man die letzten Kommandos kontrollieren.
Version 4.0
Seite 67
Wichtig ist, die Modi der Kommunikation zu kennen welche ein Device untersttzt.
Um Energie zu sparen sind es meist batteriebetriebene Devices, die nicht immer auf Empfang sind. Je
nach Aufgabe sind hierzu verschiedene Transmit-Modi vorgesehen:
normal
config
Device ist nach Bettigen von Anlernen kommunikationsbereit. Nur dann kann FHEM
an das Device senden. Kommandos an das Device werden zurckgehalten bis
Anlernen erkannt wird. Der protState ist solange pending. Beispiel sind einige
Remotes.
wakeup
Device wacht regelmig auf, dann kann gesendet werden. Die Zeit zwischen
2 Aufwachen ist unterschiedlich. Sie kann bis zu 24h betragen( Rauchmeldern).
Messages an das Device werden bis zum Aufwachen zurckgehalten, der protState ist
solange pending.
burst
Das Device kann mit einer burst-sequenz aufgeweckt werden. Fr den User sieht dies
aus wie 'normal'.
Die Aufweck-sequenz weckt ALLE burst devices, die dann prfen mssen, ob diese
Nachricht fr sie ist. Die Batterielaufzeit wird demnach fr alle Gerte dieses Type
reduziert.
Burst belastet auch die Sende-kapazitt des HMLAN. Burst sollte sparsam verwendet
werden.
condtionalBurst Entspricht burst. Es kann aber im Device ein- oder ausgeschaltet werden.
lacyConfig
Funktion und Ablauf noch nicht geklrt, wird aktuell wie config genutzt.
3. Tabelle: Transmit-Modi
Welchen Mode ein Model untersttzt kann man mittels HMinfo und dem Kommandos
models feststellen. Hierzu bitte im Commandref nachlesen.
Einige Gerte untersttzen mehrere Transmit-Modi. FHEM nutzt immer den schnellsten. Burst wird nur
automatisch genutzt wenn das Device keinen alternativen Mode untersttzt
Alle zu sendenden Kommandos werden von FHEM so lange zurckgehalten bis das Device zur
Verarbeitung bereit ist. protState zeigt den Zustand an: CMDs_pending. Devices, die nur auf
config reagieren arbeiten die Kommandos erst ab, wenn Anlernen gedrckt wird.
Noch ein Satz zur Darstellung von Readings: Wenn Daten verndert werden (Licht on) wird in den
Readings der state auf set_on angezeigt. Sobald eine Besttigung von der HW vorliegt wird der
Zustand dann ohne Prefix mit on dargestellt. Dies gilt sinngem fr alle Readings.
HM-Devices /Empfangspegel Rssi
Die Empfangsleistung wird in den RSSI Werten dargestellt. Es werden die Empfangswerte beider Seiten,
also dem IO Device und dem HM-Device ausgegeben. Diese sollten etwa gleich hoch sein. Der
Minimalwert ist -128. FHEM stellt min, max und Durchschnitt (avg) dar. Sollte der Wert zu niedrig sein
oder zu sehr schwanken kann es ein Grund fr bertragungsprobleme sein.
Version 4.0
Seite 68
Die Devices von HM sind relativ komplex und leider sind die Optionen nicht offengelegt. Was gibt es zu
beachten:
AES: wird aktuell nur von den HM-Devices untersttzt. In FHEM kann man den Key nicht ndern. Will
man AES nutzen muss man den key mit der PC-SW setzen. Danach muss man den key in den Attributen
des HM-IO hmkey, hmkey2 und/oder hmkey3 setzen. FHEM setzt diese bei jedem restart in IO Device.
AES wird vom HMLAN/USB automatisch gesendet.
KeepAlive: Die Gerte prfen durch einen keep-alive Mechanismus das bestehen der Verbindung zur
Zentrale. Das Gert wird die Verbindung trennen und neu aufsetzen sollte fr 30sec kein keepalive gekommen sein. FHEM macht dies automatisch alle 25sec. Es kann dennoch zu Problemen
kommen wenn es zu Verzgerungen kommt, innerhalb oder auerhalb von FHEM. Mit
msgKeepAlive
dlyMax:0.019 bufferMin:4
kann man erkennen, wie viel Puffer man hat und wie gro der maximale Delay eines keep-alive ist. Hier
ist es 19ms Verzgerung und mindestens 4 sec Puffer bis zum Disconnect.
Mit dem Attribut wdTimer kann man das Senden des keep-alive beschleunigen, also den Wert -bei
Problemen heruntersetzen.
attr wdTimer 25
msgLoadEst ist die aktuelle Auslastung sowie deren Aufspaltung in 10min Teile alles nach FHEM
Berechnung.
prot_Warning-HighLoad last 2013-11-13 07:32:29
prot_ERROR-Overload
last 2013-11-13 07:32:29
prot_Overload-released last 2013-11-13 07:32:29
cond ERROR-Overload 2013-11-13 07:32:29
Die Zustnde HighLoad und OverLoad hingegen werden in HM device selbst erzeugt und in FHEM
dargestellt. High-load bedeuted, dass noch 10% Performance verbleiben bis Overload
Overload heit, dass das Device nur noch empfngt bis die load entsprechend gesunken ist.
Automatisches ACK: HM IOs senden automatisch ACK zu den Devices. Ebenso wiederholen sie
Nachrichten 3 mal falls keine Antwort kommt. Das ist eine effektive und schnelle Methode, einfache
bertragungsprobleme zu beheben.
Version 4.0
Seite 69
CUL, CUNO
Oben erwhnte Details werden von CUL/CUNO nicht untersttzt. Das einschneidendste ist, dass AES hier
nicht machbar ist.
Eine CUL/CUNO die fr FHEM genutzt wird kann nicht gleichzeitig fr andere Familien genutzt werden
kann.
Allgemein
Zum Unterschied LAN oder USB gibt es aus FHEM-Sicht wenig zu sagen. Beides wird ber StandardSystem Interfaces des OS betrieben und unterliegt deren jeweiligen Mglichkeiten.
Version 4.0
Seite 70
HM-Devices Pairen
Der erste Schritt beim Anmelden eines Gert ist immer, das Devices mit FHEM zu pairen. Wie
beschrieben bedeutet es, dass sich das Device der Zentrale unterordnet und entsprechende Kontrollen
abgibt. Je nach Typ ist es leicht unterschiedlich. FHEM bietet mehrere Kommandos, alle mit dem
gleichen Ziel:
1. set <LANIf> hmPairForSec <Sekunden>
pairen kann man mehrfach ohne negative folgen. Ein Device ist immer nur an einer Zentrale gepairt oder eben nicht. Bei 1) und 2) sowie bei jedem Anlernen am Device legt FHEM alle fehlenden Kanle an
und setzt bzw korrigiert notwendige Attribute.
Achtung: Das Anlegen der Kanle ist kein Beweis, dass korrekt angelernt wurde. Auch das Empfangen
von Nachrichten nicht.
Um das Pairing zu prfen muss man das Device auslesen. FHEM wird dies beim Anlernen selbstndig
versuchen. Sollte es nicht funktionieren hat das pairen nicht funktioniert oder ein bertragungsproblem
vorliegen. Man kann in jeden Fall noch einmal das auslesen probieren (beachte die transmit-modi
verschiedener Devices):
set <name> getConfig
getConfig dauert ein paar Sekunden. Danach muss man das Reading pairedTo: prfen. Als Wert muss
die HMID des IO Devices stehen.
Resultat: Nach dem Pairen hat sich das Device der Zentrale untergeordnet. Es meldet
Statusnderungen und erlaubt, dass die Zentrale nderungen an der Konfiguration vornimmt. Zu pairen
ist nur das Device, nie Kanle. Kanle sind als Element der Devices automatisch mit gepairt.
HM-Kanle anlegen
Nach dem pairen/Anlernen hat FHEM alle Kanle definiert. Hat ein Gert nur einen Kanal wird dieser
implizit in der Device-entity realisiert. Der Kanal wird also nicht separat erstellt. Die Device-Entity
bernimmt in diesem Fall die Aufgaben von Device und Kanal 01. Will man trotzdem Kanal und Device
trennen kann man den Kanal manuell definieren
define Licht_Wohnzimmer CUL_HM <HMID+ch>
define Licht_Wohnzimmer CUL_HM 12345601 # Kanal Nummer 01
Kanle habe immer eine Device. Sollte ein Device gelscht werden betrifft dies auch ALLE seine Kanle.
Zuordnung:
Kanle eines Device sieht man in den Eintrgen channel_xx.
Das Device eines Kanals ist im Parameter device zu finden.
Die Namen von Devices und Kanlen kann der User frei vergeben. Hier sollte mit rename gearbeitet
werden, dass die Software die Mglichkeit hat korrelierte Parameter nachzuziehen
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 71
Zusammenfassung, zu Merken:
Ein Device ist erst gepairt,wenn man das Reading R-pairCentral lesen kann
Kanle knnen nur definiert werden, wenn es das Device gibt.
Lscht man ein Device werden alle zugehrigen Kanle gelscht.
Alle fehlenden Kanle, Settings und Funktionen werden bei JEDEM Anlernen nach-definiert,
und Parameter ggf. korrigiert.
Mit dem Anlegen der Kanle wird oft (einstellbar) auch ein Logfile erstellt. Meine Empfehlung ist, dies
nicht zuzulassen oder zu beschrnken. Viele Logfiles erschweren die bersicht und kosten nicht
unerheblich Performance. Daher sollte man Logfiles sinnvoll zusammenfassen. Alle Lichter, alles aus dem
Wohnzimmer, oder wenigstens alle Tasten eines Gerts.
Man muss wissen, dass das reine Vorhandensein eines Logfiles Performance kostet, da bei jedem Event
geprft wird, ob geloggt werden muss.
HM-Kanle peeren
Peeren erstellt einen Link zwischen 2 Kanlen. Das bedeutet, dass der Trigger eines Sensor-Kanals von
Aktor-Kanal empfangen und verarbeitet wird, ohne Mitwirkung der Zentrale.
Peeren - nicht zu verwechseln mit pairen - kann man also Kanle, keine Devices! Peeren kann man
demnach auch nur Sensoren mit Aktoren. Ein Sensor kann Trigger senden welchen der Aktor verarbeitet.
Aktoren senden keine Trigger und Sensoren verarbeiten keine.
Sensoren sind, wie beschrieben auch Buttons einer Remote. Sie erkennen das Drcken einer Taste.
Wichtig ist, dass nicht der Sender festlegt, was der Aktor tun soll, sondern der Aktor. Dieser legt die
Aktion separat fr jeden gepeerten Sensor-Kanal fest.
Peeren fr Sensoren bedeutet, dass er eine Empfangsbesttigung anfordert, wenn die Aktion beendet
ist. Ggf. wird der Trigger wiederholt, sollte kein ACK kommen. Ein Sensor kann mit mehreren Aktoren
gepeert werden. Es wird je Peer der bertragungsmode im Sensor festgelegt werden, also AES sowie
burst (siehe Register ).
Peeren fr Aktoren bedeuten, dass er eine Aktionsabfolge fr genau diesen Peer definiert. Der Aktor
legt fr jeden gepeerten Sensor einen Registersatz an - und definiert somit ein Verhalten je peer.
Beispiel : ein Button zum Einschalten,einer zum Ausschalten oder/und einen zum Toggeln.
Der Aktor legt beim Peeren ein Default-Verhalten an. Viele Aktoren untersttzen 2 Default- Varianten:
Wird nur ein Kanal gepeert (in einem Kommando!) realisiert der Aktor einen toggle-peer. Das
Licht wird beim ersten Trigger eingeschaltet oder hochgedimmt. Beim nchsten Trigger wird
ausgeschaltet oder runter gedimmt.
Werden 2 Kanle auf einmal gepeert legt der Aktor 2 Peers-defaults an. Einen zum Einschalten
und Hochdimmen und den 2. zum Ausschalten und Runter dimmen.
Version 4.0
Seite 72
Einige Sensoren (i.a. Taster und Fernbedienungen) knnen lange oder kurze Trigger schicken. Der Aktor
kann dies unterscheiden und legt ein komplett separates Verhalten fr jeden fest.
Andere Sensoren (Fensterkontakte, Bewegungsmelder, Fhler) senden immer einen kurzen Trigger. Sie
liefern aber zustzlich einen Messwert, der vom Aktor gefiltert werden kann. Der Aktor entscheidet
anhand der Condition Table (CT) ob der Trigger gltig ist oder nicht, also ob eine Aktion ausgefhrt wird
oder eben nicht.
Die Messwerte sind zwischen 0 und 200 und reprsentieren 0-100% in 0.5% schritten. 200 entspricht
also 100%. 3-State Sensoren (z.B.Fensterkontakte) schicken
0 (=0%) fr zu
100 = 50% fr gekippt
200 = 100% fr offen
Sinngem ist dies in vielen anderen Sensoren ebenso zu finden.
Wenn ein Peer angelegt ist kann das Verhalten nachtrglich verndert werden. Durch Setzen der Register
kann man jedes dieser Verhalten umbauen und aus jedem Toggel eine Einschalter bauen oder einen
Treppenhausschalter.
Interne Peers: Ein Kanal kann interne Peers haben. Beispiele sind die meisten Schalter oder Dimmer an
welchen direkt ein mechanischer Schalter angeschlossen werden kann, oder ein Bedienschalter direkt
eingebaut ist. Die Firmware (FW) des Kanals behandelt diesen wie einen externen Peer, nur ist er
automatisch eingerichtet. Es stehen die identischen Register wie bei 'normalen' Peers zu Verfgung.
Diese Peers sind nicht automatisch sichtbar, knnen aber sichtbar geschaltet werden. Hierzu ist das
Register intKeyVisib auf visib zu setzen (siehe HM-Konfiguration) - siehe auch getConfig. Danach kann
man das Verhalten der eingebauten Peers auslesen und verndern wie von jedem anderen Peer auch.
Die internen Peers werden selfxx benannt (self01, self02,...).
Version 4.0
Seite 73
Single|Dual
legt fest ob 1 oder 2 Kanle gepeert werden sollen. Siehe dazu den Peeren fr
Aktoren in Hintergrund
Set|unset
actor|remote|both erlaubt nur ein Ende des Links zu bearbeiten, nur in Aktor oder nur im Sensor zu
setzen. Default ist both. Es kommt zum Einsatz wenn man einen Aktor resetet und
neu peeren will. Die Remote (Sensor) msste man ggf. aus der Wand ausbauen um
anlernen zu drcken, obwohl die Remote kein Problem hatte. Also setzt man den Link
mit Actor auf. In der Remote bleibt alles wie es war.
Die Liste der peers wird im HM-Gert verwaltet und permanent gespeichert, also ber Spannungsausfall
hinweg. Um sie einzusehen muss man sie Rcklesen, am einfachsten mit:
set <entity> getConfig
Wenn man getConfig auf ein Device ausfhrt werden auch alle Daten der Kanle gelesen. Es werden
auch alle Register des Gerts ausgelesen.
Die Liste alle peerIDs wird im Attribut peerIDs gespeichert und ist im Reading peerList im Klartext zu
sehen. Das Attribut peerIDs hat keine steuernde Wirkung, es wird nur hier abgelegt um es in FHEM
speichern zu knnen.
Das Attribut peerIDs und das Reading peerList wird nach jedem getConfig upgedated. Das Attribut
peerIDs sollte vom User nur in Ausnahmefllen gendert werden. Eine peerID 00000000 wird intern
von HM und FHEM genutzt und sollte nicht gelscht werden.
ACHTUNG: Man kann keine Peers anlegen indem man peerIDs editiert!!
Beachte: Die Anzahl der Peers eines Kanals ist begrenzt. Will man mehr Kanle peeren wird dies vom
Gert zurckgewiesen. Der evtl. vorhandene peer muss dann erst gelscht werden.
Sonderflle des peerens
Rauchmelder knnen zu Teams zusammengefasst werden. Des erreicht man ebenfalls mit peerChan.
Man muss eine HMId fr das Team whlen und alle Rauchmelder in dieses Team eintragen. Die HMId
kann die eines der SDs sein oder ein virtuellen Kanal. Sollte die HMId eines SD gewhlt werden ist dieser
SD mit sich selbst zu peeren!
set <Team> peerChan 0 <SD> single set|unset actor
Einige Gerte haben sowohl Kanle fr sensoren alsauch Aktoren, so z.B. ein TC. Der Climate-Kanal ist ein
Sensor (sendet trigger) und der WindowRec-Kanal ist ein Aktor, empfngt trigger von Fenster-kontakt.
set <tc_Climate> peerChan 0 <VD> single set|unset actor|remote|both
set <RHS> peerChan 0 <tc_WindowRec> single set|unset actor|remote|both
Version 4.0
Seite 74
Einstellung der Device-Ebene. Z.B. kann man hier die Tastenbeleuchtung einer RC12
einstellen. List0 gibt es demnach einmal in einem Gert.
Liste 1
Parameter zur Steuerung eines Kanals. Z.B. RC12 long press time oder Jalousie
hoch und runter Fahrzeiten. List1 gibt es maximal einmal je Kanal.
Liste 2
Wird von Repeatern genutzt um beispielsweise Listen der HMIds zu verwalten, die
wiederholt werden sollen.
Liste 3
Fr jeden Peer eines Aktor-Kanals wird eine List3 angelegt. Es werden die Aktionen und
Parameter festgelegt die ablaufen sollen, wenn ein Trigger dieses Peers verarbeitet wird.
Es wird die Treppenhausfunktion, An- oder Ausschalter, oder Toggle-Funktion definiert
und parametrisiert. List3 gibt es nur bei Aktoren.
Liste 4
Dies ist das Pendant zu List3 fr Sensoren. Es beinhaltet, wie ein Sensor mit einem Peer
kommunizieren soll, z.B. RC12, Peer needs burst oder expect_AES.
Liste5 -9
gibt es bei Wetterstationen und Thermosteuerung. Hier werden u.a. Regelwerte einer
Woche hinterlegt.
List 3 und List4 werden angelegt, wenn Kanle gepeert werden. Wenn nichts gepeert ist gibt es diese
Listen auch nicht.
MERKE: Die Register sind Konfigurationen. Hier sind keine operationellen Zustnde oder Stati
abzufragen.
MERKE: Die Register sind im Gert gespeichert. FHEM kann die Werte lesen und setzen. Will man sicher
sein, was im Gert gerade gespeichert ist muss man die Daten wieder lesen (getConfig).
Version 4.0
Seite 75
Register Lesen:
Auslesen der Konfiguration und in FHEM darstellen kann man mit
set <devName> getConfig
Fhrt man es auf ein Device aus werden auch all seine Kanle gelesen. Fhrt man es auf eine KanalEntity aus wird nur die Kanal-entity upgedated (geht etwas schneller). Die Ausfhrung dauert, je nach
Anzahl der Kanle und Parameter. Die vollstndig Abarbeitung kann man kontrollieren in dem man die
Eintrge in Protokoll sichtet.
Resultat:
Gelesen werden alle Register und Peers. Dargestellt werden die Ergebnisse im web-interface. Mit dem
Attribut expert lsst sich die Sichtbarkeit ein wenig steuern.
Alternativ kann man alle Register sehen mit:
get <name> reg all
ACHTUNG: Beides sind nur Darstellungen der Daten in FHEM. Der User muss selbst sicherstellen, dass
die Daten aktuell sind. Ggf. muss noch einmal gelesen werden (vom Gert nach FHEM bertragen getConfig) und ggf. das web-frontend refreshed.
Beispiel:
LichtFH type:switch list:peer
register
1:
sign
3:FB_Btn_11 lgActionType
3:FB_Btn_11 lgCtDlyOff
3:FB_Btn_11 lgCtDlyOn
3:FB_Btn_11 lgCtOff
3:FB_Btn_11 lgCtOn
3:FB_Btn_11 lgCtValHi
3:FB_Btn_11 lgCtValLo
3:FB_Btn_11 lgOffDly
3:FB_Btn_11 lgOffTime
3:FB_Btn_11 lgOffTimeMode
3:FB_Btn_11 lgOnDly
3:FB_Btn_11 lgOnTime
3:FB_Btn_11 lgOnTimeMode
3:FB_Btn_11 lgSwJtDlyOff
3:FB_Btn_11 lgSwJtDlyOn
3:FB_Btn_11 lgSwJtOff
:value
:off
:jmpToTarget
:geLo
:geLo
:geLo
:geLo
:100
:50
:0 s
:111600 s
:absolut
:0 s
:111600 s
:absolut
:off
:on
:dlyOn
Einige Register habe einen prefix lg = Long oder sh = Short. Zu Wissen ist, dass einige (viele) remotes
zwischen langem und kurzem Tastenruck unterscheiden. Der Aktor an dies auch. Die verfgbaren
Register sind quasi identisch. Somit kann man je Button 2 Reaktionen am Aktor stimulieren, indem man
kurz oder lange drckt. Man kann auch nur auf kurz oder nur auf lang reagieren und den jeweils anderen
ignorieren.
Version 4.0
Seite 76
erfragen. Wie beschrieben ist die Liste je Entity ist also unterschiedlich fr Device und Kanal und kann
auch von Kanal zu Kanal unterschiedlich sein. Hier erhlt man auch die Information, ob ein Register zum
Registersatz eines Peers gehrt, ob beim Setzen also ein Peer angegeben werden muss. Ferner erhlt
man informationen ber Wertebereich, Einheit und ggf. Optionen. Optionen sind angegeben, wenn nicht
mir Zahlen sondern mit Namen gearbeitet wird, also mit on undoff.
Beispiel Schalter Kanals:
get LichtFH regList
list:
register | range
| peer
|exp| description
|
1: sign
|- to -
3: lgActionType
|- to -
| required |
3: lgCtDlyOff
|- to -
3: lgCtDlyOn
|- to -
3: lgCtOff
|- to -
3: lgCtOn
|- to -
3: lgCtValHi
|0 to 255
3: lgCtValLo
|0 to 255
3: lgMultiExec
|- to -
| required |
3: lgOffDly
3: lgOffTime
3: lgOffTimeMode |- to -
3: lgOnDly
3: lgOnTime
Register Schreiben
Schreiben von Registern kann man mit regSet:
set
set
set
set
Register die Peers zugeordnet sind bentigen die Angabe des Peers. Der wird als letzter Parameter im
Kommando angegeben.
Einige Werte sind nur Teile von Bytes. FHEM ndert nur den entsprechenden Teil HM erlaubt aber nur
das Schreiben ganzer Bytes. FHEM bentigt also den Rest des Bytes, der nicht gendert werden soll um
den zu schreibenden Wert zu errechnen. Will man so ein Register ndern mssen die Register in FHEM
vorliegen. Wenn dies nicht der Fall ist wird FHEM nicht schreiben und den User auffordern, die Register
zu lesen.
Nach dem ndern wird empfohlen die Daten noch einmal zu lesen (siehe auch autoReadReg).
Version 4.0
Seite 77
Register Sichern
Wenn man Einstellungen fertiggestellt und getestet hat kann man die Daten sichern:
set <devName> saveConfig <file>
Das Kommando sollte man immer auf ein Device ausfhren. Es werden alle Register und Peers aller
untergeordneten Kanle gesichert. Das File ist kumulativ, alle nderungen werden an das Ende
angehngt, nie berschrieben.
ACHTUNG: Gesichert werden nur die Daten, die in FHEM vorliegen. Es empfiehlt sich vorher ein Lesen
und dann eine Prfung der Protokollereignisse um sicherzustellen, dass die Daten aktuell sind.
Diese Sicherung hat nichts mit save von FHEM zu tun. Hier geht es um die HM Gerte Daten, save
kmmert sich um die FHEM Parameter.
Rckschreiben der Konfiguration
Hat man eine Sicherung kann man Einstellungen kann man es auch wieder zurckschreiben. Dazu muss
man das Sicherungsfile in einem text-editor ffnen. Man sucht die entsprechenden Daten und kann
diese per copy/paste in einen Terminal ausfhren lassen.
Zusammenfassung:
Ein sinnvoller Ablauf knnte also sein
get <HMdev> regList
get <HMch> regList
set <HMdev> getConfig
# bersicht Device
# bersicht Kanal
# Auslesen, Kanal und Device gleichzeitig
Warten bis die Daten gelesen sind, evtl. Fehlermeldungen beachten, siehe Protokollabschnitt
get
get
set
set
berprfen:
set <HMdev> getConfig
get <HMch> reg all
set <HMdev> saveConfig myfile
ACHTUNG: Sender-Devices verarbeiten diese Kommandos nicht freiwillig. Deshalb werden die
Kommandos in FHEM gequeued und erst bertragen sobald man das Gert in den Anlernmode versetzt.
Konkret betroffen sind alle Devices welche nur Configmode intersttzen. Siehe Abschnitt Protokoll
Version 4.0
Seite 78
get <Device> saveConfig <file># speichern der gelesenen Daten in ein File. Daten
werden fr das ganze Device incl. Kanlen
geschrieben. Die Daten knnen dann ggf. mir regBulk
wieder geschrieben werden.
set <channel> peerBulk
Attribute
Folgende Attribute sollte automatisch gesetzt werden und sind nicht vom User.
model, subtype, serialNr, firmware, peerIDs
expert
hiermit kann man die Darstellung der Register im webinterface grob steuern
Es reicht, dies am Device einzustellen.
webCmd
actCycle
dient der Prfung, ob ein Device noch lebt. Man gibt ein Intervall vor in dem
sich das Device mindestens einmal melden muss. Fr Gerte die sich
automatisch melden wird der Wert entsprechend vor besetzt. Der User kann
dieses Attribut bei allen Devices setzen, und erhlt die Statusmeldung, wenn
das Device die Regeln verletzt.
Beispiele
Hier folgen ein paar Beispiele, wie man Gerte programmieren kann. Bei allen wird vorausgesetzt, dass
das pairing mit FHEM stattgefunden hat und entsprechende peers eingetragen sind. Hier wird auf die
Programmierung der Register eingegangen und auf bekannte Besonderheiten.
Version 4.0
Seite 79
StateMachines
Aktoren arbeiten in Zustandsmaschinen. Einige sind mit Bildern illustriert. Hier eine (sehr) kurze
Einfhrung in Zustandsmaschinen an Beispiel des Lichtschalters: Der Kanal befindet sich immer in einem
Zustand, von denen der Lichtschalter 4 hat:
on: Licht ist an
off: Licht ist aus
dlyOn: Licht ist noch aus, warten auf an
dlyOff: Licht ist noch an, warten auf aus.
Der Kanal geht nur in einen neuen Zustand, wenn ein passender Trigger kommt. Das knnte das
Ablaufen eines Timers oder ein externen Trigger sein. Ohne Trigger/Timer wird der Zustand beibehalten:
on->warten bis OnTime vorbei ist, gehe dann nach dlyOff
dlyoff->warten bis dlyOffTime vorbei ist, gehe nach Off
off->warten bis OffTime vorbei ist, gehe nach dlyOn
dlyOn->warten bis dlyOnTime vorbei ist, gehe nach dlyOn
Die Timer OnTime und OffTime, wenn auf max gesetzt, bedeuten unendlich, der Kanal wird also
den Zustand NIE verlassen.
Wenn ein gltiger Trigger von einem Peer kommt, egal welcher, wird der Kanal seinen Zustand
ndern UND die Timer versenden, die hier definiert sind.
SwJtOn
: wenn der Kanal im Zustand On ist soll er nach... gehen
SwJtOff
:wenn der Kanal im Zustand Off ist soll er nach... gehen
SwJtDlyOn
: wenn der Kanal im Zustand DlyOn ist soll er nach... gehen
SwJtDlyOff
: wenn der Kanal im Zustand DlyOff ist soll er nach... gehen
und gehen kann er dann nach
no keine Reaktion, bleib wo du bist
dlyOn gehe sofort nach dlyOn
on
gehe sofort nach On
dlyOff gehe sofort nach dlyOff
off
gehe sofort nach off
und benutze die Timer, die zu diesem peer/long-short gehren.
Eine Zustandsnderung von on nach on startet den timer neu! Wenn man also einen
Treppenausschalter hat mit 20sec on und nach 10 sec noch einmal drckt kommt es darauf an:
SwJtOn = on : Die onTime wird noch einmal gestartet, licht geht nach gesamt 30sec aus
SwJtOn = no : Die onTime wird nicht neu gestartet, licht geht nach gesamt 20sec aus
Version 4.0
Seite 80
Condition Table
Die Register CT gehren zur ConditionTable. Dei ConditionTable ist relevant, wenn trigger mit
Werten gesendet werden. Dies ist beispielsweise der Fall bei Bewegungsmeldern.
Ein bewedungsmelder sendet immer, wenn eine Bewegung erkannt wird einen Triggern an seine Peers.
Dies geschiet unabhngig von der Helligkeit. Die Helligkeit wird aber an den Peer mit bertragen.
Es ist dann (wiederum) der Aktor, der die Helligkeit auswerten muss. Dazu hat er die Condition-Table.
Ein Aktor hat 2 Werte, den high und den low Wert (CtValHi, CtValLo). Die beiden Werte sind
gleichwertig, high und low sind nur Namen, keinen Bedeutungen!
In den Registern (je einmal fr long/short und jeden peer)
CtDlyOff
CtDlyOn
CtOff
CtOn
Die Werte sind in Prozent und in 0.5% Schritten. Somit sind Werte von 0 bis 200 (0-100%) blich.
Man kann also einen Bewegungsmelder mit mehreren Aktoren peeren. Ab welcher Helligkeit ein Aktor
das Licht einschaltet ist in jedem Aktor festzulegen, auch wenn der selbe Bewegungsmelder genutzt
wird.
Version 4.0
Seite 81
Schalter
Verwendet wird ein HM-LC-SW2-FM.
Es handelt sich um einen 2 Kanal Unterputzschalter. FHEM richtet demnach ein Device und 2 KanalEntities ein. HM ermglicht Funktionen der Kanle wie
Lichtschalter
Treppenhausschalter
Blinken
Eigene Kreationen
Das Gert
Entites sind (Namen mit rename geaendert)
Licht_Switch1 #Device
Licht_Wohn
# Kanal 1
Licht_Flur
# Kanal 2
Die Schalter wurden gepeert mit
set FB1_Btn_01 peerChan 0 Licht_Flur single set # ein toggleschalter
set FB1_Btn_03 peerChan 0 Licht_Wohn dual set
# 2 Buttons werden gepeert,einer fr
ein, einer fr aus
Vorgabe: Licht_Flur soll bei kurzem Druck nach 10 sec abschalten, bei langem Druck toggeln, also Dauer
an oder aus
set Licht_Flur regSet shOnTime 10 FB1_Btn_01
#wir sind sparsam: kurzer Druck auf Btn1, 10 sec Licht
#Lang Button 1:
set Licht_Flur regSet
set Licht_Flur regSet
set Licht_Flur regSet
set Licht_Flur regSet
set Licht_Flur regSet
set Licht_Flur regSet
set Licht_Flur regSet
set Licht_Flur regSet
set Licht_Flur regSet
#
#
#
#
# max
# max
#
#
Ausschaltverzgerung(OffDly verndern)
Einschaltdauer (Treppenhausfunktion)
Jalousie
Verwendet wird ein HM-LC-Bl1-PBU-FM. Dieser ist nach eQ-3 Angaben von der Steuerung identisch dem
HM-LC-Bl1-PB-FM.
Version 4.0
Seite 82
Beispiel: Programm runter 25,6sec, hoch 51,3sec, Motor entladen 0,5 sec.
set Rollo1 regSet driveUp 51,3
set Rollo1 regSet driveDown 25,6
set Rollo1 regSet driveTurn 0,5
Achtung: driveTurn sollte nie auf '0' gesetzt werden, wenn Motoren gesteuert werden. Die vorgegebene
Zeit stellt ein wie lange der Aktor wartet um dem Motor das Entladen zu erlauben. Default sind 0.5s was
fr viele Motoren reichen sollte.
Peer Parameter
Ein RolloAktor hat mehr Zustnde als ein Lichtschalter, die Funktion ist aber immer noch gleich:
Zustnde
On/Off: Rollo ist im Ruhezustand, offen, zu oder teil geffnet. Der Zustand wird nach
On/Off_Time automatisch verlassen (schwarzer Pfeil) (Per Default ist die Zeit auf
Unendlich gesetzt)
On/Off Delay: ein Wartezustand ohne Aktionen. Die Zeit ist in On/OffDelay_Time festgelegt
RefOn/Off: ist zur Bercksichtigung der Entladezeit der Motoren und Kondensatoren. Wenn die
Fahrrichtung gendert wird ist es notwendig eine Wartezeit einzuhalten. Ansonsten luft man
Gefahr das Device zu zerstren, da der entstehenden hohe Strom den Schaltkontakt durchbrennt
oder verschweit.
RampOn/Off: In diesem Zustand wird das Rollo hoch bzw. runter gefahren. Wenn 100% erreicht
sind wird automatisch in den Zustand On/Off bergegangen.
Version 4.0
Seite 83
State-bergnge
Nach abarbeiten eines Zustandes wird in den nchsten Zustand (gem schwarzem Pfeil) bergegangen.
Kommt ein Trigger kommen wird nach JT Tabelle der nchste Zustand angesprungen. Sind 2
Tasten angelernt wird jedem eine eigene JT Tabelle zugewiesen (blauer oder roter Pfeil)
Per Default ist kein Unterschied zwischen long und short in den JT Tabellen. Der Unterschied
wird durch multiexecution und die Dauer in MAX_TIME_FIRST_DIR erreicht.
Im Zustand ON bei einem Trigger Short (rote Pfeilrichtung) gibt es einen bergang nach OffDelay>RefOff->RampOff. MAX_TIME_FIRST_DIR wird nicht benutzt (FF). Nach Ende der Fahrzeit
(allgemeine Einstellungen REFERENCE_RUNNING_TIME_TOP_BOTTOM) geht es in den Zustand OFF.
Im Zustand ON bei einem Trigger Long (rote Pfeilrichtung) gibt es einen bergang nach OffDelay>RefOff->RampOff. MAX_TIME_FIRST_DIR steht auf 0,5s. Sollte kein weiterer Trigger kommen wird in
den Zustand Off bergegangen. Bleibt die Taste gedrckt wird regelmig ein Trigger gesendet der
Zustand RampOff erneut angesprungen. Der Timer MAX_TIME_FIRST_DIR startet erneut.
MultiExecution muss also auf on stehen, sonst wird trotz langem Drcken nur ein Trigger pro LongPress ausgegeben.
Version 4.0
Seite 84
Die Zustandsmaschine bei nur einem Taster (AB mode) ist per Default
Die CT Steuerung ist im Default Setting nicht verwendet. Man kann hiermit bergnge auf Grund vom
Zustandswert der Steuerung veranlassen. Ich habe es nicht getestet, daher ist mir nicht klar, wie es im Detail
funktioniert. Es scheint bei erfllter Bedingung den Zustand in Defaultrichtung zu verlassen.
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 85
Funktionale nderung: Nach kurzem Tastendruck fhrt die Jalousie (hoch oder runter). Stoppen erfolgt
jetzt durch kurzen Druck auf Button hoch oder runter. Dies hat speziell bei der Schrgstellung der
Jalousie Vorteile, da man einfach schneller ist und die Schrgstellung genauer einstellen kann.
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
Rollo1
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
regSet
SHBlern
shBlJtOff
shBlJtDlyOn
shBlJtDlyOff
shBlJtRampOn
shBlJtRampOff
shBlJtRefOn
shBlJtRefOff
lgBlJtOn
lgBlJtOff
lgBlJtDlyOn
lgBlJtDlyOff
lgBlJtRampOn
lgBlJtRampOff
lgBlJtRefOn
lgBlJtRefOff
rampOn
dlyOn
refOn
off
on
off
rampOn
off
rampOn
dlyOn
refOn
off
rampOn
off
rampOn
off
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
BtnA
Dimmer
Verwendet wird ein HM-LC-Dim1-PBU-FM.
Generell erfolgt die Programmierung wie bei der Jalousie.
Heimautomatisierung mit fhem - fr Einsteiger
Version 4.0
Seite 86
Per default benutzen Long Button nicht die Zustandsmaschine sondern DimUp/Down. Zu erkennen ist
dies, da action _Type fr Long nicht auf JumpToTarget sondern auf einem dim steht. Siehe
Registertabelle. Button short benutzt die Zustandsmaschine.
Danach ist die Zustandsmaschine fr 2 Taster wie folgt programmiert:
Version 4.0
Seite 87
Die Diagramme zeigen die default bergnge der Dimmersteuerung. Eingnge der States sind
oben/links, Ausgngen unten und rechts.
States
-
On/Off: Die aktuelle Helligkeit des Dimmer wird eingefroren, es erfolgt keine nderung. On/Off spiegelt
nicht die Stellung des Dimmer wieder (ganz an oder aus) sondern nur einen logischen Zustand der
Steuerung!
RampOn/OFF: Die Helligkeit wird langsam erhht oder reduziert.
RefOn/Off: Dieser Zustand ist fr Dimmer nicht relevant. Es hat den Anschein, dass die Zustnde
existieren aber im default nicht angesprungen werden.
On/OffDelay: Ein/Ausschaltverzgerung der Dimmersteuerung. Nach dem Trigger wird Delay gewartet
bis die in den nchsten Zustand bergegangen wird.
State bergnge
Nach abarbeiten eines Zustandes wird automatisch der nchste Zustand (gem schwarzem Pfeil)
eingenommen
Sollte ein Trigger kommen wird nach JT Tabelle der entsprechende Zustand angesprungen. Jede
angelernte Taste hat ihre eigene JT Tabelle.
Werden 2 Tasten gleichzeitig angelernt so werden die jeweiligen JT Tabelle unterschiedlich befllt um
eine Taste fr Heller und eine fr Dunkler zu erhalten, ohne weitere Programmierung.
Per Default ist kein Unterschied zwischen long und short in den Sprungtabellen.
Action Type:
ActionType kann mit regSet gesetzt werden. Die Statemachine wird verwendet, wenn [lg|sh]ActionType
= jmpToTarget gesetzt ist. Im Default ist dies nur fr short gesetzt, long benutzt die verschiedene DIM
actiontypes.
Virtuelle Dimmer-Kanle:
Einige Dimmer verfgen ber virtuelle Kanle. Hierbei sind jedem physikalischen Kanal zwei zustzliche
virtuelle Kanle zugeordnet. Diese Kanle werden bei m pairen automatisch in FHEM eingerichtet.
Diese virtuellen Dimmer Kanle darf man nicht mit den FHEM virtual-channels verwechseln. Whrend
die FHEM Kanle nur in FHEM existieren sind die Dimmer- Kanle in den HM Devices vorhanden.
Zum einfachen Betrieb braucht man diese Kanle nicht. Sie sind fr komplexere Funktionen gedacht. Den
meisten Usern kann ich raten, diese Kanle zu ignorieren.
Prinzipiell funktioniert jeder dieser Kanle wie auch der physikalische Kanal. Man kann ihn also peeren,
ansteuern, Register setzen. Als Ergebnisse erzeugt der Physikalische sowie die beiden Virtuellen einen
Stellwert fr den Dimmer.
Insgesamt haben wir nun also 3 Stellwerte fr einen Dimmer. Der physikalische Stellwert wird als
Kombination aus den 3 Werten errechnet.
Hierzu ist das Register logicCombination zu setzen. Beim ersten Kanal steht es auf and, bei den
beiden folgenden auf inactive . Somit werden die beiden Virtuellen ignoriert.
Mglichkeiten der Kombination hat man viele, siehe Registeroptionen (get regList, siehe oben).
Beispielsweise kann man die Werte addieren, subtrahieren oder auch multiplizieren.
Anwendungsflle nach HM:
Version 4.0
Seite 88
Flurlampe mit Bewegungsmelder gekoppelt, die Helligkeit kann abhngig von der gemeldeten Helligkeit
des Bewegungsmelders eingestellt werden also am Tag heller, in der Nacht dunkler.
Eine Zimmerbeleuchtung soll gedrosselt werden wenn die Leselampe eingeschaltet wird.
Version 4.0
Seite 89
Rauchmelder SD Sensor
Der einzelne Rauchmelder hat eigentlich keine Einstellungen. Zu beachten ist nur die Gruppierung.
HM Rauchmelder arbeiten in Gruppen so genannten TEAMs. Diese knnen anhand der peerlisten
erstellt und berwacht werden.
Meldungen und Alarme des Teams werden ber die HMId eines der Rauchmelder signalisiert. In FHEM
wird der Alarm sowohl an die teamID als auch am EinzelDevice signalisiert.
Auslesen der Peerlisten
set <HMdev> getConfig
Teammaster:
Als Teammaster wird von HM immer einer der Melder ausgewhlt. Der Grund liegt auf der Hand, HM
will vermeiden eine doppelte im System zu benutzen.
bersichtlicher wird das Ganze wenn man eine separate TeamID nutzt. Damit kann man team-events
von Device-events trennen.
Eine TeamID kann man mit Hilfe von virtuellen Devices generieren :
define <TeamDev> CUL_HM <myUniqueHMID> #HMid muss einzig im System sein
set <TeamDev> virtual 1 # nur ein channel notwendig
Als Teammaster wird nun der channel 1 bentigt, also <TeamDev>_BTN1. Mit rename kann man dies
etwas schner gestalten. Beispiel:
define TeamDev CUL_HM 100010
set TeamDev virtual 1
rename TeamDev_Btn1 Sdteam
set SDteam peerChan 0 SD_1 single set actor
set SDteam peerChan 0 SD_2 single set actor
set SDteam peerChan 0 SD_n single set actor
Alarme werden am Team gemeldet. Der Auslser wird mitgeteilt und auch beim Auslser wird der Status
entsprechend gesetzt. Ggf. machen SDs ein forward des Alarms, sie wiederholen also die Meldung. Auch
dies wird angezeigt.
Version 4.0
Seite 90
Analog geschieht das Paaren mit einem RHS. Zu beachten ist, dass der RHS der Sender ist und der TC der
Aktor. Demnach sind die Rollen gegenber den VD vertauscht:
set <RHS> peerChan 0 <TC_WindowRec> single set
Auslesen der Ergebnisse siehe oben. Die Peerings sind in den entsprechenden Kanlen zu sehen also
die VD in Climate und RHS in WindowRec.
Wie immer knnen mehrere peerings auf einen TC vorgenommen werden. Ein RHS kann auch an
mehrere TCs senden.
Ein VD kann erhlt seine Einstellungen immer von einem TC, hier ist ein mehrfach peering
ausgeschlossen. Wenn ein VD bereits gepeert ist muss man dies rckgngig machen,also ein unset.
Anmerkung: Fortgeschrittenen und Spieler knnen auch pairings mit anderen Gerten vornehmen. Beim
Pairing wird nicht darauf geachtet, ob der Empfnger ein VD ist oder der Sender ein RHS.
Wer will kann also einen physikalischen (RC12,) oder eine virtuellen Schalter mit seinem
TC WindowRec pairen.
Anmerkung: Die Kommunikation mit TC und VD ist zwecks Batteriesparens in einem sog. 'wakeupmode
ausgelegt. Praktisch heit dies, jegliche Kommunikation erst durchgefhrt werden kann,
wenn das Gerte seine Statusmeldung ausgibt.
Mit anderen Worten: Es kann bei einem TC bis zu 4min dauern bis ein Kommando
ausgefhrt wurde. Also nicht nervs werden, warten.
Zu beachten ist, dass bei einem TC auch burst eingeschaltet werden kann. Siehe hierzu
conditionalBurst Seite 680
Version 4.0
Seite 91
Version 4.0
Seite 92
Register-Definitionen
Register Definition des Schalt Aktor HM-LC-SW2
Version 4.0
Seite 93
Version 4.0
Seite 94
Version 4.0
Seite 95
Version 4.0
Seite 96
Version 4.0
Seite 97
Version 4.0
Seite 98
Version 4.0
Seite 99
Peeren muss man wie immer. Achtung: Prototyp nicht mehr peeren, sonst sind die Einstellungen futsch!!
set s1_b4 peerChan 0 a1_c2 single
set s1_b3 peerChan 0 a1_c3 single
set s1_b5 peerChan 0 a3_c7 single
myfile im Editor ffnen und den Eintrag suchen mit set a1_c2 regBulk 3:s1_b3. Die Zeile kopieren und
die Namen ersetzen
set a1_c2 regBulk 3:s1_b4
set a1_c3 regBulk 3:s1_b3
set a3_c7 regBulk 3:s1_b5
Version 4.0
Seite 100
Danach stehen einige Methoden zu Verfgung auf die hingewiesen werden sollte:
protoEvents
set hm protoEvents short
|CmdPend |Snd
| |4:
| |6:
| | -
| | -
|2:
|2:
# # -
| | -
| | -
| | -
CUL_HM queue:0
autoReadReg pending: recent:none
status request pending:
autoReadReg wakeup pending:FB,FB2,TastDev
status request wakeup pending:
IODevs:LANIf1:opened pending=0 condition:ok
msgLoadEst: 1hour:2% 10min steps: 0/0/2/0/0/0
State:
CmdPend:
Snd:
Resnd:
#:
CmdDel:
ResndFail:
Nack:
IOerr:
Die Zhler sind fortlaufend. Man kann die Zhler und rcksetzen je device mit
set <device> clear msgEvents
CUL_HM queue:Anzahl der Entities, die auf Verarbeitung warten. Die Begrenzung findet statt durch ein
Problem des IO Device sowie bei HMLAN das Attribut hmLanQLen.
Pending:
Entities die auf eine automatische Abfrage von Status ooder getConfig warten. Dies ist
zum einen last-gesteuert und hngt zum Zweiten vom Modus des devices ab
(config/wakeup). FHEM verzgert die bertragung entsprechend.
Version 4.0
Seite 101
IODevs:
zustand der IO devices, die HM nutzt. Fr HMLAN/USB wird auch die belastung der
aktuellen Stunde angezeigt um zu sehen, wie nahe man dem Overload ist
RSSI
set hm rssi
:receive
:LANIf1
:LichtDev
:LANIf1
:LichtLDev
:LANIf1
:RolloFH
:rpt_LANIf1
:LANIf1
:RolloSL
from
LichtDev
LANIf1
LichtLDev
LANIf1
RolloFH
LANIf1
RolloFH
RolloSL
LANIf1
last
-65.0
-69.0
-83.0
-84.0
-62.0
-64.0
-75.0
-75.0
-74.0
avg
-65.5
-68.5
-85.0
-86.7
-62.0
-64.0
-75.0
-75.0
-74.0
min<max
count
-66.0< -65.0
4
-69.0< -68.0
2
-88.0< -83.0
6
-89.0< -84.0
3
-62.0< -62.0
2
-64.0< -64.0
1
-75.0< -75.0
1
-75.0< -75.0
2
-74.0< -74.0
1
peerXref
set hm peerXref
liefert das peering zwischen den Devices. Die Tabelle spiegelt nur die von FHEM gelesenen Werte wieder.
peerXref done:
x-ref list
LichtF =>FB_Btn_12
LichtF =>LichtF
LichtF =>Tast_02
LichtF =>vb_Btn2
peerCheck
set hm peerCheck
prft, ob das peering symetrisch ist. Die Listen sollten eigentlich leer sein, wenn alles stimmt. . Die
Tabelle spiegelt nur die von FHEM gelesenen Werte wieder.
peerCheck done:
peer list not read
peer list incomplete
peer not verified
LichtF p:vb_Btn2
h_FstH_WindowRec p:11000002
th_Climate p:vb_Btn3
Version 4.0
Seite 102
checkConfig
set hm checkConfig
prft, on die in FHEM vorhandenen Daten komplett sind und konsistent. Es wird nicht geprft, ob die
Daten alt sind! PeerCheck wird implizit mit ausgefhrt
autoReadReg
set hm autoReadReg
lst ein Lesen der Configuration aller Devices aus, die per Attribut autoReadReg entsprechend
freigegeben sind. Sinn ist ein einfacher und kompletter update der Konfigurationsdaten.
param
set hm param [<filter>] <parameter>
Version 4.0
Seite 103