FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gubbl am 29 Dezember 2013, 19:22:30

Titel: Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: gubbl am 29 Dezember 2013, 19:22:30
Hallo allerseits,

Ich habe fhem zwar schon über ein Jahr am laufen, würde mich aber dennoch als Anfänger bezeichnen, da ich nie groß was "gecoded" habe.
Nunja, nachdem ich Rolladensteuerung mit at hinbekommen habe dachte ich mir, Luftfeuchtesteuerung mit notify dürfte nicht allzu schwer sein...

Die Luftfeuchtesteuerung soll zwar nachher in 2 Zimmern stattfinden, aber ich reduziere das hier erstmal auf das Simplere von beiden.

Setup:
- 1 simpler FS20 on/off Schalter am Lüfter
- 1 HMS100TF Temperatur- und Luftfeuchtesensor
- fhem auf FritzBox 7390 mit CUL

Die Geräte separat funktionieren schon, an denen kann's also kaum liegen.
Screens der Beiden befinden sich im Anhang.

Perl-Profi bin ich definitiv auch keiner, kann daher sein, dass es ein simpler Syntax-Fehler ist den ich übersehe.

define SzDehydAn notify sz_sensor {\
  my $sz_dehyd_state = ReadingsVal("sz_dehyd","state","off");;\
  my $sz_current_humid = ReadingsVal("sz_sensor","humidity","100.0");;\
  if($sz_current_humid != 100.0) {\
    if($sz_dehyd_state=="off" && ($sz_current_humid > 65)) {\
      fhem("set sz_dehyd on");;\
    }\
    elsif($sz_dehyd_state=="on" && ($sz_current_humid < 55)) {\
      fhem("set sz_dehyd off");;\
    }\
  }\
}


Der Code soll:
Luftentfeuchter anschalten, wenn die Luftfeuchte über 65% gestiegen ist.
Luftentfeuchter ausschalten, wenn die Luftfeuchte unter 55% gefallen ist.

Das mit dem State soll bewirken, dass er den Luftfeuchter nicht ausschält, wenn er über den manuellen Taster angeschalten wurde.

Was er stattdessen tut:
Luftentfeuchter ausschalten bei Luftfeuchte < 55, auch wenn der Entfeuchter aus ist und in fhem auch den Status off aufweist.
Nichts bei Luftfeuchte > 55.


Ich hoffe, das war ausreichend beschrieben und ihr könnt mir weiterhelfen.
Falls ich das Ganze komplett falsch angehe, bin ich natürlich auch für neue Wege offen ;)

Bis dann,
Julian
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: Puschel74 am 29 Dezember 2013, 20:13:13
Hallo,

versuch mal das
define SzDehydAn notify sz_sensor:humidity.* {\
  my $sz_dehyd_state = ReadingsVal("sz_dehyd","state","off");;\
  my $sz_current_humid = ReadingsVal("sz_sensor","humidity","100.0");;\
  if($sz_current_humid <= "100.0") {\
    if(($sz_dehyd_state eq "off") && ($sz_current_humid >= 65)) {\
      fhem("set sz_dehyd on");;\
    }\
    elsif(($sz_dehyd_state eq "on") && ($sz_current_humid <= 55)) {\
      fhem("set sz_dehyd off");;\
    }\
  }\
}


und poste bitte die Fehlermeldungen.

Grüße
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: John am 29 Dezember 2013, 20:15:47
Hallo Julian,

einige Kommentare zu deinem Skript/Vorhaben:

Theoretisch kann der Feuchtesensor auch 100% bringen, dann funktioniert dein Skript nicht mehr.

Besser wäre es eine Default-Wert zu wählen der unmöglich ist wie 999;

my $sz_current_humid = ReadingsVal("sz_sensor","humidity","999");;


Weiterhin:

Relative Luftfeuchte ist nicht alles.
Vielleicht siehst du dir noch die Grundlagen zum Thema Taupunkt an.
Es macht nur dann Sinn den Lüfter zum Entfeuchten zu verwenden, wenn die Taupunkt-Temperatur aussen niedriger als innen ist.

Hierzu gibt es übrigens das Dewpoint Modul.


John

Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: justme1968 am 29 Dezember 2013, 20:30:46
und ein threshold modul das fast alles weitere automatisch macht.

gruss
  andre
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: Zrrronggg! am 29 Dezember 2013, 20:45:39
 
Zitatif($sz_current_humid != 100.0) {\
    if($sz_dehyd_state=="off" && ($sz_current_humid > 65))

Geht das überhaupt? (Mal abgesehen vom Klammerfehler meine ich) Also die verschachtelten Ifs?
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: Puschel74 am 29 Dezember 2013, 21:13:43
Hallo,

ZitatGeht das überhaupt? (Mal abgesehen vom Klammerfehler meine ich) Also die verschachtelten Ifs?
Jep. Klappt einwandfrei.

Davon habe ich auch einige im Einsatz  ;D
Ohne Klammerfehler  8)

Grüße
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: gubbl am 29 Dezember 2013, 22:08:14
Hallo,

Erstmal danke für die vielen schnellen Antworten.

@Puschel: Ist reingepastet, Fehlermeldungen/Verhalten dann morgen.

