Lüftersteuerung in der Abstellkammer

Begonnen von Hirvi, 11 Juni 2013, 20:49:43

Vorheriges Thema - Nächstes Thema

Hirvi

Hallo aus Kassel,

Seit September 2012 läuft auch auf meiner FB ein FHEM und sorgt dafür das hier im Haus die Rollläden zur passenden Zeit Auf und Zu gefahren werden. Das und noch einiges mehr habe ich mit viel lesen hier und im Wiki auch gut hinbekommen. Jetzt habe ich ein Problem bei dem ich doch nochmal Konkrete Hilfe benötige.

In der Abstellkammer soll ein Lüfter bei erreichen einer Bestimmten Luftfeuchtigkeit eingeschaltet werden und bei unterschreiten dieser wieder ausgeschaltet werden. Das klappt auch nur habe ich in den Log-Dateien gesehen das der "On" bzw "Off"-Befehl ständig wiederholt wird.

Hier mal der Code aus meiner fhem.cfg

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 74) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 74) { fhem ("set KAMM_Lueftung off")}}

Meine Idee war jetzt in einer Variable zuspeichern ob der Befehl schon gesendet wurde oder nicht --- ich Kriegs aber nicht hin.

Das hier habe ich mir aus den Foren Beiträgen zusammengebastelt. Eine Fehlermeldung giebt es nicht, aber geschaltet wird jetzt auch nicht mehr.

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 74 && Value("KAMM_Lueftung") eq "off") { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 74 && Value("KAMM_Lueftung") eq "on") { fhem ("set KAMM_Lueftung off")}}

Hat jemand eine Idee oder einen Tipp für mich.

Vielen Dank
     Udo
Raspberry PI Modell B, CUL, FHT, CUL_WS, HMLAN, INSTAR Cam's

Puschel74

Hallo,

ich würd mal so tippen:


define Lueftung_Kammer notify S300TH_Kammer { \
my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
if ($hum_kammer > 74) { fhem ("set KAMM_Lueftung on") if (Value("KAMM_Lueftung") ne "on")}\
if ($hum_kammer < 74) { fhem ("set KAMM_Lueftung off") if (Value("KAMM_Lueftung") ne "off")}}


Ungetest aber einen Versuch ist es Wert.

Grüße

P.S.: Wenn du öfter/mehr Hilfe benötigst/erwartest leg dir doch bitte eine Signatur mit deiner Hardware zu ;-)
Es erübrigen sich dann einige Nachfragen.
Danke

Edith:
Grad gesehen - dein Code müsste auch klappen.
Du hast evtl. nur einen "Klammerfehler"

define Lueftung_Kammer notify S300TH_Kammer { \
my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
if ($hum_kammer > 74) && (Value("KAMM_Lueftung") eq "off")) { fhem ("set KAMM_Lueftung on")}\
if ($hum_kammer < 74) && (Value("KAMM_Lueftung") eq "on")) { fhem ("set KAMM_Lueftung off")}}


Edith2: Sollte es Fehlermeldungen geben wären die evtl. hilfreich ;-) (Das evtl. war ironisch, Fehlermeldung zum Code sind IMMER hilfreich)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

ein möglicher weg der gegen versehentliches dauer an schützt ist mit on-for-timer zu arbeiten wenn dein aktor das direkt unterstützt (fs20,homematic). d.h. z.b. alle viertel oder halbe stunde ein on-for-timer 1800 zu senden wenn die luftfeuchtigkeit über deinem grenzwert liegt. wenn sie darunter liegt musst du nichts mehr machen.

vielleicht für eine lüftungssteuerung nicht unbedingt nötig aber bei z.b. einer bewässerungssteuerung unabdingbar.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Hirvi

Hallo Puschel74,

habe deine erste Idee probiert - Funktioniert auch soweit. Sendet aber auch ständig Befehlswiederholungen.

Die Idee mit dem Klammerfehler habe ich auch ausprobiert.

Geschaltet wird nix - dafür folgender Logeintrag.

2013.06.12 05:51:56 3: Lueftung_Kammer return value: syntax error at (eval 342) line 1, near ")) "
Global symbol "$hum_kammer" requires explicit package name at (eval 342) line 1.
syntax error at (eval 342) line 1, near ")) "

Ich sehe auch das ich mehr Klammern schließe als öffne. Aber welches ")" ist jetzt zuviel.

Bin Verwirrt.

Udo - jetzt auch mit Signatur :-)
Raspberry PI Modell B, CUL, FHT, CUL_WS, HMLAN, INSTAR Cam's

Puschel74

Hallo,

dann post mal deinen Code nochmal.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Hirvi

Hallo,

