Hauptmenü

dewpoint fan differenz

Begonnen von silverslim, 06 Juli 2013, 12:42:41

Vorheriges Thema - Nächstes Thema

silverslim

Hallo liebe Gemeinde,

nach mehreren Stunden suchen und probieren bin grad am verzweifeln....

Ich möchte eine Kellerlüftung zum trocknen installieren. Mit Modul dewpoint fan funktioniert das ganze auch. Aber mir schaltet der Lüfter zu oft. Deshalb möchte ich gern eine mindest Taupunktdifferenz festlegen. Auch um die Lüftung effektiver machen. Leider ist es mir bisher nicht gelungen aus den Beschreibungen die Vorgehensweise zu kapieren. Wie mache ich das ??
Hier meine fhem.cfg :

define Luefter FS20 1b39 01
attr Luefter fp_Grundriss 200,1200,2
attr Luefter room Keller

define CUL_WS_1 CUL_WS 1 -0.1 -6
attr CUL_WS_1 fp_Grundriss 150,1150,2
attr CUL_WS_1 room CUL_WS
define FileLog_CUL_WS_1 FileLog ./log/CUL_WS_1-%Y.log CUL_WS_1:T:.*
attr FileLog_CUL_WS_1 logtype temp4hum6:Temp/Hum,text
attr FileLog_CUL_WS_1 room CUL_WS
define weblink_CUL_WS_1 weblink fileplot FileLog_CUL_WS_1:temp4hum6:CURRENT
attr weblink_CUL_WS_1 label "CUL_WS_1 Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_CUL_WS_1 room Plots

define CUL_WS_2 CUL_WS 2 -0.3
attr CUL_WS_2 room CUL_WS
define FileLog_CUL_WS_2 FileLog ./log/CUL_WS_2-%Y.log CUL_WS_2:T:.*
attr FileLog_CUL_WS_2 logtype temp4hum6:Temp/Hum,text
attr FileLog_CUL_WS_2 room CUL_WS
define weblink_CUL_WS_2 weblink fileplot FileLog_CUL_WS_2:temp4hum6:CURRENT
attr weblink_CUL_WS_2 label "CUL_WS_2 Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_CUL_WS_2 room Plots

define dew_state dewpoint dewpoint .* T H D

define dew_fan1 dewpoint fan CUL_WS_2 CUL_WS_1 0
define dew_fan1_on notify CUL_WS_2.*fan:.*on set Luefter on
define dew_fan1_off notify CUL_WS_2.*fan:.*off set Luefter off

John

Ich hab das so gelöst
define DEW.FAN dewpoint fan DG.BAD.TF wt 0 1.5

DG.BAD.TF ist der TF Fühler innen
wt ist der TF Fühler aussen
0 ist Mindestaussentemperatur
1.5 ist der Offset zum Taupunkt aussen. Also fan=on, wenn TP-Aussen+Offset < TP-Innen

Einfach nochmal nachlesen in CommandRef

Diese Definition erzeugt in DG.BAD.TF das neue Reading
Zitatfan on 2013-07-07 12:32:06

Auf diese Reading lässt sich ein Notify definieren, das wiederum den Schaltaktor bedient.
Wenn man das Reading noch im Attribut event-on-change-reading aufnimmt, wird nur noch bei Änderung das notify
gefeuert.


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Bastelbude

Hallo zusammen,
bei mir funktioniert das nicht, der Lüfter wird nicht eingeschaltet, obwohl die Bedingungen erfüllt sind.
Hier der Ausschnitt aus der fhem.cfg:

##################################################
### Taupunkt / Dewpoint                         ##
### 2013-08-09                                  ##
##################################################

define dew_state dewpoint dewpoint .* T H D

define dew_fan dewpoint fan K_Flur_TH A_Carport_TH 10 3
define dew_fan_on notify K_Flur_TH.*fan:.*on set K_Luefter_SA on
define dew_fan_off notify K_Flur_TH.*fan:.*off set K_Luefter_SA off