@John: Laut Handbuch geht der Sensor nur bis 95% Luftfeuchte, daher müsste das zwar gehen, aber du hast natürlich recht, man sollte da eindeutig unmögliche Werte nehmen. Ist geändert, danke.
Zum generellen Prinzip: Ich hab noch n Außensensor für Temperatur und Luftfeuchte im Betrieb. Hatte vor, das dann noch als zusätzliche Bedingung mit reinzunehmen, dass die Luftfeuchte draußen noch mindestens 5% niedriger ist. Meintest du das in etwa?
Werde mir aber das Dewpoint-Modul mal angucken, gleiches gilt für Threshold @justme1968.

@Zrrronggg: Klammerfehler? Ist es nicht erlaubt, Teile einer Bedingung zu Klammern?

Danke an alle! :) Meld mich dann morgen nochmal.
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: John am 29 Dezember 2013, 22:31:34
Hallo Julian,
ZitatZum generellen Prinzip: Ich hab noch n Außensensor für Temperatur und Luftfeuchte im Betrieb. Hatte vor, das dann noch als zusätzliche Bedingung mit reinzunehmen, dass die Luftfeuchte draußen noch mindestens 5% niedriger ist. Meintest du das in etwa?

Nein, das ist zu einfach gedacht.

Mach dich mal fit zum Thema Taupunkt.

Die gemessene Feuchte ist die relative Luftfeuchte.
Relativ bedeutet in Abhängigkeit von der Temperatur.
Du kannst dir zur Zeit 100% feuchte Luft von draussen reinholen und damit dein 80% feuchtes Bad trocknen.
Der Taupunkt normiert das Thema. Ihn kann man ermitteln, wenn man neben der relativen Feuchte auch die Temperatur kennt.
Der Taupunkt ist die Temperatur bei der die Luft eine Feuchtesättigung von 100% hat.

Will man also wissen ob man mit der Aussenluft überhaupt trocknen kann, berechnet man von innen und von aussen den Taupunkt.
Ta muss kleiner Ti sein. Dann funktioniert das mit dem Entfeuchten und nur dann macht es Sinn den Lüfter einzuschalten.

Im Sommer ist es oft umgekehrt. Da ist Ta > Ti
Da kannst du dir massiv Feuchte ins Haus holen, wenn du nach den von dir beschriebenen Regeln arbeitest.



John
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: gubbl am 29 Dezember 2013, 22:37:40
Okay, vielen Dank, war mir nicht bekannt.
Macht aber natürlich Sinn, weil warme Luft mehr Feuchte transportieren kann als kalte...

Sieht ja so aus, als ob ich alle nötigen Werte hätte um den Taupunkt irgendwie zu berechnen.
Gut, dann guck ich mir das mal an.

Danke schön  :)
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: LuckyDay am 29 Dezember 2013, 23:55:50
in fhem gibts das Modul devpoint , wo dir den Taupunkt berechnet.
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: Zrrronggg! am 30 Dezember 2013, 00:34:48
Zitat@Zrrronggg: Klammerfehler? Ist es nicht erlaubt, Teile einer Bedingung zu Klammern?

Doch (obwohl ... "erlaubt" ist eh die falsche Frage. Man MUSS ggf.) aber eben richtig.

Also nicht so
if($sz_dehyd_state=="off" && ($sz_current_humid > 65))


Oder anders: Warum klammerst du den Ausdruck "$sz_current_humid > 65" ein, aber die andere Bedingung "$sz_dehyd_state=="off"" nicht?


Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: Puschel74 am 30 Dezember 2013, 09:15:43
Hallo,

weil die Abfrage bzw. der Vegleich auf == "off" sowieso nicht klappt.
Auf Zeichenketten sollte schon mit eq etc. geprüft werden.

Die Klammerfehler hat gubbl noch in seinem Beispiel drinnen.
Ich hoffe das ich in meiner geposteten Variante so gut wie alle Fehler eliminiert habe ;D

Grüße
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: gubbl am 02 Januar 2014, 16:20:55
Hallo allerseits,

Ich habe das ganze jetzt wie mir geraten wurde mit THRESHOLD umgesetzt, ist tatsächlich deutlich einfacher, dadurch fallen dann natürlich auch meine ganzen Anfängerfehler wie die Klammern weg. ;)

Der jetzige Code ist ein Einzeiler, den ich jetzt auch noch in anderen Zimmern umgesetzt habe. Funktioniert auch soweit ganz gut.

define SzHygrostat THRESHOLD sz_sensor:humidity:5:55.0 |set sz_dehyd on|set sz_dehyd off|

Zu dem Dewpoint-Modul finde ich aber keine Doku oder Beispiele, in der fhem-reference ists zwar oben mit aufgelistet, aber ich finde es unten nicht mehr, google spuckt auch nichts brauchbares aus, hat mir da jemand einen Link?

Ansonsten passt aber mittlerweile alles, danke für die Hilfe :)
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: John am 02 Januar 2014, 16:37:52

Wie wärs hiermit:

http://fhem.de/commandref.html#dewpoint (http://fhem.de/commandref.html#dewpoint)

John
Titel: Antw:Luftfeuchte-Regelung mit notify - scheiternder Anfänger
Beitrag von: gubbl am 02 Januar 2014, 16:41:14
Ohje.  :-[
Hab natürlich nur in der deutschen Referenz nachgeguckt, an die englische hab ich gar nicht gedacht *schäm*
In der deutschen ists nämlich nur aufgelistet, der Link ist aber leer, die Doku wurde wohl noch nicht übersetzt.

Danke!