Taupunktgesteuerte Kellerlüftung und Temperaturabhängig

Begonnen von Ruggy, 20 Dezember 2020, 23:14:33

Vorheriges Thema - Nächstes Thema

gvzdus

Ich bin ja schon nicht auf die Klammer um die 2 Kommandos gekommen...
Ich habe gerade mal getestet: Grundsätzlich funktioniert bei mir "on-for-timer" mit Zigbee: Wird sauber nach X Sekunden abgeschaltet.

Ich selber wäre in Deiner Situation genervt und würde den billigen Weg wählen: In Condition 1 & 2 reinnehmen, dass die aktuelle Minute < 20 bzw. < 30 sein muss. Dann läuft der Lüfter immer von xx:00 bis xx:20 bzw. 30. Damit sollte dann auch repeatCmd überflüssig sein. Außerdem würde ich noch eine Mindesttemperatur für den Keller definieren, um Eiszapfenbildung zu vermeiden.

Ruggy

#31
Habe gestern abend noch etwas herum probiert und die Zeiten kurz (nur ein paar Minuten eingestellt). Da hat es dann funktoniert.
Und dann wieder die gewünschten Werte eingetragen. Sieht so aus, als wie wenn die Schaltzeiten funktionieren würde.

Aber anscheinend wird es nicht richtig im Plot dargestellt.

Heute habe ich noch auf Deinen Rat hin die Temperaturen mit in das DOIF geschrieben damit ich im Keller keine Schlittschuhe benötige.

Hat aber noch nicht eingeschalten, obwohl es im Keller über acht Grad hat?
Evlt. fehlt wieder irgendwo eine Klammer oder eine Eckige Klammer oder ein Abstand?
Ganz schön kompliziert mit den DOIF.  :-[

So sieht jetzt das DOIF aus.

([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10) and (KEL_LUFTFEUCHTIGKEIT:temperature>8 and KEL_LUFTFEUCHTIGKEIT:temperature<12)) (set HUEDevice9 on-for-timer 1800) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10) and (KEL_LUFTFEUCHTIGKEIT:temperature>8 and KEL_LUFTFEUCHTIGKEIT:temperature<12)) (set HUEDevice9 on-for-timer 900) DOELSE (set HUEDevice9 off)

Wenn ich jetzt die Einschaltdauer von der Außentemperatur abhängig machen möchte, müsste ich wahrscheinlich im DOIF noch weitere DOELSEIF machen (von Temperatur bis Temperatur die Lüftungszeit usw.)?


Im TAUPUNKT_LUEFTUNG_KG wird auch ein Fehler angezeigt:

condition c01: syntax error, line 1, near "KEL_LUFTFEUCHTIGKEIT:"


Internals:
   CFGFN     
   DEF        ([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10) and (KEL_LUFTFEUCHTIGKEIT:temperature>8 and KEL_LUFTFEUCHTIGKEIT:temperature<12)) (set HUEDevice9 on-for-timer 1800) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10) and (KEL_LUFTFEUCHTIGKEIT:temperature>8 and KEL_LUFTFEUCHTIGKEIT:temperature<12)) (set HUEDevice9 on-for-timer 900) DOELSE (set HUEDevice9 off)
   FUUID      5fe1bee7-f33f-f59f-1a14-e04ad4bc48189b35
   MODEL      FHEM
   NAME       TAUPUNKT_LUEFTUNG_KG
   NOTIFYDEV  deltadewpoint,global
   NR         1436
   NTFY_ORDER 50-TAUPUNKT_LUEFTUNG_KG
   STATE      initialized
   TYPE       DOIF
   VERSION    22428 2020-07-18 20:32:08
   Helper:
     DBLOG:
       error:
         DbLog:
           TIME       1608634305.27091
           VALUE      set KELLER_LUEFTER_ALLE:off
       state:
         DbLog:
           TIME       1609061931.3437
           VALUE      initialized
   READINGS:
     2020-12-27 12:33:45   Device          deltadewpoint
     2020-12-27 10:38:51   cmd             0
     2020-12-27 12:33:45   e_deltadewpoint_state 12.9
     2020-12-27 12:33:45   error           condition c01: syntax error, line 1, near "KEL_LUFTFEUCHTIGKEIT:"

     2020-12-27 10:38:51   mode            enabled
     2020-12-27 10:38:51   state           initialized
     2020-12-27 10:38:51   timer_01_c01    28.12.2020 07:00:00
     2020-12-27 10:38:51   timer_02_c01    27.12.2020 23:00:00
     2020-12-27 10:38:51   timer_03_c02    28.12.2020 07:00:00
     2020-12-27 10:38:51   timer_04_c02    27.12.2020 23:00:00
   Regex:
     accu:
     cond:
       deltadewpoint:
         0:
           state      ^deltadewpoint$:^state:
         1:
           state      ^deltadewpoint$:^state:
   attr:
     cmdState:
     repeatcmd:
       3600
       9000
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'deltadewpoint','state')>2 and ::DOIF_time($hash,0,1,$wday,$hms) and ($month>4 and $month<10) and (KEL_LUFTFEUCHTIGKEIT:temperature>8 and KEL_LUFTFEUCHTIGKEIT:temperature<12)
     1          ::ReadingValDoIf($hash,'deltadewpoint','state')>2 and ::DOIF_time($hash,2,3,$wday,$hms) and ($month<=4 or $month>=10) and (KEL_LUFTFEUCHTIGKEIT:temperature>8 and KEL_LUFTFEUCHTIGKEIT:temperature<12)
   days:
   do:
     0:
       0          set HUEDevice9 on-for-timer 1800
     1:
       0          set HUEDevice9 on-for-timer 900
     2:
       0          set HUEDevice9 off
   helper:
     DEVFILTER  ^global$|^deltadewpoint$
     NOTIFYDEV  global|deltadewpoint
     event      12.9
     globalinit 1
     last_timer 4
     sleeptimer -1
     triggerDev deltadewpoint
     triggerEvents:
       12.9
     triggerEventsState:
       state: 12.9
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   localtime:
     0          1609135200
     1          1609106400
     2          1609135200
     3          1609106400
   readings:
     all         deltadewpoint:state
   realtime:
     0          07:00:00
     1          23:00:00
     2          07:00:00
     3          23:00:00
   time:
     0          07:00:00
     1          23:00:00
     2          07:00:00
     3          23:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1
     1           2  3
   trigger:
   triggertime:
     1609106400:
       localtime  1609106400
       hash:
     1609135200:
       localtime  1609135200
       hash:
   uiState:
   uiTable:
Attributes:
   repeatcmd  3600:9000
   room       Kellerlüftung

Ruggy

Denke ich habe den Fehler gefunden.
Habe das mit der Temperatur in eckige Klammern gesetzt so wie das mit dem deltadewpoint.
Jetzt läuft der Lüfter.

   
([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10) and ([KEL_LUFTFEUCHTIGKEIT:temperature]>8 and [KEL_LUFTFEUCHTIGKEIT:temperature]<12)) (set HUEDevice9 on-for-timer 1800) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10) and ([KEL_LUFTFEUCHTIGKEIT:temperature]>8 and [KEL_LUFTFEUCHTIGKEIT:temperature]<12)) (set HUEDevice9 on-for-timer 900) DOELSE (set HUEDevice9 off)

Ruggy

#33
Möchte kurz den Zwischenstand bzw. die Werte der Entwicklung der absoluten Luftfeuchtigkeit zeigen (siehe Anhang).

So wie es aussieht, wurde es durch die Lüftersteuerung etwas trockener im Keller.

Jetzt habe ich aber folgende Problematik:

Man sieht, dass die Luftfeuchtigkeit ab Mitte Februar wieder gestiegen ist. Dies hängt damit zusammen, dass unter einer Kellertemperatur von 7 Grad (habe ich zwischendurch auf 8 geändert und auch so gelassen) der Lüfter nicht mehr einschalten soll, damit der Keller nicht zu viel auskühlt. Mitte Februar war dieser Wert erreicht (durch die Änderung auf 8 Grad immer noch).
Jetzt habe ich das "Problem" dass der Lüfter nur ab und zu mal wieder einschaltet (wegen den <8 Grad; was er ja soll), weil die Kellertemperatur zu kalt geworden und immer noch unter 8 Grad ist. Der Keller wärmt sich jetzt nur ganz langsam durch die Erdtemperatur auf.

Welches "and" könnte ich jetzt noch in das DOIF einbauen, damit der Lüfter einschaltet, obwohl es im Keller unter den jetzt eingestellten 8 Grad hat aber außen wärmer wäre. Dadurch würde sich der Keller durch die wärmere Außenluft  (durch die andere Bedingung immer noch trockenere Außenluft) wieder etwas erwärmen und außerdem weiter trocknen.

Folgendes würde ja nicht klappen, da die Voraussetztung ja immer wäre, dass es außen wärmer sein soll als innen
and ([AUS_LUFTFEUCHTIGKEIT:temperature]>[KEL_LUFTFEUCHTIGKEIT:temperature])