Sensor im Keller: K_Flur_TH
Sensor Aussen: A_Carport_TH  
Grenztemperatur: 10°C
Differenz: 3°C

K_Luefter_SA ist der Schaltaktor.

Der Taupunkt wird errechnet, der Lüfter jedoch nicht eingeschaltet.
muss ich dew_fan noch durch ein notify aufrufen oder was läuft hier falsch?
Manuelles Ein-Ausschalten über set K_Luefter_SA on funktioniert.

Danke im Voraus.


John

Bei mir sehen die Readings und Events wie folgt aus:

(siehe Anhang / see attachement)


Man sieht dass in den Events das Reading fan NICHT vorkommt.

Daher habe ich meinen Trigger nicht auf fan, sondern humidity gesetzt:

define DG.BAD.TF HMS 4c81
define DEW.FAN dewpoint fan DG.BAD.TF wt 0 1.5
define DG.BAD.TF.event notify DG.BAD.TF:humidity.* {myBadFeuchte("%NAME");;}


Ich hoffe das hilft weiter

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Willi

Das Event wird nicht immer wieder neu, sondern nur beim ersten Mal generiert, wenn die Bedingung erfüllt ist. Also nur beim Wechsel von fan:on oder fan:off

Wie man bei den Readings sieht, wird bei Dir wird das fan:on um 22:16:24 gesetzt (das hast Du rot markiert) und damit auch das Event zu dieser Zeit.

ZitatMan sieht dass in den Events das Reading fan NICHT vorkommt.

Das liegt vermutlich daran, dass Du Dir die Events um 22:47:42 angesehen hast.
Man sieht, dass das Event um 22:47:42 nicht generiert wurde. Das sollte dewpoint ja auch nicht.

Schau mal, ob ein Event vorher generiert wird. Am besten schreibst Du alle Events ins Filelog des Devices und schaust Dir diese dort an.

Bei mir funktioniert werden die events richtig gesetzt (Auszug aus dem Filelog):

2013-08-09_18:55:01 WTGR800_T fan: off
2013-08-09_19:17:58 WTGR800_T fan: on


Ob das von Euch angegebene notify so richtig ist, kann ich nicht sagen. Mag sein, dass ich dieses beim Beispiel in commandref falsch beschrieben habe oder sich in der Zwischenzeit hier bei notify etwas geändert hat. Evtl. funktioniert das mit dem doppelten .* im notify so nicht.
Daher am besten ins Filelog schreiben (reagiert ja auch auf Events), dort nachsehen und mit notify experimentieren.

Das sollte jemand prüfen/testen, der sich mit notify besser als ich auskennt. Wenn Ihr es getestet habt, kann dann auch gerne das Beispiel in commandref bei dewpoint ändern.

-- Willi  
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

Bastelbude

Hallo zusammen,
Danke für die Unterstützung.
Meine oben aufgeführte Routine funktioniert. Mit Erfüllen der Bedingungen wird der Lüfter so wie es soll ein- und ausgeschaltet.
Funktioniert einwandfrei.
Viele Grüße

Willi

@Bastelbude: Was hast Du geändert, dass es jetzt läuft?

Du hattest geschrieben:

ZitatHallo zusammen,
bei mir funktioniert das nicht, der Lüfter wird nicht eingeschaltet, obwohl die Bedingungen erfüllt sind.
FHEM@Q600(debian) mit DS9490R (1Wire) | FHEM@Sheevaplug(debian) mit RFXCOM-Receiver(80002), CULv3 & USB-WDE1 | FHEM@odroid mit CULv2 & RFXtrx433

Bastelbude

Eine Änderung des von mir oben aufgeführten Codes war gar nicht nötig.
Mit dem nächsten (von dewpoint fan automatisch ausgelösten) Trigger wurde der Lüfter ordnungsgemäß eingeschaltet. Alles läuft wie am Schnürchen.
Viele Grüße

Bastelbude

Hallo,
hier ein Beispiel, in dem nur alle 20 Minuten überprüft wird, ob die Kriterien zum Ein- bzw. Ausschalten erfüllt sind:

Sensor im Keller: K_Flur_TH
Sensor Aussen: A_Carport_TH
K_Luefter_SA ist der Schaltaktor.



define dew_state dewpoint dewpoint .* T H D

define dew_fan dewpoint fan K_Flur_TH A_Carport_TH 10 2

define a_Venting at +*00:20:00 trigger K_Venting

define K_Venting notify K_Venting {\
my $K_Flur_TH_Fan=ReadingsVal("K_Flur_TH","fan",undef);;\
my $K_Luefter_SA_State=ReadingsVal("K_Luefter_SA","state",undef);;\
\
if (($K_Luefter_SA_State eq "off") && ($K_Flur_TH_Fan eq "on")) {\
 Log(3,"Luefter ein");;\
 fhem("set K_Luefter_SA on")}\
\
if (($K_Luefter_SA_State eq "on") && ($K_Flur_TH_Fan ne "on")) {\
 Log(3,"Luefter aus");;\
 fhem("set K_Luefter_SA off")}\
\
}


LaSto

Dann will ich meine Programm für den Badlüfter auch mal veröffentlichen.
Passt hier ja ganz gut hin.

Der Lüfter geht nur an, wenn der Unterschied der Taupunkte im Raum und draußen größer 3 ist und im Raum die Feuchtigkeitsschwelle von 65 überschritten wird.
Ist die Feuchtigkeit im Raum unter 60 oder der Taupunktunterschied kleiner 3 geht der Lüfter aus.

Das Programm läuft so bei mir schon über ein Jahr.
Entstanden ist es ursprünglich in der Google Group und ist von da eine modifizierte Kellerbelüftung.

Achso, ich schalte mit Absicht 3x ein und 3x aus, falls mal ein Signal verloren geht.

Vielleicht kann es ja jemand gebrauchen.


define bz_Temp CUL_WS 8
define aussen_Temp CUL_WS 4

define dew_state dewpoint dewpoint .* T H D
define dew_bz dewpoint fan bz_Temp aussen_Temp -20 3

define BadLuefter_N notify BadLuefter_N { \
\
   my @@akt_hum=split(" ",Value("bz_Temp"));;\
   my @@old_hum=split(" ",OldValue("bz_Temp"));;\
\
   if (($akt_hum[3] >= 65 and $old_hum[3] <= $akt_hum[3]) \
       and Value("bz_Luefter") eq "off"\
  and ReadingsVal("bz_Temp","fan","") eq "on"){\
      Log 1, $data{aufrufer_BadLuefter_N}.': bz_Luefter ein';;\
      fhem("set bz_Luefter on");;\
 fhem("define bz_Luefter_time1 at +00:00:20 set bz_Luefter on");;\
 fhem("define bz_Luefter_time2 at +00:00:40 set bz_Luefter on");;\
          fhem("define bz_Luefter_time3 at +00:01:00 set bz_Luefter on");;\
   } \
   elsif (($akt_hum[3] <= 60 and $old_hum[3] >= $akt_hum[3]) \
       and Value("bz_Luefter") eq "on"\
  or ReadingsVal("bz_Temp","fan","") eq "off"\
  and Value("bz_Luefter") eq "on"){\
      Log 1, $data{aufrufer_BadLuefter_N}.': bz_Luefter aus';;\
      fhem("set bz_Luefter off");;\
 fhem("define bz_Luefter_time4 at +00:00:20 set bz_Luefter off");;\
 fhem("define bz_Luefter_time5 at +00:00:40 set bz_Luefter off");;\
          fhem("define bz_Luefter_time6 at +00:01:00 set bz_Luefter off");;\
   } \
}

define BadLuefter_Trig_N notify bz_Temp.*T.* {\
  $data{aufrufer_BadLuefter_N} = "@" ;;\
  fhem("trigger BadLuefter_N");;\
}


Gruß
Lars
FS20, 3x S300TH, 1x CUL868, FritzBox 7390