HM-OU-LED16 Funk-Statusanzeige LED16: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „'''HM-OU-LED16''' HomeMatic Funk-Statusanzeige LED16 = Features = '''Technische Daten:''' * Anzahl Tasten: 3 (Hoch/Runter und Enter) * Stromversorgung: Mit …“) |
K (ca. Preis) |
||
(29 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox Hardware | |||
|Bild=HM-OU-LED16.jpg | |||
HomeMatic Funk-Statusanzeige LED16 | |Bildbeschreibung=HomeMatic Funk-Statusanzeige LED16 | ||
|HWProtocol=HomeMatic | |||
|HWType=Empfänger, Aktor | |||
|HWCategory=HomeMatic | |||
|HWComm=868MHz | |||
|HWChannels=16 (3 Tasten, Hoch, Runter und Enter) | |||
|HWVoltage=7,5 V DC (über mitgeliefertes Steckernetzteil | |||
|HWPowerConsumption=max. 250 mA | |||
|HWPoweredBy=Netz | |||
|HWSize=100x100x15mm | |||
|HWDeviceFHEM=[http://fhem.de/commandref.html#CUL_HM CUL_HM] | |||
|HWManufacturer=ELV / eQ-3 | |||
}} | |||
= Features = | = Features = | ||
Anzeige von 16 Statuswerten über rot/grün/orange LED, ca. € 80 (2019/01) | |||
= Allgemeines = | = Allgemeines = | ||
Die Funk-Statusanzeige LED16 kann mit ihren 16 Kanälen und insgesamt 32 LED's (je 1xGrün und 1xRot -> Rot+Grün=Orange) diverse | Die Funk-Statusanzeige LED16 kann mit ihren 16 Kanälen und insgesamt 32 LED's (je 1xGrün und 1xRot -> Rot+Grün=Orange) diverse Status anzeigen. | ||
Das Schriftfeld ist nicht beleuchtet und kann mit einer Word-Vorlage befüllt werden. | Das Schriftfeld ist nicht beleuchtet und kann mit einer Word-Vorlage befüllt werden. | ||
Außerdem kann man sie auch als 16-Kanal Funk-Fernbedienung verwenden. Hier ist die Auswahl des Kanals allerdings etwas umständlich. Mit Hilfe der Hoch- und Runtertaste auf der Rückseite kann man den Kanal, der durch ein blinken der jeweiligen LED's angezeigt wird, auswählen und seine Wahl mit der, ebenfalls auf der Rückseite liegenden Enter-Taste bestätigen. | Außerdem kann man sie auch als 16-Kanal Funk-Fernbedienung verwenden. Hier ist die Auswahl des Kanals allerdings etwas umständlich. Mit Hilfe der Hoch- und Runtertaste auf der Rückseite kann man den Kanal, der durch ein blinken der jeweiligen LED's angezeigt wird, auswählen und seine Wahl mit der, ebenfalls auf der Rückseite liegenden Enter-Taste bestätigen. | ||
Zeile 19: | Zeile 25: | ||
= Hinweise zur Inbetriebnahme und Installation = | = Hinweise zur Inbetriebnahme und Installation = | ||
Die Funk-Statusanzeige kann nicht direkt [[Peering_(HomeMatic)|gepeered]] werden, sondern funktioniert nur mit einer Zentrale, wie z.B. FHEM. | |||
Die Statusanzeige dazu ebenso wie die Zentrale in den Anlernmodus versetzen. Dazu ist die Taste ''learn'' auf der Rückseite der Anzeige für ca 5 Sekunden zu | |||
drücken, bis die LED links oben anfängt, langsam grün zu blinken. Dann die ''learn''-Taste loslassen. | |||
= Probleme = | = Probleme = | ||
Zeile 30: | Zeile 40: | ||
== fhem.log Auszug == | == fhem.log Auszug == | ||
< | <pre> | ||
2014.12.31 16:01:11 3: CUL_HM set OG_Statusdisplay_Led_01 led red | |||
2014.12.31 16:02:37 3: CUL_HM set OG_Statusdisplay_Led_01 led off | |||
2014.12.31 16:03:46 3: CUL_HM set OG_Statusdisplay_Led_01 led green | |||
2014.12.31 16:06:39 3: CUL_HM set OG_Statusdisplay_Led_01 led off | |||
</pre> | |||
In der vorliegenden fhem.cfg ist das Statusdisplay bereits mittels "set HM_ABC123 deviceRename Statusdisplay" in "statusanzeige" umbenannt. | |||
'''Im weiteren wird dieser Name beibehalten''' | |||
Achtung: | |||
Mit rename wird nur das Gerät selbst umbenannt, die 16 Kanäle und die Logfile behalten weiter ihren HM_ABC123 Namen. | |||
Mit deviceRename Statusdisplay" wird der Gerätename, der Name aller Kanäle, der Logfile etc. komplett in einem Schwung umbenannt. | |||
Direkt nach der automatischen Definiton in FHEM sah das ungefähr so aus: | |||
define HM_20F85B CUL_HM 20F85B01 | |||
== fhem.cfg == | == fhem.cfg == | ||
< | <pre> | ||
define statusanzeige CUL_HM 1EAB54 | |||
attr statusanzeige IODev HMLAN1 | |||
attr statusanzeige autoReadReg 4_reqStatus | |||
attr statusanzeige expert 2_full | |||
attr statusanzeige firmware 1.1 | |||
attr statusanzeige model HM-OU-LED16 | |||
attr statusanzeige room Wohnzimmer | |||
attr statusanzeige serialNr JEQxxxxxxx | |||
attr statusanzeige subType outputUnit | |||
attr statusanzeige webCmd getConfig:clear msgEvents | |||
define statusanzeige_Led_01 CUL_HM 1EAB5401 | |||
attr statusanzeige_Led_01 model HM-OU-LED16 | |||
attr statusanzeige_Led_01 peerIDs 00000000, | |||
define statusanzeige_Led_02 CUL_HM 1EAB5402 | |||
attr statusanzeige_Led_02 model HM-OU-LED16 | |||
attr statusanzeige_Led_02 peerIDs 00000000, | |||
define statusanzeige_Led_03 CUL_HM 1EAB5403 | |||
attr statusanzeige_Led_03 model HM-OU-LED16 | |||
attr statusanzeige_Led_03 peerIDs 00000000, | |||
define statusanzeige_Led_04 CUL_HM 1EAB5404 | |||
attr statusanzeige_Led_04 model HM-OU-LED16 | |||
attr statusanzeige_Led_04 peerIDs 00000000, | |||
define statusanzeige_Led_05 CUL_HM 1EAB5405 | |||
attr statusanzeige_Led_05 model HM-OU-LED16 | |||
attr statusanzeige_Led_05 peerIDs 00000000, | |||
define statusanzeige_Led_06 CUL_HM 1EAB5406 | |||
attr statusanzeige_Led_06 model HM-OU-LED16 | |||
attr statusanzeige_Led_06 peerIDs 00000000, | |||
define statusanzeige_Led_07 CUL_HM 1EAB5407 | |||
attr statusanzeige_Led_07 model HM-OU-LED16 | |||
attr statusanzeige_Led_07 peerIDs 00000000, | |||
define statusanzeige_Led_08 CUL_HM 1EAB5408 | |||
attr statusanzeige_Led_08 model HM-OU-LED16 | |||
attr statusanzeige_Led_08 peerIDs 00000000, | |||
define statusanzeige_Led_09 CUL_HM 1EAB5409 | |||
attr statusanzeige_Led_09 model HM-OU-LED16 | |||
attr statusanzeige_Led_09 peerIDs 00000000, | |||
define statusanzeige_Led_10 CUL_HM 1EAB540A | |||
attr statusanzeige_Led_10 model HM-OU-LED16 | |||
attr statusanzeige_Led_10 peerIDs 00000000, | |||
define statusanzeige_Led_11 CUL_HM 1EAB540B | |||
attr statusanzeige_Led_11 model HM-OU-LED16 | |||
attr statusanzeige_Led_11 peerIDs 00000000, | |||
define statusanzeige_Led_12 CUL_HM 1EAB540C | |||
attr statusanzeige_Led_12 model HM-OU-LED16 | |||
attr statusanzeige_Led_12 peerIDs 00000000, | |||
define statusanzeige_Led_13 CUL_HM 1EAB540D | |||
attr statusanzeige_Led_13 model HM-OU-LED16 | |||
attr statusanzeige_Led_13 peerIDs 00000000, | |||
define statusanzeige_Led_14 CUL_HM 1EAB540E | |||
attr statusanzeige_Led_14 model HM-OU-LED16 | |||
attr statusanzeige_Led_14 peerIDs 00000000, | |||
define statusanzeige_Led_15 CUL_HM 1EAB540F | |||
attr statusanzeige_Led_15 model HM-OU-LED16 | |||
attr statusanzeige_Led_15 peerIDs 00000000, | |||
define statusanzeige_Led_16 CUL_HM 1EAB5410 | |||
attr statusanzeige_Led_16 model HM-OU-LED16 | |||
attr statusanzeige_Led_16 peerIDs 00000000, | |||
</pre> | |||
So wie aufgelistet erscheint die Stausanzeige nach dem Anlernvorgang in der fhem.cfg. | |||
Will man nun zB den Zustand eines Türkontakt anzeigen so ist die Definition eines notify erforderlich. | |||
<pre> | |||
define statusanzeige_Led_01 CUL_HM 20F85B01 | |||
attr statusanzeige_Led_01 alias 1 TK Essen | |||
attr statusanzeige_Led_01 model HM-OU-LED16 | |||
attr statusanzeige_Led_01 peerIDs 00000000, | |||
attr statusanzeige_Led_01 room Türkontakt | |||
define statusanzeige_Led_01_open notify TK_Essen:open set statusanzeige_Led_01 led red | |||
define statusanzeige_Led_01_closed notify TK_Essen:closed set statusanzeige_Led_01 led green | |||
</pre> | |||
In diesem Beispiel signalisiert statusanzeige_Led_01 die Led 1 der Statusanzeige. | |||
TK_Essen ist der Türkontakt im Esszimmer | |||
statusanzeige_Led_01_open ist der Zustand Tür offen | |||
statusanzeige_Led_01_closed ist der Zustand Tür geschlossen | |||
das notify reagiert auf die Zustände open and closed | |||
und setz die Statusanzeige LED grün oder rot | |||
Hat man mehr als 2 oder 3 solcher Kontakte so ist es unübersichtlich und zu aufwendig für jeden Kontakt ein eigenes Notify zu schreiben. | |||
Hat man bei der Namensgebung die Empfehlungen aus dem Einsteiger Pdf beherzigt und die Namen systematisch vergeben so kann man das deutlich eleganter definieren. | |||
Wenn nun die Kontakte jeweils so aussehen FK_Wohnzimmer, FK_Esszimmer, TK_Wohnzimmer, TK_Esszimmer ( FK = Fensterkontakt, TK = Türkontakt ) so sieht das eine notify so aus | |||
<pre> | |||
##################### notify über die Zustände der Türen und Fenster ---------- | |||
define statusanzeige_Led_update notify (T|F)K_.*:(open|closed) { Update_Fenster_LED("$NAME") } | |||
</pre> | |||
(T|F)K_.* ist die kurze Schreibweise für die Kontakte | |||
(open|closed) ist der aktuelle Zustand der Kontakte | |||
== 99_myUtils.pm == | |||
<pre> | |||
sub | |||
Disp_Update { | |||
if (isday() ) { | |||
fhem ("set statusanzeige ilum 15 0") | |||
} else { | |||
fhem ("set statusanzeige ilum 1 15") | |||
} | |||
} | |||
</pre> | |||
Die erste Zahl ist die Helligkeit (0 bis 15) | |||
Die zweite Zahl ist die Leuchtdauer in Sekunden (wobei 0 = dauerhaft eingeschaltet) | |||
OG_Statusdisplay ist der Name des Status Displays der mit rename nach Belieben umbenannt werden kann | |||
== Beispiel 1 == | |||
Das Statusdisplay über z:B. einen Bewegungsmelder einschalten und den aktuellen Status der Geräte anzeigen. | |||
Das Gerät übernimmt beim einschalten ( ein / ausschalten nicht vorgesehen) nicht die aktuellen Zustände. | |||
Dies muss über weitere notifys realisiert werden. | |||
Es sind zwei Schritte in der fhem.cfg erforderlich. | |||
1. Erweiterung der fhem.cfg um ein notify das auf "poweron" reagiert | |||
2. Die Aktualisierung der aktuellen Zustände | |||
<pre> | |||
define LED_Anzeige_powerOn notify statusanzeige:powerOn.* define UF_LED_Anzeige_powerOn at +00:00:10 {Update_Fenster_LED("Alle")} | |||
attr LED_Anzeige_powerOn room Türkontakt | |||
</pre> | |||
und eine Erweiterung der 99_myUtils.pm die die aktuellen state Zustände abfragt: | |||
<pre> | |||
my @Fenster_name = ("FK_Bad_EG", "FK_Buero", "FK_Essen", "FK_Garage", "FK_Keller", "FK_Kueche" , "TK_Essen", "TK_wohnen"); | |||
my @Led_name = ("statusanzeige_Led_01", "statusanzeige_Led_02", "statusanzeige_Led_03", "statusanzeige_Led_04", "statusanzeige_Led_05", "statusanzeige_Led_06" , "statusanzeige_Led_07", "statusanzeige_Led_08"); | |||
sub Update_Fenster_LED($) { | |||
my ($fenster) = @_; | |||
my $i; | |||
my $zustand; | |||
my $led; | |||
my $farbe; | |||
# Reset | |||
if ($fenster eq "Alle") { | |||
fhem("set LED_Anzeige led off"); | |||
} | |||
# Loop über alle Fenster | |||
for ($i = 0; $i <= $#Fenster_name; $i++) { | |||
if ($fenster eq "Alle" || $fenster eq $Fenster_name[$i]) { | |||
# Aktuellen Zustand lesen | |||
$zustand = Value($Fenster_name[$i]); | |||
# LED ermitteln | |||
$led = $Led_name[$i]; | |||
# Farbe setzen | |||
if ($zustand eq "closed") { | |||
$farbe = "green"; | |||
} elsif ($zustand eq "gekippt") { | |||
$farbe = "orange"; | |||
} elsif ($zustand eq "open") { | |||
$farbe = "red"; | |||
} else { | |||
$farbe = "off"; | |||
} | |||
# LED senden | |||
fhem("set $led led $farbe"); | |||
# Abbruch, falls nicht für alle Fenster | |||
if ($fenster ne "Alle") { | |||
last; | |||
} | |||
} | |||
} | |||
} | |||
</pre> | |||
Achtung gekippt muss noch durch den englishen Begriff ersetzt werden ! | |||
Wichtig vor allem die ersten beiden Zeilen | |||
wobei der 1. Fenster_name mit dem 1. Led_name korrespondieren muss. Die weiteren natürlih auch entsprechend. | |||
Diskussion hier: | |||
http://forum.fhem.de/index.php/topic,25539.msg387495.html#msg387495 | |||
== Beispiel 2 == | |||
Ähnlich wie Beispiel 1, aber etwas flexibler. Vorausgesetzt wird, dass das Display "statusanzeige" heißt. | |||
Notify zum Setzen der aktuellen Zustände beim Einschalten des Displays: | |||
<pre> | |||
define statusanzeige_powerOn notify statusanzeige:powerOn.* {update_led("alle")} | |||
</pre> | |||
Notify zum Ändern des Zustands, wenn sich Werte ändern: | |||
<pre> | |||
define statusanzeige_update_led notify (geraet1|geraet2|geraet3|geraet4).* { update_led("$NAME") } | |||
</pre> | |||
Erweiterung der 99_myUtils.pm, um die Zustände zu setzen (Funktion "update_led"): | |||
<pre> | |||
# die abgefragten Geräte (oder dummys) auf die LEDs mappen | |||
my %thingToLed = ('geraet1' => 'statusanzeige_Led_01', | |||
'geraet2' => 'statusanzeige_Led_02', | |||
'geraet3' => 'statusanzeige_Led_03', | |||
'geraet4' => 'statusanzeige_Led_04'); | |||
# die abgefragten Geräte (oder dummys) auf die "OK-Zustände" mappen | |||
# => wenn dieser Zustand vorliegt, zeigt die LED grün | |||
my %thingToOkState = ('geraet1' => 'closed', | |||
'geraet2' => 'aus', | |||
'geraet3' => 'off', | |||
'geraet4' => 'nein'); | |||
# die abgefragten Geräte (oder dummys) auf die "Nicht-OK-Farben" mappen | |||
# => wenn nicht der oben definierte "OK-Zustand" vorliegt, zeigt die LED die hier definierte Farbe | |||
my %thingToNotOkColor = ('geraet1' => 'red', | |||
'geraet2' => 'red', | |||
'geraet3' => 'orange', | |||
'geraet4' => 'red'); | |||
sub update_led($) { | |||
my ($sensor) = @_; | |||
my $thing; | |||
my $zustand; | |||
my $led; | |||
my $farbe; | |||
# Reset | |||
if ($sensor eq "alle") { | |||
fhem("set statusanzeige led off"); | |||
} | |||
# Loop über alle Sensoren | |||
# TODO nur bei 'alle' die Schleife durchlaufen, sonst den Sensor direkt via Hash ansprechen | |||
foreach my $thing (keys %thingToLed) { | |||
if ($sensor eq "alle" || $sensor eq $thing) { | |||
# Aktuellen Zustand lesen | |||
$zustand = Value($thing); | |||
# LED ermitteln | |||
$led = $thingToLed{$thing}; | |||
# Farbe setzen | |||
if ($zustand eq $thingToOkState{$thing}) { | |||
$farbe = "green"; | |||
} else { | |||
$farbe = $thingToNotOkColor{$thing}; | |||
} | |||
# LED senden | |||
fhem("set $led led $farbe"); | |||
# Abbruch, falls nicht für alle Sensoren | |||
if ($sensor ne "alle") { | |||
last; | |||
} | |||
} | |||
} | |||
} | |||
</pre> | |||
= Links = | = Links = | ||
* Anleitung: [ | * Anleitung: [https://www.eq-3.de/Downloads/eq3/downloads_produktkatalog/homematic/bda/HM-OU-LED16_UM_GE_eQ-3_web.pdf PDF] | ||
* Beispiele [http://www.fischer-net.de/hausautomation/fhem/56-fhem-status-mehrerer-geraete-aggregieren.html] | |||
* Helligkeit / Dauer {{Link2Forum|Topic=10476|Message=383362}} | |||
[[Kategorie:Schalter (Sender)]] | [[Kategorie:Schalter (Sender)]] | ||
[[Kategorie:Schalter (Empfänger)]] | [[Kategorie:Schalter (Empfänger)]] | ||
[[Kategorie:HomeMatic Components]] | [[Kategorie:HomeMatic Components]] | ||
[[Kategorie:Statusdisplay]] |
Aktuelle Version vom 10. Januar 2019, 16:47 Uhr
HM-OU-LED16 Funk-Statusanzeige LED16 | |
---|---|
Allgemein | |
Protokoll | HomeMatic |
Typ | Empfänger, Aktor |
Kategorie | HomeMatic |
Technische Details | |
Kommunikation | 868MHz |
Kanäle | 16 (3 Tasten, Hoch, Runter und Enter) |
Betriebsspannung | 7,5 V DC (über mitgeliefertes Steckernetzteil |
Leistungsaufnahme | max. 250 mA |
Versorgung | Netz |
Abmessungen | 100x100x15mm |
Sonstiges | |
Modulname | CUL_HM |
Hersteller | ELV / eQ-3 |
Features
Anzeige von 16 Statuswerten über rot/grün/orange LED, ca. € 80 (2019/01)
Allgemeines
Die Funk-Statusanzeige LED16 kann mit ihren 16 Kanälen und insgesamt 32 LED's (je 1xGrün und 1xRot -> Rot+Grün=Orange) diverse Status anzeigen. Das Schriftfeld ist nicht beleuchtet und kann mit einer Word-Vorlage befüllt werden. Außerdem kann man sie auch als 16-Kanal Funk-Fernbedienung verwenden. Hier ist die Auswahl des Kanals allerdings etwas umständlich. Mit Hilfe der Hoch- und Runtertaste auf der Rückseite kann man den Kanal, der durch ein blinken der jeweiligen LED's angezeigt wird, auswählen und seine Wahl mit der, ebenfalls auf der Rückseite liegenden Enter-Taste bestätigen.
Hinweise zur Inbetriebnahme und Installation
Die Funk-Statusanzeige kann nicht direkt gepeered werden, sondern funktioniert nur mit einer Zentrale, wie z.B. FHEM.
Die Statusanzeige dazu ebenso wie die Zentrale in den Anlernmodus versetzen. Dazu ist die Taste learn auf der Rückseite der Anzeige für ca 5 Sekunden zu drücken, bis die LED links oben anfängt, langsam grün zu blinken. Dann die learn-Taste loslassen.
Probleme
<ggfls. ergänzen>
Betrieb mit FHEM
event Monitor
<Bitte ergänzen>
fhem.log Auszug
2014.12.31 16:01:11 3: CUL_HM set OG_Statusdisplay_Led_01 led red 2014.12.31 16:02:37 3: CUL_HM set OG_Statusdisplay_Led_01 led off 2014.12.31 16:03:46 3: CUL_HM set OG_Statusdisplay_Led_01 led green 2014.12.31 16:06:39 3: CUL_HM set OG_Statusdisplay_Led_01 led off
In der vorliegenden fhem.cfg ist das Statusdisplay bereits mittels "set HM_ABC123 deviceRename Statusdisplay" in "statusanzeige" umbenannt. Im weiteren wird dieser Name beibehalten
Achtung: Mit rename wird nur das Gerät selbst umbenannt, die 16 Kanäle und die Logfile behalten weiter ihren HM_ABC123 Namen. Mit deviceRename Statusdisplay" wird der Gerätename, der Name aller Kanäle, der Logfile etc. komplett in einem Schwung umbenannt.
Direkt nach der automatischen Definiton in FHEM sah das ungefähr so aus:
define HM_20F85B CUL_HM 20F85B01
fhem.cfg
define statusanzeige CUL_HM 1EAB54 attr statusanzeige IODev HMLAN1 attr statusanzeige autoReadReg 4_reqStatus attr statusanzeige expert 2_full attr statusanzeige firmware 1.1 attr statusanzeige model HM-OU-LED16 attr statusanzeige room Wohnzimmer attr statusanzeige serialNr JEQxxxxxxx attr statusanzeige subType outputUnit attr statusanzeige webCmd getConfig:clear msgEvents define statusanzeige_Led_01 CUL_HM 1EAB5401 attr statusanzeige_Led_01 model HM-OU-LED16 attr statusanzeige_Led_01 peerIDs 00000000, define statusanzeige_Led_02 CUL_HM 1EAB5402 attr statusanzeige_Led_02 model HM-OU-LED16 attr statusanzeige_Led_02 peerIDs 00000000, define statusanzeige_Led_03 CUL_HM 1EAB5403 attr statusanzeige_Led_03 model HM-OU-LED16 attr statusanzeige_Led_03 peerIDs 00000000, define statusanzeige_Led_04 CUL_HM 1EAB5404 attr statusanzeige_Led_04 model HM-OU-LED16 attr statusanzeige_Led_04 peerIDs 00000000, define statusanzeige_Led_05 CUL_HM 1EAB5405 attr statusanzeige_Led_05 model HM-OU-LED16 attr statusanzeige_Led_05 peerIDs 00000000, define statusanzeige_Led_06 CUL_HM 1EAB5406 attr statusanzeige_Led_06 model HM-OU-LED16 attr statusanzeige_Led_06 peerIDs 00000000, define statusanzeige_Led_07 CUL_HM 1EAB5407 attr statusanzeige_Led_07 model HM-OU-LED16 attr statusanzeige_Led_07 peerIDs 00000000, define statusanzeige_Led_08 CUL_HM 1EAB5408 attr statusanzeige_Led_08 model HM-OU-LED16 attr statusanzeige_Led_08 peerIDs 00000000, define statusanzeige_Led_09 CUL_HM 1EAB5409 attr statusanzeige_Led_09 model HM-OU-LED16 attr statusanzeige_Led_09 peerIDs 00000000, define statusanzeige_Led_10 CUL_HM 1EAB540A attr statusanzeige_Led_10 model HM-OU-LED16 attr statusanzeige_Led_10 peerIDs 00000000, define statusanzeige_Led_11 CUL_HM 1EAB540B attr statusanzeige_Led_11 model HM-OU-LED16 attr statusanzeige_Led_11 peerIDs 00000000, define statusanzeige_Led_12 CUL_HM 1EAB540C attr statusanzeige_Led_12 model HM-OU-LED16 attr statusanzeige_Led_12 peerIDs 00000000, define statusanzeige_Led_13 CUL_HM 1EAB540D attr statusanzeige_Led_13 model HM-OU-LED16 attr statusanzeige_Led_13 peerIDs 00000000, define statusanzeige_Led_14 CUL_HM 1EAB540E attr statusanzeige_Led_14 model HM-OU-LED16 attr statusanzeige_Led_14 peerIDs 00000000, define statusanzeige_Led_15 CUL_HM 1EAB540F attr statusanzeige_Led_15 model HM-OU-LED16 attr statusanzeige_Led_15 peerIDs 00000000, define statusanzeige_Led_16 CUL_HM 1EAB5410 attr statusanzeige_Led_16 model HM-OU-LED16 attr statusanzeige_Led_16 peerIDs 00000000,
So wie aufgelistet erscheint die Stausanzeige nach dem Anlernvorgang in der fhem.cfg.
Will man nun zB den Zustand eines Türkontakt anzeigen so ist die Definition eines notify erforderlich.
define statusanzeige_Led_01 CUL_HM 20F85B01 attr statusanzeige_Led_01 alias 1 TK Essen attr statusanzeige_Led_01 model HM-OU-LED16 attr statusanzeige_Led_01 peerIDs 00000000, attr statusanzeige_Led_01 room Türkontakt define statusanzeige_Led_01_open notify TK_Essen:open set statusanzeige_Led_01 led red define statusanzeige_Led_01_closed notify TK_Essen:closed set statusanzeige_Led_01 led green
In diesem Beispiel signalisiert statusanzeige_Led_01 die Led 1 der Statusanzeige. TK_Essen ist der Türkontakt im Esszimmer statusanzeige_Led_01_open ist der Zustand Tür offen statusanzeige_Led_01_closed ist der Zustand Tür geschlossen das notify reagiert auf die Zustände open and closed und setz die Statusanzeige LED grün oder rot
Hat man mehr als 2 oder 3 solcher Kontakte so ist es unübersichtlich und zu aufwendig für jeden Kontakt ein eigenes Notify zu schreiben. Hat man bei der Namensgebung die Empfehlungen aus dem Einsteiger Pdf beherzigt und die Namen systematisch vergeben so kann man das deutlich eleganter definieren. Wenn nun die Kontakte jeweils so aussehen FK_Wohnzimmer, FK_Esszimmer, TK_Wohnzimmer, TK_Esszimmer ( FK = Fensterkontakt, TK = Türkontakt ) so sieht das eine notify so aus
##################### notify über die Zustände der Türen und Fenster ---------- define statusanzeige_Led_update notify (T|F)K_.*:(open|closed) { Update_Fenster_LED("$NAME") }
(T|F)K_.* ist die kurze Schreibweise für die Kontakte (open|closed) ist der aktuelle Zustand der Kontakte
99_myUtils.pm
sub Disp_Update { if (isday() ) { fhem ("set statusanzeige ilum 15 0") } else { fhem ("set statusanzeige ilum 1 15") } }
Die erste Zahl ist die Helligkeit (0 bis 15) Die zweite Zahl ist die Leuchtdauer in Sekunden (wobei 0 = dauerhaft eingeschaltet) OG_Statusdisplay ist der Name des Status Displays der mit rename nach Belieben umbenannt werden kann
Beispiel 1
Das Statusdisplay über z:B. einen Bewegungsmelder einschalten und den aktuellen Status der Geräte anzeigen. Das Gerät übernimmt beim einschalten ( ein / ausschalten nicht vorgesehen) nicht die aktuellen Zustände. Dies muss über weitere notifys realisiert werden.
Es sind zwei Schritte in der fhem.cfg erforderlich. 1. Erweiterung der fhem.cfg um ein notify das auf "poweron" reagiert 2. Die Aktualisierung der aktuellen Zustände
define LED_Anzeige_powerOn notify statusanzeige:powerOn.* define UF_LED_Anzeige_powerOn at +00:00:10 {Update_Fenster_LED("Alle")} attr LED_Anzeige_powerOn room Türkontakt
und eine Erweiterung der 99_myUtils.pm die die aktuellen state Zustände abfragt:
my @Fenster_name = ("FK_Bad_EG", "FK_Buero", "FK_Essen", "FK_Garage", "FK_Keller", "FK_Kueche" , "TK_Essen", "TK_wohnen"); my @Led_name = ("statusanzeige_Led_01", "statusanzeige_Led_02", "statusanzeige_Led_03", "statusanzeige_Led_04", "statusanzeige_Led_05", "statusanzeige_Led_06" , "statusanzeige_Led_07", "statusanzeige_Led_08"); sub Update_Fenster_LED($) { my ($fenster) = @_; my $i; my $zustand; my $led; my $farbe; # Reset if ($fenster eq "Alle") { fhem("set LED_Anzeige led off"); } # Loop über alle Fenster for ($i = 0; $i <= $#Fenster_name; $i++) { if ($fenster eq "Alle" || $fenster eq $Fenster_name[$i]) { # Aktuellen Zustand lesen $zustand = Value($Fenster_name[$i]); # LED ermitteln $led = $Led_name[$i]; # Farbe setzen if ($zustand eq "closed") { $farbe = "green"; } elsif ($zustand eq "gekippt") { $farbe = "orange"; } elsif ($zustand eq "open") { $farbe = "red"; } else { $farbe = "off"; } # LED senden fhem("set $led led $farbe"); # Abbruch, falls nicht für alle Fenster if ($fenster ne "Alle") { last; } } } }
Achtung gekippt muss noch durch den englishen Begriff ersetzt werden ! Wichtig vor allem die ersten beiden Zeilen wobei der 1. Fenster_name mit dem 1. Led_name korrespondieren muss. Die weiteren natürlih auch entsprechend.
Diskussion hier: http://forum.fhem.de/index.php/topic,25539.msg387495.html#msg387495
Beispiel 2
Ähnlich wie Beispiel 1, aber etwas flexibler. Vorausgesetzt wird, dass das Display "statusanzeige" heißt.
Notify zum Setzen der aktuellen Zustände beim Einschalten des Displays:
define statusanzeige_powerOn notify statusanzeige:powerOn.* {update_led("alle")}
Notify zum Ändern des Zustands, wenn sich Werte ändern:
define statusanzeige_update_led notify (geraet1|geraet2|geraet3|geraet4).* { update_led("$NAME") }
Erweiterung der 99_myUtils.pm, um die Zustände zu setzen (Funktion "update_led"):
# die abgefragten Geräte (oder dummys) auf die LEDs mappen my %thingToLed = ('geraet1' => 'statusanzeige_Led_01', 'geraet2' => 'statusanzeige_Led_02', 'geraet3' => 'statusanzeige_Led_03', 'geraet4' => 'statusanzeige_Led_04'); # die abgefragten Geräte (oder dummys) auf die "OK-Zustände" mappen # => wenn dieser Zustand vorliegt, zeigt die LED grün my %thingToOkState = ('geraet1' => 'closed', 'geraet2' => 'aus', 'geraet3' => 'off', 'geraet4' => 'nein'); # die abgefragten Geräte (oder dummys) auf die "Nicht-OK-Farben" mappen # => wenn nicht der oben definierte "OK-Zustand" vorliegt, zeigt die LED die hier definierte Farbe my %thingToNotOkColor = ('geraet1' => 'red', 'geraet2' => 'red', 'geraet3' => 'orange', 'geraet4' => 'red'); sub update_led($) { my ($sensor) = @_; my $thing; my $zustand; my $led; my $farbe; # Reset if ($sensor eq "alle") { fhem("set statusanzeige led off"); } # Loop über alle Sensoren # TODO nur bei 'alle' die Schleife durchlaufen, sonst den Sensor direkt via Hash ansprechen foreach my $thing (keys %thingToLed) { if ($sensor eq "alle" || $sensor eq $thing) { # Aktuellen Zustand lesen $zustand = Value($thing); # LED ermitteln $led = $thingToLed{$thing}; # Farbe setzen if ($zustand eq $thingToOkState{$thing}) { $farbe = "green"; } else { $farbe = $thingToNotOkColor{$thing}; } # LED senden fhem("set $led led $farbe"); # Abbruch, falls nicht für alle Sensoren if ($sensor ne "alle") { last; } } } }