zurück zur Startseite

zurück zur Übersicht der Heimautomatisierung

14. Das private Badezimmer (Stand 18.12.2018)

Eine wichtige Funktion im Bad ist das Lüften. Deshalb gibt es einen Ventilator, der in Abhängigkeit der Luftfeuchtigkeit eingeschaltet werden soll. Aufgrund der langen Abluftleitung gibt es noch einen Zusatzlüfter - genau derselbe, den ich schon im vorangegangenen Kapitel erwähnt habe. Diese beiden müssen unabhängig voneinander geschaltet werden, deshalb verwende ich einen 2-kanaligen Schalter von HomeMatic. Zum Erfassen der Luftfeuchtigkeit dient ein Sensor der gleichen Firma, der mir auch die Temperatur misst.

Hat man den 2-Kanal-Schalter in FHEM bekannt gemacht, so findet man in fhem.cfg folgende Einträge:

define pb_ventiswitch CUL_HM 33C7D9
   attr pb_ventiswitch IODev hmusb
   attr pb_ventiswitch IOgrp xx_Zentrale
   attr pb_ventiswitch autoReadReg 4_reqStatus
   attr pb_ventiswitch expert 2_full
   attr pb_ventiswitch firmware 2.5
   attr pb_ventiswitch model HM-LC-SW2-FM
   attr pb_ventiswitch room Privatbad
   attr pb_ventiswitch serialNr LEQ1319901
   attr pb_ventiswitch subType switch
   attr pb_ventiswitch webCmd getConfig:clear msgEvents

define pb_ventiswitch1 CUL_HM 33C7D901
   attr pb_ventiswitch1 comment Badezimmerlüfter
   attr pb_ventiswitch1 devStateIcon on:pb_ventilation.on off:pb_ventilation.off
   attr pb_ventiswitch1 model HM-LC-SW2-FM
   attr pb_ventiswitch1 peerIDs 00000000,
   attr pb_ventiswitch1 room Privatbad
   attr pb_ventiswitch1 webCmd statusRequest:toggle:on:off

define pb_ventiswitch2 CUL_HM 33C7D902
   attr pb_ventiswitch2 comment Zusatzlüfter
   attr pb_ventiswitch2 model HM-LC-SW2-FM
   attr pb_ventiswitch2 peerIDs 00000000,
   attr pb_ventiswitch2 room Privatbad
   attr pb_ventiswitch2 webCmd statusRequest:toggle:on:off

Entsprechend erhält man für den Sensor folgenden Eintrag:

define pb_Raumsensor CUL_HM 341992
   attr pb_Raumsensor IODev hmusb
   attr pb_Raumsensor IOgrp xx_Zentrale
   attr pb_Raumsensor actCycle 000:10
   attr pb_Raumsensor actStatus alive
   attr pb_Raumsensor autoReadReg 4_reqStatus
   attr pb_Raumsensor expert 2_full
   attr pb_Raumsensor firmware 1.3
   attr pb_Raumsensor fp_zw_privatbad 700,700,4, 
   attr pb_Raumsensor model HM-WDS40-TH-I-2
   attr pb_Raumsensor peerIDs 00000000,
   attr pb_Raumsensor room Privatbad
   attr pb_Raumsensor serialNr LEQ1258198
   attr pb_Raumsensor subType THSensor

Das Attribut "fp_zw_privatbad" (siehe auch Kapitel 16) sorgt für eine Anzeige der Temperatur und Feuchtigkeit in der Bedienoberfläche. Dort möchte ich auch sehen ob der Lüfter läuft oder nicht, außerdem möchte ich ihn auch manuell komplett aus- oder dauerhaft einschalten können. Dazu brauche ich zuerst mal eine Variable (in FHEM also ein "dummy"):

define pb_ventilation dummy
   attr attr pb_ventilation devStateIcon on:20_k_ventilator1:off off:20_k_ventilator0:auto auto:20_k_ventilatorauto:on
   attr pb_ventilation fp_zw_privatbad 100,1100,0
   attr pb_ventilation room Privatbad
   attr pb_ventilation webCmd off:auto:on

Der Status wird in meiner Bedienoberfläche angezeigt (Attribut fp_zw_privatbad), dafür habe ich 3 Bildchen erstellt, die wiederum über das Attribut devStateIcon je nach Wert ausgewählt werden (rot=aus, grün=ein, blau=auto). In diesem Attribut ist auch hinterlegt, wie das Weiterschalten erfolgt. Welche Zustände man über die Bedienoberfläche überhaupt schalten kann, wird durch das Attribut webCmd gesteuert.