so sieht das jetzt bei mir aus -

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if ($hum_kammer > 74) && Value("KAMM_Lueftung") eq "off")) { fhem ("set KAMM_Lueftung on")}\
  if ($hum_kammer < 74) && Value("KAMM_Lueftung") eq "on")) { fhem ("set KAMM_Lueftung off")}}


die Klammern vor dem "eq" weglassen habe ich gerade erfolglos probiert.

Udo
Raspberry PI Modell B, CUL, FHT, CUL_WS, HMLAN, INSTAR Cam's

justme1968

das ')' hinter den beiden 74 ist zu viel bzw. ein '(' nach jedem if zu wenig.

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if( ($hum_kammer > 74) && Value("KAMM_Lueftung") eq "off")) { fhem ("set KAMM_Lueftung on")}\
  if( ($hum_kammer < 74) && Value("KAMM_Lueftung") eq "on")) { fhem ("set KAMM_Lueftung off")}}


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

Tipp: Notepad++ zeigt dir an welche Klammern zusammen gehören ;-)

Versuch mal das:

define Lueftung_Kammer notify S300TH_Kammer { \
  my $hum_kammer = (ReadingsVal("S300TH_Kammer","humidity",40));;\
  if (($hum_kammer > 74) && (Value("KAMM_Lueftung") eq "off")) { fhem ("set KAMM_Lueftung on")}\
  if (($hum_kammer < 74) && (Value("KAMM_Lueftung") eq "on")) { fhem ("set KAMM_Lueftung off")}}


Grüße

P.S.: Ich weiß es ist sicher die eine oder andere Klammer zu viel aber so wie in Mathe --- ich setz lieber eine Klammer zuviel als zuwenig ;-)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

justme1968

du muss ich auch mein posting fertig editieren lassen. sonst bleiben die fehler doch drin ... :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Zitat von: justme1968 schrieb am Mi, 12 Juni 2013 16:59du muss ich auch mein posting fertig editieren lassen. sonst bleiben die fehler doch drin ... :)

Du hattest 2 Sekunden Zeit ;-)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Ralph

Was passiert eigentlich, wenn der Wert genau = 74 ist ?
:-)

Du müsstest die sogenannte Hysterese irgendwie ausblenden können
oder die Schwellen weiter auseinanderlegen,
z. B. < 60 , > 90 oder ähnlich.
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

justme1968

auch das kann man mit dem on-for-timer elegant erschlagen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Puschel74

Hallo,

ZitatWas passiert eigentlich, wenn der Wert genau = 74 ist ?

Das kommt drauf an von wo wie uns an die 74 annähern ;-)

Von "oben runter" wird der Lüfter noch laufen und umgekehrt ist er noch aus.

Aber das

Zitatoder die Schwellen weiter auseinanderlegen,

ist ein guter Einwand wobei ich mir aber fast sicher bin das die Luftfeuchte nie um 74 pendeln wird und der Lüfter dann ständig ein und aus geschalten werden würde.

Es sei den der Raum ist relativ klein und der Lüfter bringt die Feuchte schnell genug weg.
Diese müsste dann aber genau so schnell wieder irgendwo her kommen.

Ich würde aber auch vorschlagen eine Hystere ein zu bauen (<70 und >75 oder so).
Kommt halt drauf an welche Feuchte in dem Raum vorherrscht und wie weit der Lüfter diese drücken kann.
Da muss aber Udo damit "spielen".

Grüße

Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Hirvi

... egal was ich mit den Klammern auch Probiere - FHEM bleibt Stumm wie ein Fisch.
Heisst keinerlei Befehlswiederholungen und auch keine Fehlermeldungen oder LOG_Einträge.

Mit meinen Perl Kentnissen stehe ich noch ziemlich am Anfang, Auch mein "PERL für DUMMIES" hilft mir nicht weiter. Das letzte mal ernsthaft Programmiert habe ich als der Commodore C64 noch der letzte Schrei war. Ihr seht ich bin auch schon etwas älter ;-)

Brauche ich evtl. einen ganz anderen Ansatz?

So etwas wie eine Schleif die nur dann durchlaufen wird wenn der grezwert für die Luftfeuchtigkeit über oder unterschritten wird. Ich dachte ja meine konstruktion macht genau das - aber evtl. habe ich da ja irgendwo einen Denkfehler.

Udo
Raspberry PI Modell B, CUL, FHT, CUL_WS, HMLAN, INSTAR Cam's

Puschel74

Hallo,

post nochmal deinen Code bitte.

Grüße

Edith:
Wobei - was soll FHEM den machen?
Wenn der Lüfter aus ist und nicht eingeschaltet werden soll bekommst du auch keinen Logeintrag.
Wenn es keine Fehlermeldungen gibt scheint der Code ja zu stimmen und genau das zu machen was du wolltest.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.