Entfeuchter schalten

Anhand der Messwerte eines HomeMatic-Feuchtigkeitssensors wird ein Entfeuchter geschaltet, der nicht zu häufig ein- und ausgeschaltet werden darf

3871 Zeichen
Score aktualisiert
100%
Code: ee7955f989cc48899a4e79a1e0079422
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert

In meinem Keller lege ich großen Wert auf niedrige Luftfeuchtigkeit, denn die ist der größte Feind der Modellbahn. Darum habe ich dort einen kräftigen Bautrockner stehen.

Der von mir verwendete Comedes LTR-600 trocknet hervorragend und ist relativ günstig, allerdings hat die Qualität deutlich nachgelassen: Mein erster funktioniert seit Jahren wie am ersten Tag, mein zweiter musste inzwischen mehrfach repariert oder sogar ausgetauscht werden.

Variablen in HomeMatic-Scripten

Die CCU hatte früher ein Limit von maximal 200 Variablen, das mit Firmware-Version 2.29.18 aufgehoben wurde. Dieses Limit bezog sich auf alle Variablen, die in allen Scripten verwendet werden. Gemeint sind Variablen, die direkt im Script definiert werden: object x; object y; var z;

Wenn Scripte nicht mehr funktionieren und bei der Prüfung unerklärliche Syntax-Fehler auftreten, sollte versuchsweise dieses Programm wieder gelöscht oder deaktiviert werden – oder, noch besser, auf die aktuelle Firmware-Version aktualisiert werden.

Der Hygrostat allerdings überzeugt in keinem Fall. Darum habe ich mir ein Script gebastelt, das die Feuchtigkeit möglichst konstant hält. Das Ergebnis kann man hier sehen:

Links sieht man den eingebauten Hygrostat des Entfeuchters bei der Arbeit, der die Feuchtigkeit nicht wirklich stabil hält. Rechts – ungefähr ab Juli – habe ich mein Script aktiviert. Die Ausschläge entstehen dadurch, dass ich während der Anwesenheit im Keller den Entfeuchter nicht laufen lasse. Dadurch steigt natürlich die Durchschnittsfeuchtigkeit für den Tag an.

Besondere Herausforderung dabei: Um den Kompressor nicht zu zerstören, soll der Entfeuchter immer mindestens 20 Minuten in Betrieb sein. Nach dem Ausschalten soll er mindestens 30 Minuten ausgeschaltet bleiben.

Zunächst das Programm für die WebUI:

Der Raumthermostat im Eisenbahnkeller liefert zyklisch den aktuellen Feuchtigkeitswert an die CCU. Jedes Mal, wenn ein neuer Wert kommt, wird das Programm gestartet. Die zusätzliche Bedingung sorgt dafür, dass das Script nur ausgeführt wird, wenn das Licht ausgeschaltet ist (weil dann niemand im Keller ist, den das Geräusch stört) oder wenn der Entfeuchter bereits eingeschaltet ist (weil dann das Script laufen muss, damit er wieder ausgeschaltet wird, auch bei Licht).

Wichtig ist die Auswahl von bei Aktualisierung für den Raum- oder Heizkörperthermostaten. Wird hier bei Änderung ausgewählt, schaltet das Programm den Entfeuchter niemals ein oder – beinahe noch schlimmer – niemals wieder aus.

Ebenfalls wichtig ist die Auswahl von nur prüfen beim Aktor des Entfeuchters. Wird hier etwas anderes ausgewählt, ruft sich das Programm schlimmstenfalls immer wieder selbst auf, weil genau der Aktor über das Script geschaltet wird.

Um das folgende Script einzufügen, bitte komplett markieren, in der WebUI auf den den Button „Script“ klicken und den gesamten Text einfügen. Nachdem das Script eingefügt wurde, sieht man wie in meinem Screenshot oben den Anfang des Codes.

! HomeMatic-Script
! ENTFEUCHTER SCHALTEN
! http://www.christian-luetgens.de/homematic/programmierung/klima/entfeuchter/Entfeuchter.htm

integer i_soll = 50;
object o_entf_state = dom.GetObject("Eisenbahnkeller.Entfeuchter").DPByHssDP("STATE");
object o_heiz_humid = dom.GetObject("Eisenbahnkeller.Heizung.Messwerte").DPByHssDP("HUMIDITY");

integer i_ist = o_heiz_humid.Value();
boolean b_state = o_entf_state.Value();

integer i_diff = system.Date("%Y-%m-%d %H:%M:%S").ToTime().ToInteger() -
o_entf_state.Timestamp().ToInteger();

if ((((i_ist > (i_soll + 1)) && (!b_state)) || (i_ist > (i_soll + 2)))
&& (i_diff > 1800)) {
o_entf_state.State(1);
}

if ((((i_ist < (i_soll - 1)) && (b_state)) || (i_ist < (i_soll - 2)))
&& (i_diff > 1200)) {
o_entf_state.State(0);
}

!  Ende des Scripts

Die ersten drei Zeilen müssen individuell angepasst werden:

i_soll = 50

gibt den Sollwert für die Feuchtigkeit an: 50 = 50 %; es sind beliebige ganzzahlige Werte möglich

Eisenbahnkeller.Entfeuchter

ist der Name des Kanals des Schaltaktors, an dem der Entfeuchter hängt

Eisenbahnkeller.Heizung.Messwerte

ist der Name des Kanals des Raumthermostaten oder Heizkörperthermostaten, der die Raumfeuchtigkeit misst

Das Script schaltet den Entfeuchter ein, wenn er mindestens 30 Minuten ausgeschaltet war und die Sollfeuchtigkeit um 2 Prozentpunkte überschritten ist (52 %). Wird die Sollfeuchtigkeit um 2 Prozentpunkte unterschritten (48 %) und der Entfeuchter war mindestens 20 Minuten eingeschaltet, wird er wieder ausgeschaltet.

Navigation