Man sieht, es ist der Automatikmodus angewählt (blaue Anzeige) und aktuell ist der Lüfter aus (kleines rotes Icon). Das kommt durch das entsprechende Attribut des Schalters:

   ...
   attr pb_ventiswitch1 devStateIcon on:pb_ventilation.on off:pb_ventilation.off
   ...

Die nachfolgende Funktion schaltet den Ventilator je nach Luftfeuchtigkeit nun an und aus;

define pb_humidity DOIF ([pb_ventilation] eq "on")  ## Bad dauerhaft ein
 (set pb_ventiswitch1 on)
DOELSEIF ([pb_ventilation] eq "off")  ## Bad dauerhaft aus und Dunstabzug aus
 (set pb_ventiswitch1 off)
DOELSEIF ([pb_ventilation] eq "auto" and [pb_Raumsensor:humidity] > 70)  ## Bad feucht, also 30 Minuten ein
 (set pb_ventiswitch1 on-for-timer 1800)
DOELSEIF ([pb_ventilation] eq "auto" and [pb_Raumsensor:humidity] < 66)  ## Bad in weniger als 30 Minuten wieder trocken
 (set pb_ventiswitch1 off)
    attr pb_humidity room Privatbad

Abschließend kommt jetzt noch die Steuerung des Zusatzlüfters.

define pb_zusatzluefter DOIF ([pb_ventiswitch1] eq "on" or [wk_IconDunstabzug] eq "on")  ## einer der beiden Lüfter läuft
 (set pb_ventiswitch on)
DOELSEIF ([pb_ventiswitch1] eq "off" and [wk_IconDunstabzug] eq "off")  ## beide Lüfter sind aus
 (set pb_ventiswitch2 off)
    attr pb_zusatzluefter room Privatbad

Wenn das Badezimmer zu feucht ist und der Lüfter läuft, dann sollte am besten auch das Fenster geöffnet sein. Umgekehrt soll das Fenster bei kalter Außenluft dann doch besser geschlossen sein. Einen Motor zum autmatischen Öffnen und Schließen wollte ich nun auf keinen Fall, aber zumindest wollte ich mir die Möglichkeit eines entsprechenden Hinweises offen lassen. Damit war klar, dass ich einen Sensor am Fenster benötige.

define pb_fenster CUL_HM 2E583A
   attr pb_fenster IODev hmusb
   attr pb_fenster IOgrp vccu
   attr pb_fenster actCycle 028:00
   attr pb_fenster actStatus unknown
   attr pb_fenster autoReadReg 4_reqStatus
   attr pb_fenster devStateIcon open:Fenster.open.png closed:Fenster.closed.png
   attr pb_fenster expert 2_full
   attr pb_fenster firmware 2.4
   attr pb_fenster fp_zw_privatbad 300,300,0
   attr pb_fenster model HM-SEC-SC-2
   attr pb_fenster peerIDs 00000000,
   attr pb_fenster room Privatbad
   attr pb_fenster serialNr LEQ0890368
   attr pb_fenster subType threeStateSensor

Der Status des Fensters wird in meiner Bedienoberfläche angezeigt (Attribut fp_zw_privatbad), dafür habe ich 2 Bildchen erstellt (Fenster.open.png und Fenster.closed.png), die über das Attribut devStateIcon je nach Fensterzustand ausgewählt werden (aktuell ist es geschlossen).

Wichtig ist noch zu wissen, dass man eine weitere Datei in FHEM editieren muss, damit die Anischt der Bedienoberfläche auch wirklich so aussieht. Die Darstellung wird im Wesentlichen durch eine css-Datei festgelegt. Ich habe auf Basis einer von FHEM mitgelieferten css-Datei meine eigenen Definitionen ergänzt. Die Größe und Farbe der Anzeige für Temperatur und Luftfeuchtigkeit ergibt sich aus folgenden Einträgen.

.fp_tempvalue   { color:#dd1111; font-size:60px; }
.fp_humvalue    { color:#1144bb; font-size:60px; }
.fp_temperature { color:#dd1111; font-size:30px; }
.fp_humidity    {color:#1144bb; font-size:30px; }

In jedem definierten flooplan muss man dann noch das Attribut "stylsheet" mit dem namen der css-Datei versorgen.

weiter zu: 15. Das Grundbild mit der Uhr