Hier das List vom DOIF mit dem DEF:
Internals:
   DEF        ([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10) and ([KEL_LUFTFEUCHTIGKEIT:temperature]>8 and [KEL_LUFTFEUCHTIGKEIT:temperature]<12)) (set HUEDevice9 on-for-timer 1800) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10) and ([KEL_LUFTFEUCHTIGKEIT:temperature]>8 and [KEL_LUFTFEUCHTIGKEIT:temperature]<12)) (set HUEDevice9 on-for-timer 600) DOELSE (set HUEDevice9 off)
   FUUID      5fe1bee7-f33f-f59f-1a14-e04ad4bc48189b35
   MODEL      FHEM
   NAME       TAUPUNKT_LUEFTUNG_KG
   NOTIFYDEV  KEL_LUFTFEUCHTIGKEIT,deltadewpoint,global
   NR         103
   NTFY_ORDER 50-TAUPUNKT_LUEFTUNG_KG
   STATE      cmd_3
   TYPE       DOIF
   VERSION    22428 2020-07-18 20:32:08
   Helper:
     DBLOG:
       state:
         DbLog:
           TIME       1615110968.23403
           VALUE      cmd_3
   READINGS:
     2021-03-07 11:10:09   Device          deltadewpoint
     2021-03-07 10:56:08   cmd             3
     2021-03-07 10:56:08   cmd_event       KEL_LUFTFEUCHTIGKEIT
     2021-03-07 10:56:08   cmd_nr          3
     2021-03-07 10:56:08   e_KEL_LUFTFEUCHTIGKEIT_temperature 7.06
     2021-03-07 11:10:09   e_deltadewpoint_state 14.6
     2021-03-07 10:55:04   mode            enabled
     2021-03-07 10:56:08   state           cmd_3
     2021-03-07 10:55:04   timer_01_c01    08.03.2021 07:00:00
     2021-03-07 10:55:04   timer_02_c01    07.03.2021 23:00:00
     2021-03-07 10:55:04   timer_03_c02    08.03.2021 07:00:00
     2021-03-07 10:55:04   timer_04_c02    07.03.2021 23:00:00
   Regex:
     accu:
     cond:
       KEL_LUFTFEUCHTIGKEIT:
         0:
           temperature ^KEL_LUFTFEUCHTIGKEIT$:^temperature:
         1:
           temperature ^KEL_LUFTFEUCHTIGKEIT$:^temperature:
       deltadewpoint:
         0:
           state      ^deltadewpoint$:^state:
         1:
           state      ^deltadewpoint$:^state:
   attr:
     cmdState:
     repeatcmd:
       3600
       5400
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'deltadewpoint','state')>2 and ::DOIF_time($hash,0,1,$wday,$hms) and ($month>4 and $month<10) and (::ReadingValDoIf($hash,'KEL_LUFTFEUCHTIGKEIT','temperature')>8 and ::ReadingValDoIf($hash,'KEL_LUFTFEUCHTIGKEIT','temperature')<12)
     1          ::ReadingValDoIf($hash,'deltadewpoint','state')>2 and ::DOIF_time($hash,2,3,$wday,$hms) and ($month<=4 or $month>=10) and (::ReadingValDoIf($hash,'KEL_LUFTFEUCHTIGKEIT','temperature')>8 and ::ReadingValDoIf($hash,'KEL_LUFTFEUCHTIGKEIT','temperature')<12)
   days:
   do:
     0:
       0          set HUEDevice9 on-for-timer 1800
     1:
       0          set HUEDevice9 on-for-timer 600
     2:
       0          set HUEDevice9 off
   helper:
     DEVFILTER  ^global$|^deltadewpoint$|^KEL_LUFTFEUCHTIGKEIT$
     NOTIFYDEV  global|deltadewpoint|KEL_LUFTFEUCHTIGKEIT
     event      14.6
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   deltadewpoint
     timerevent 14.6
     triggerDev deltadewpoint
     timerevents:
       14.6
     timereventsState:
       state: 14.6
     triggerEvents:
       14.6
     triggerEventsState:
       state: 14.6
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   localtime:
     0          1615183200
     1          1615154400
     2          1615183200
     3          1615154400
   readings:
     all         deltadewpoint:state KEL_LUFTFEUCHTIGKEIT:temperature
   realtime:
     0          07:00:00
     1          23:00:00
     2          07:00:00
     3          23:00:00
   time:
     0          07:00:00
     1          23:00:00
     2          07:00:00
     3          23:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1
     1           2  3
   trigger:
   triggertime:
     1615154400:
       localtime  1615154400
       hash:
     1615183200:
       localtime  1615183200
       hash:
   uiState:
   uiTable:
Attributes:
   repeatcmd  3600:5400
   room       Kellerlüftung


Danke
Vielen Grüße

Wardancer

Hi,

Ohne mir jetzt deine ganzen Bedingungen im Detail angeschaut zu haben, währe es vermutlich am einfachsten parallel zu den jetzigen Bedingungen per or eine Variante für, Außentemperatur ist höher als Keller und Luftfeuchtigkeit ist kleiner draußen als drinnen zu basteln...

Ruggy

Hallo
und danke für die Antwort.

So ähnlich habe ich es gerade laufen.
Habe hierzu einen anderen Thread im Anfängerbereich gemacht, weil ich mir dachte, dass es kein spezielles Thema bzgl. Raumklima ist sonder eher ein DOIF Problem.

https://forum.fhem.de/index.php/topic,119456.15.html

Dort wurde mir bereits sehr geholfen.
Die Lüftersteuerung ist aber grundsätzlich ausbaufähig.

Wäre schön, wenn Du Dir dies mal anschauen könntest. Evlt. fallen dir hierzu Tips ein.
Ich weiß aber nicht, wo es besser wäre hier im Forum weiter zu schreiben, damit es nicht zu viel hin und her gibt.

Grüße
Ruggy