Hallo,
ich hoffe mein langer Text schreckt nicht ab. Im unteren Teil habe ich geschrieben, was ich steuern möchte; oben die Hintergründe zu dem Vorhaben.
Habe durch die Suchfunktion nur etwas ältere Beiträge bis 2017 gefunden, welche sich mit dem Thema beschäftigt haben.
Leider sind meine FHEM Kenntnisse/Perl-Kenntnisse nicht besonders gut und ich konnte nur immer ein Stück weit folgen und bin dann ausgestiegen. Vor allem wenn mit DOIF "verschachtelt" wird.
Es wurde auch mit Threshold gearbeitet. Dies habe ich mir auch in der Commandref angesehen aber bzgl. meinen Vorhaben auch nicht weiter gekommen.
Gibt es zwischenzeitlich noch andere (einfachere Lösungen einer Taupunktgesteuerten Kellerlüftung, welche auch Temperaturabhängig verschieden steuern sollte.
Möchte kurz mein Vorhaben erklären:
Im Haus meiner Eltern befindet sich ein alter Gewölbekeller, welcher eigentlich immer feucht und kühl ist (Erdfeuchte/Erdtemperatur).
Die Kellertemperatur schwankt so zwischen 9-13 Grad (je nach Jahreszeit); die relative Luftfeuchtigkeit ist immer über 80 bis 90 %.
Jetzt gerade ist außen eine Temperatur von ca. -0,5 °C, einer relative Luftfeuchtigkeit von 97 % und eine absolute Luftfeuchtigkeit von ca. 4,5 g/m3. Im Keller ist eine Temperatur von ca. 9 °C einer relative Luftfeuchtigkeit von 93,5 % (es regnet also bald ;-) ) und einer absoluten Luftfeuchtigkeit von ca. 8,25 g/m3.
Ich möchte den Keller nicht Trocken bekommen (ist sowieso nicht möglich) aber etwas trockener.
In den Keller ist schon sehr lange eine Öffnung mit einen Rohr 15 cm Durchmesser. Über diese Öffnung "zirkulierte" mehr oder weniger das ganze Jahr die Luft.
Um den Keller etwas trockener zu bekommen habe ich jetzt ein zweites Rohr am anderen Ende vom Keller nach außen gelegt. In jedem Rohr ist Rohrlüfter, welche ich über FHEM und Smart+ Steckdosen ein- und ausschalte (jeder einzeln). Einer bläst die Luft herein, der andere hinaus.
Mit zwei Xiaomi Temperatur/Feuchtesensoren (einer im Keller; einer außen im Freien) lasse ich mir den "dewpoint" berechnen und in einer Grafik darstellen. Nach dieser entscheide ich dann, ob ich die Lüfter ein oder ausschalte. Da mache ich halt nur, wenn ich gerade zeit habe und dran denke.
Einige werden jetzt wahrscheinlich die Hände über den Kopf zusammen schlagen, aber sowei meine Kenntnisse hierzu :-\
Seit ich mich entschlossen habe, ein zweites Rohr in den Keller zu legen (ist schon ne Zeit lang her, weil es relativ aufwändig war), war das Ziel natürlich, dass alles automatisch geht. Deshalb bin ich eigentlich damals über professionelle Lüftungssteuerungen auf FHEM gestoßen und mir gedacht, dass ich damit ja genau das machen könnte.
Folgene Steuerung habe ich mir gedacht:
Die Lüfter sollen grundsätzlich nur dann einschalten, wenn der Taupunkt außen 2 °C kleiner ist als innen (also trockener).
Die Lüfter sollen Jahreszeitabhängig verschieden lange laufen um im Winter ein auskühlen oder aber auch im Sommer ein aufheizen des Kellers zu vermeiden. Hier weiß ich jedoch nicht wie ich Sommer und Winter in FHEM unterscheiden soll oder sollte es nur Temperaturabhängig geregelt werden (z.B. Kellertemperatur darf 9 °C nicht unterschreiten und 12,5°C nicht überschreiten; evlt. längere oder kürzere Lüftungsintervalle)
Im Sommer sollen die Lüfter dann 10 min laufen und dann 60 Pause machen, dann wieder 10 min laufen usw.
Im Winter sollen die Lüfter dann 10 min laufen und dann 120 min Pause machen, dann wieder 10 min laufen usw.
Wegen den "Lärm" sollen sie nur zwischen 8:00 und 22:00 Uhr laufen (wobei wahrscheinlich gerade im Sommer in den Nachstunden trockener wäre; evlt. wäre es hier eine Möglichkeit, dass dann nur z.B. alle 180 min die Lüfter eingeschalten werden?).
Kann man diese vielen Abfragen und Anweisungen alles in die Steuerung unterbringen?
Kann/muss ich das mit Threshold lösen oder mit vielen vielen DOIF?
Oder ist mein geplantes "Lüftungsverhalten" grundsätlich nicht richtig/zielführend?
Vielen Dank
Viele Grüße
Ruggy
Zuerst: das Modul Astro liefert die Jahreszeit, falls eine Steuerung nach Datum nicht reichen würde.
Das ganze sollte mit nur einem DOIF machbar sein. Um dieses DOIF zu simplifizieren, würde ich aber doch THRESHOLD dazu benutzen, um zu entscheiden, ob auf Grund Taupunkt es theoretisch belüftet werden muss oder nicht.
Dann im DOIF alle andere Bedingungen:
DOIF ([threshold hat gesagt, es muss belüftet werden] and [08:00-22:00] and $month > 4 and $month < 10) (set Lüfter on-for-timer 10)
DOELSEIF (das gleiche ausser bis auf: and ($month<=4 or $month>=10)) (set Lüfter on-for-timer 10) DOELSE (set Lüfter aus)
Mit attribut repeatcmd 70:130
Genau Deine Überlegung, Ruggy, habe ich mir auch gemacht. Auch bei mir ist der Keller nicht trocken zu kriegen - und alles leidet, wenn die Feuchtigkeit kondensiert.
Es wäre nett, wenn Du über das Ergebnis mal berichtest - gerne mit Graphen.
Falls Du den Eindruck hast, dass FHEM Dir feindlich ggü. steht, können wir gerne mal eine Screensharing-Session per Skype machen.
Vielen Dank schon mal für die Tipps.
Habe es jetzt schon mal geschafft, dass ich beide Lüfter gleichzeitig einschalten kann (schon mal ein Anfang) ;)
define KELLER_LUEFTER_ALLE dummy
attr KELLER_LUEFTER_ALLE eventMap on off
attr KELLER_LUEFTER_ALLE room Keller
define Luefter_On notify KELLER_LUEFTER_ALLE:on set set HUEDevice17,HUEDevice15 on
define Luefter_Off notify KELLER_LUEFTER_ALLE:off set set HUEDevice17,HUEDevice15 off
Werde mir jetzt dann mal an die Umsetzung nach der vorgeschlagenen Steuerung von @amenomade machen. Hier bin ich mir aber nicht ganz sicher, ob ich dass schaffe. Werde es aber erst mal versuchen.
Evlt. müsste ich aber auf das "Skype-Angebot" von @gvzdus zurück kommen. Danke schon mal für das Angebot.
Aber evlt. schaffen wir es auch hier.
@gvzdus
Gerne stelle ich Dir alle Infos zur Verfügung, welche ich habe.
Gerne auch Graphen. Hier kann ich aber auch immer nur einen Tag mir anzeigen lassen. Evlt. gibt es eine Möglichkeit, einen Graph über einen längeren Zeitraum zur Verfügung zu stellen?
Hier kurz mal welche "Hardware" ich verwendet habe:
Als Rohre habe ich die orangen KG-Rohre DN-150 verwendet.
Als Rohrventilator einfach beim bekannten Versandriesen mit "A" Rohrventilator 150mm eingeben. Die Marke beginnt mit S. (weiß nicht ob ich hier links oder Herstellernamen einstellen darf). Er ist relativ leise, aber es gibt wahrscheinlich leisere.
Weil die Rohre ziemlich lange sind (ca. 4 m) dröhnt es etwas (denke es liegt an der Länge). Die Rohre habe ich alle paar Meter mit Rohrschellen befestigt und mit so einen "Dämmschlauch" gedämmt. Ist dadurch etwas leiser geworden.
Habe dann noch versucht die Rohrventilatoren mit "Segelstutzen" vom Rohr zu entkoppeln (Suchbegriff "Segeltuchstutzen DN 150 Balg Entkopplung" beim anderen Versandriesen mit "E" eingeben). Hat auch ein bischen etwas gebracht, aber nicht all zu viel (hätte mir hier mehr erhofft). Hierfür habe ich mir mit den 3D-Drucker Adapter zwischen den KG-Rohren und den Segeltuchstutzen gedruckt. Bei Bedarf kann ich Dir die Dateien zur Verfügung stellen (fallst Du keine Möglichkeit zum Drucken/drucken lassen hast, würden wir denke ich auch eine Lösung finden.
Wow, 4 Meter bei 15 cm Durchmesser ist ja schon Einiges an Widerstand.
Dass das "dewpoint"-Modul Dir die Taupunktberechnung liefert, hast Du ja vermutlich schon festgestellt.
Ich verstehe nicht ganz, wieso Du Graphen nur tageweise siehst. Die billigste Methode ist doch, auf einen Filelogger ein SVG draufzusetzen. Und dieser Graph hat doch dann die "Knöpfe" zum Zoom-Out.
Ja, 4m ist schon ne Menge.
Ging aber leider nicht anders. Man merkt aber am Ausgang (nach den 4 Metern schon, dass sich etwas tut). Auch an den Feuchtigkeitswerten macht es sich bemerkbar. Aber die steigen halt auch bald wieder nach dem Ausschalten. Wobei auch mein sporadisches manuelle Lüften bisher nicht sinnvoll war. Jedoch habe ich auf jeden Fall eine Verbessung des Geruchs im Keller festgestellt.
Zeichne die Werte mit DbLog auf und lasse sie mir so anzeigen u.a. den dewpoint. Ich kann immer einen Tag sehen und kann mit den Pfeiltasten die Tage zurück und vor blättern. Am jeweiligen Tag kann ich dann hineinzoomen und auch heraus.
Aber mehrere Tage gleichzeitig bzw. eine Woche oder Monat kann ich mir nicht anzeigen lassen.
In der commandref ist folgendes Beispiel:
define dewpoint dewpoint indoor
define dewpoint dewpoint outdoor
define TH_room THRESHOLD indoor:dewpoint:0:outdoor:dewpoint AND TH_hum:state:on ventilator|set @ on|set @ off|2
Benötige ich die ersten beiden Zeilen mit dewpoint, da ich den berechneten dewpoint ja schon von meinen Thermometern habe. Oder würde hier nur die dritte Zeile reichen? So z.B.?
define Threshold_Keller THRESHOLD KEL_LUFTFEUCHTIGKEIT:dewpoint:0:AUS_LUFTFEUCHTIGKEIT:dewpoint ventilator|set @ on|set @ off|2
[/code]
Das mit der min. Luftfeuchtigkeit würde ich weglassen, weil ich diese wahrscheinlich nie unterschreiten werde. Wie ich meine Lüfter mit in die Formel bringe habe ich auch noch nicht geschafft.
Als "Ventilator" muss wahrscheinlich mein "KELLER_LUEFTER_ALLE" in die Formel? Aber was bedeutet dann "on|set @ off|2"?
Mit meinen FHEM-Kenntnissen (und weil ich Deine Situation nicht gut nachstellen kann) würde ich erst mal den Zwischenschritt über ein Delta im Taupunkt gehen:
define deltadewpoint dummy
define calcdelta notify (KEL|AUS)_LUFTFEUCHTIGKEIT:dewpoint.* { my $a=ReadingsVal("KEL_LUFTFEUCHTIGKEIT", "dewpoint", 0)-ReadingsVal("AUS_LUFTFEUCHTIGKEIT", "dewpoint", 0); fhem ("set deltadewpoint " . $a) }
... und dann mal gucken, ob in deltadewpoint sauber das Delta bei jedem Update eines der beiden Temperatursensoren reinläuft. (Falls mein Trockencode richtig ist). Hinweis: Wenn Du meine Defines in der WebGUI-"Kommandozeile" eingibst, musst Du das Semikolon vor fhem (" verdoppeln.
Ich würde deine Defines oben in der Zeile eingeben, wenn ich FHEM im Browser öffne; denke das meinst Du?
Meinst Du dann so mit den zwei ;;?
Wo kann ich den den Befehl noch eingeben?
define calcdelta notify (KEL|AUS)_LUFTFEUCHTIGKEIT:dewpoint.* { my $a=ReadingsVal("KEL_LUFTFEUCHTIGKEIT", "dewpoint", 0)-ReadingsVal("AUS_LUFTFEUCHTIGKEIT", "dewpoint", 0);; fhem ("set deltadewpoint " . $a) }
Was wird mit den Befehl dann gemacht? Wird dadurch der dewpoint der zwei Xiaomi "Thermometer" in eine datei geschrieben?
Ja, die Zeile oben.
2 Semikolons:
Ich gebe ein Notify mit Perl-Kommando (an den geschweiften Klammern erkennbar) i.d.R. erst ganz leer ein (also nur {} ), und editiere dann recht bequem, indem ich auf "DEF" bei "Internals" klicke. Dann hat man einen "schönen" Editor - und da musst Du nur 1 Semikolon eingeben.
Die Idee ist, dass Du Dir erst einmal ein dummy-Device erzeugst, dass die Differenz der Taupunkte innen / außen beinhaltet. Das kannst Du in die Datenbank wegloggen, die Updates kontrollieren, und dann darauf mit Threshold für die Ventilatorsteuerung arbeiten.
Ich finde, gerade am Anfang ist es bei FHEM hilfreich, mit Zwischenschritten zu arbeiten, um zu dem "Das habe ich schon geschafft, wie mache ich jetzt ...?" zu kommen.
Habe die Befehle so eingegeben.
Hier ein List vom deltadewpoint:
Internals:
CFGFN
FUUID 5fe0eb17-f33f-f59f-e80b-ec58da6542b958ca
NAME deltadewpoint
NR 1200
STATE 5.8
TYPE dummy
Helper:
DBLOG:
state:
DbLog:
TIME 1608576285.51868
VALUE 5.8
READINGS:
2020-12-21 19:44:45 state 5.8
Attributes:
room Kellerlüftung
Hier ein List von calcdelta:
Internals:
CFGFN
DEF (KEL|AUS)_LUFTFEUCHTIGKEIT:dewpoint.* { my $a=ReadingsVal("KEL_LUFTFEUCHTIGKEIT", "dewpoint", 0)-ReadingsVal("AUS_LUFTFEUCHTIGKEIT", "dewpoint", 0); fhem ("set deltadewpoint " . $a) }
FUUID 5fe0eb52-f33f-f59f-d120-dc8c0132d5471c97
NAME calcdelta
NR 1203
NTFY_ORDER 50-calcdelta
REGEXP (KEL|AUS)_LUFTFEUCHTIGKEIT:dewpoint.*
STATE 2020-12-21 19:44:45
TRIGGERTIME 1608576285.51564
TYPE notify
Helper:
DBLOG:
state:
DbLog:
TIME 1608575826.8177
VALUE active
READINGS:
2020-12-21 19:37:06 state active
Attributes:
room Kellerlüftung
Das wirkt doch erst mal gut: "State ist 5.8", das ist die Differenz im Taupunkt Keller - Außen.
Könnte das so funktionieren?
Wenn ich es richtig verstanden habe sollten die Lüfter in den
- Sommermonaten (Mai bis September) einschalten, wenn der Taupunkt von außen mindestens 2 ° weniger hat als im Keller und es zwischen 8:00 und 23:00 Uhr ist und zwar dann für 30 Minuten (?oder sollte ich hier nicht als Zeiteinheit 1.800 schreiben; Sekunden)?
- Wintermonaten (Oktober bis April einschalten, wenn Taupunkt außen mindestens 2 ° weniger hat als im Keller und zwischen 8:00 und 23:00 Uhr ist und dann für 20 Minuten?
define TAUPUNKT_LUEFTUNG_KG DOIF ([deltadewpoint:state >2] and [08:00-23:00] and $month > 4 and $month < 10) (set KELLER_LUEFTER_ALLE on-for-timer 30) DOELSEIF ([deltadewpoint:state >2] and [08:00-23:00] and ($month<=4 or $month>=10)) (set KELLER_LUEFTER_ALLE on-for-timer 20) DOELSE (set KELLER_LUEFTER_ALLE off)
Wie bekomme ich noch folgendes hinein, dass sich die ganze Regelung z.B. nach 70 Minuten im Sommer und 130 Minuten im Winter wiederholt?
Mit attribut repeatcmd 70:130
Wie sollte folgender Abschnitt aussehen?
In Klammern oder nicht in Klammern?
So
...$month > 4 and $month < 10)...
oder so
...($month > 4 and $month < 10))...
Also, ich würde mich jetzt erst mal freuen, wenn der olle Lüfter überhaupt dreht. Sommer/Winter-Umschaltung kannst ja auch machen, indem Du mit "at" repeatCmd jeweils im Sommer / Winter umschaltest.
Bei meinem Versuch des Testens mit dummy-Device klappt das hier:
([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10)) (set KELLER_LUEFTER_ALLE on) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set KELLER_LUEFTER_ALLE on2) DOELSE (set KELLER_LUEFTER_ALLE off)
Zeiten sind geändert, und statt "on-for-timer" setze ich meinen Dummy KELLER_LUEFTER_ALLE nur fest auf Werte.
Die wesentliche Abweichung zu Dir:
Statt
[deltadewpoint:state >2]
schreibe ich
[deltadewpoint:state]>2
Habe es jetz so mal versucht; bisher schalten sie nicht ein.
Habe den Taupunktwert zu Testzwecken auf 1 verringert, weil dieser momentan unter 2 (1.9) ist.
soll das on2 heißen oder ist die "2" zuviel?
([deltadewpoint:state]>1 and [07:00-23:00] and ($month>4 and $month<10)) (set KELLER_LUEFTER_ALLE on) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set KELLER_LUEFTER_ALLE on2) DOELSE (set KELLER_LUEFTER_ALLE off)
Das "on2" ist vom Testen, ob der 1. Teil der Regel, der 2. Teil der Regel, oder das große Else greift.
Für Deinen Fall natürlich nur "on" (oder "on-for-...")
Ich hoffe ich strapaziere die Nerven noch nicht zu sehr, aber irgendwie werden die Lüfter nicht eingeschalten.
Habe jetzt zu Versuchszwecken den Taupunktunterschied auf <2 umgestellt, weil es momentan außen feuchter ist als im Keller.
Die Lüfter habe ich direkt an gesprochen und nicht über das dummy.
Wenn ich oben im GUI
set HUEDevice17,HUEDevice15 on
oder
set HUEDevice17,HUEDevice15 off
eingebe, werden die Lüfter ein oder ausgeschaltet.
Mit dem DOIF funktioniert es nicht
([deltadewpoint:state]<2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice17,HUEDevice15 on) DOELSEIF ([deltadewpoint:state]<2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice17,HUEDevice15 on) DOELSE (set HUEDevice17,HUEDevice15 off)
Als "state" wird im TAUPUNKT_LUEFTUNG_KG "initialized" angezeigt. Hat vor meinen kürzlichen Änderungen (<2 und set HUEDevice...) als "state" "CMD_3" angezeigt gehabt.
Hier mal das List von TAUPUNKT_LUEFTUNG_KG wobei mir hier auffällt, das als Timer der 23. also morgen schon drinen steht. Würde es erst morgen funktonierten?
Internals:
CFGFN
DEF ([deltadewpoint:state]<1 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice17,HUEDevice15 on) DOELSEIF ([deltadewpoint:state]<1 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice17,HUEDevice15 on) DOELSE (set HUEDevice17,HUEDevice15 off)
FUUID 5fe1bee7-f33f-f59f-1a14-e04ad4bc48189b35
MODEL FHEM
NAME TAUPUNKT_LUEFTUNG_KG
NOTIFYDEV global,deltadewpoint
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 1608662859.89313
VALUE initialized
READINGS:
2020-12-22 19:47:39 cmd 0
2020-12-22 19:47:39 mode enabled
2020-12-22 19:47:39 state initialized
2020-12-22 19:47:39 timer_01_c01 23.12.2020 07:00:00
2020-12-22 19:47:39 timer_02_c01 22.12.2020 23:00:00
2020-12-22 19:47:39 timer_03_c02 23.12.2020 07:00:00
2020-12-22 19:47:39 timer_04_c02 22.12.2020 23:00:00
Regex:
accu:
cond:
deltadewpoint:
0:
state ^deltadewpoint$:^state:
1:
state ^deltadewpoint$:^state:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'deltadewpoint','state')<1 and ::DOIF_time($hash,0,1,$wday,$hms) and ($month>4 and $month<10)
1 ::ReadingValDoIf($hash,'deltadewpoint','state')<1 and ::DOIF_time($hash,2,3,$wday,$hms) and ($month<=4 or $month>=10)
days:
do:
0:
0 set HUEDevice17,HUEDevice15 on
1:
0 set HUEDevice17,HUEDevice15 on
2:
0 set HUEDevice17,HUEDevice15 off
helper:
DEVFILTER ^global$|^deltadewpoint$
NOTIFYDEV global|deltadewpoint
globalinit 1
last_timer 4
sleeptimer -1
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
localtime:
0 1608703200
1 1608674400
2 1608703200
3 1608674400
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
triggertime:
1608674400:
localtime 1608674400
hash:
1608703200:
localtime 1608703200
hash:
uiState:
uiTable:
Attributes:
room Kellerlüftung
List von deltadewpoint
Internals:
CFGFN
FUUID 5fe0eb17-f33f-f59f-e80b-ec58da6542b958ca
NAME deltadewpoint
NR 1200
STATE -0.699999999999999
TYPE dummy
Helper:
DBLOG:
state:
DbLog:
TIME 1608662805.19923
VALUE -0.699999999999999
READINGS:
2020-12-22 19:46:45 state -0.699999999999999
Attributes:
room Kellerlüftung
"list" vom DOIF wenn er im "falschen" Zustand ist, wäre auch relevant
List vom TAUPUNKT_LUEFTUNG_KG
Internals:
CFGFN
DEF ([deltadewpoint and [07 and ($month>4 and $month<10)) (set HUEDevice17,HUEDevice15 on) DOELSEIF ([deltadewpoint and [07 and ($month<=4 or $month>=10)) (set HUEDevice17,HUEDevice15 on) DOELSE (set HUEDevice17,HUEDevice15 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 cmd_2
TYPE DOIF
VERSION 22428 2020-07-18 20
Helper:
DBLOG:
error:
DbLog:
TIME 1608634305.27091
VALUE set KELLER_LUEFTER_ALLE
state:
DbLog:
TIME 1608666368.99455
VALUE cmd_2
READINGS:
2020-12-22 21 Device deltadewpoint
2020-12-22 20 cmd 2
2020-12-22 20 cmd_event deltadewpoint
2020-12-22 20 cmd_nr 2
2020-12-22 21 e_deltadewpoint_state -0.799999999999999
2020-12-22 20 error set HUEDevice17: Unknown argument , choose one of off on toggle statusRequest alert rename on-till intervals off-till off-till-overnight off-for-timer on-till-overnight on-for-timer blink attrTemplate HUEDevice15 on: Unknown command HUEDevice15, try help.
2020-12-22 20 mode enabled
2020-12-22 20 state cmd_2
2020-12-22 20 timer_01_c01 23.12.2020 07
2020-12-22 20 timer_02_c01 22.12.2020 23
2020-12-22 20 timer_03_c02 23.12.2020 07
2020-12-22 20 timer_04_c02 22.12.2020 23
Regex:
accu:
cond:
deltadewpoint:
0:
state ^deltadewpoint$
1:
state ^deltadewpoint$
attr:
cmdState:
wait:
waitdel:
condition:
0 href='/fhem?detail=deltadewpoint'>deltadewpoint','state')<2 and and ($month>4 and $month<10)
1 href='/fhem?detail=deltadewpoint'>deltadewpoint','state')<2 and and ($month<=4 or $month>=10)
days:
do:
0:
0 set HUEDevice17,HUEDevice15 on
1:
0 set HUEDevice17,HUEDevice15 on
2:
0 set HUEDevice17,HUEDevice15 off
helper:
DEVFILTER ^global$|^deltadewpoint$
NOTIFYDEV global|deltadewpoint
event -0.799999999999999
globalinit 1
last_timer 4
sleeptimer -1
timerdev deltadewpoint
timerevent -0.799999999999999
triggerDev deltadewpoint
timerevents:
-0.799999999999999
timereventsState:
state: -0.799999999999999
triggerEvents:
-0.799999999999999
triggerEventsState:
state: -0.799999999999999
internals:
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
localtime:
0 1608703200
1 1608674400
2 1608703200
3 1608674400
readings:
all deltadewpoint
realtime:
0 07
1 23
2 07
3 23
time:
0 07
1 23
2 07
3 23
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:
1608674400:
localtime 1608674400
hash:
1608703200:
localtime 1608703200
hash:
uiState:
uiTable:
Attributes:
room Kellerlüftung
Hier auch noch ein List vom HUEDevice17, weil im DOIF mit diesem Device ein Fehler angezeigt wird. Hier handelt es sich um eine Steckdose, welche einen Lüfter schaltet. Jedoch kann ich mit folgenden Befehl den Lüfter einschalten.
set HUEDevice17 on
Internals:
DEF 17 IODev=deCONZ
FUUID 5f8b4975-f33f-f59f-5566-cc02983421abafc4
FVERSION 31_HUEDevice.pm:0.218370/2020-05-02
ID 17
INTERVAL
IODev deCONZ
NAME HUEDevice17
NR 102
STATE off
TYPE HUEDevice
desired 0
manufacturername OSRAM
modelid Plug 01
name Keller_Luefter_hinten
swversion V1.04.90
type On/Off plug-in unit
uniqueid 7c:b0:3e:aa:00:b0:6b:98-03
Helper:
DBLOG:
onoff:
DbLog:
TIME 1608664588.81945
VALUE 0
state:
DbLog:
TIME 1608664588.81945
VALUE off
READINGS:
2020-12-15 15:52:40 alert none
2020-12-22 20:16:28 onoff 0
2020-12-22 20:16:28 pct 0
2020-12-22 20:16:29 reachable 1
2020-12-22 20:16:28 state off
helper:
alert none
battery -1
bri -1
colormode
ct -1
devtype
effect
hue -1
mode
on 0
pct 0
reachable 1
rgb
sat -1
update_timeout -1
xy
json:
etag 2b4e10f693cef80396430e8039a3278f
lastseen 2020-12-22T20:50:01.372
manufacturername OSRAM
modelid Plug 01
name Keller_Luefter_hinten
swversion V1.04.90
type On/Off plug-in unit
uniqueid 7c:b0:3e:aa:00:b0:6b:98-03
state:
alert none
Attributes:
IODev deCONZ
alias Keller_Luefter_hinten
color-icons 2
devStateIcon devStateIcon off:vent_ventilation_level_0 on:vent_ventilation_level_3@red
group HUEDevice
model Plug 01
room HUEDevice,Keller,Kellerlüftung
subType switch
webCmd toggle:on:off
Also, Dein DOIF "list" sieht ganz krank aus. Möglicherweise wegen des ">"-Zeichen, aber kontrolliere doch bitte noch mal die Anzeige in FHEM mit dem, was wir im Posting geschrieben haben.
Außerdem scheint "set HueDevice1,HueDevice2 on" nicht zu funktionieren. Siehe "error" im DOIF-Listing. Schalte doch erst mal nur ein Gerät.
Ich bin mit DOIF definitiv nicht glücklich - ich bin Programmierer, und zwar nicht in deklarativen Sprachen. Aber hangele Dich doch am besten Schritt für Schritt der Lösung näher.
Folgendes steht im DOIF Device TAUPUNKT_LUEFTUNG_KG unter "DEF"
([deltadewpoint:state]<2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice17,HUEDevice15 on) DOELSEIF ([deltadewpoint:state]<2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice17,HUEDevice15 on) DOELSE (set HUEDevice17,HUEDevice15 off)
Warum jetzt im List davon folgendes steht, weiß ich nicht. Aber kann schon sein, dass das > stört?
([deltadewpoint and [07 and ($month>4 and $month<10)) (set HUEDevice17,HUEDevice15 on) DOELSEIF ([deltadewpoint and [07 and ($month<=4 or $month>=10)) (set HUEDevice17,HUEDevice15 on) DOELSE (set HUEDevice17,HUEDevice15 off)
Wenn ich aber folgenden Befehl, direkt in FHEM in der oberen Zeile eingebe, werden beide Lüfter eingeschalten
set HUEDevice17,HUEDevice15 on
:-[
Naja, aber das "error" in Deinem Posting:
error set HUEDevice17: Unknown argument , choose one of off on toggle statusRequest alert rename on-till intervals off-till off-till-overnight off-for-timer on-till-overnight on-for-timer blink attrTemplate HUEDevice15 on: Unknown command HUEDevice15, try help.
2020-12-22 20 mode enabled
deutet darauf hin, dass das im DOIF so nicht klappt. Du kannst ja jetzt schimpfen, warum es auf der Kommandozeile klappt und nicht im DOIF, und ich wüsste nicht, was ich entgegnen sollte. Aber - wie gesagt - besser Schritt für Schritt, und erst mal einen Lüfter steuern.
Nein, ich schimpfe nicht, bin nur kurz vor der Verzweiflung ;)
Habe jetzt nur einen Lüfter eingetragen
([deltadewpoint:state]<2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice15 on) DOELSEIF ([deltadewpoint:state]<2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice15 on) DOELSE (set HUEDevice15 off)
Jetzt sieht so das DOIF "TAUPUNKT_LUEFTUNG_KG" aus; zumindest kein Error; Aber Lüfter schaltet wieder nicht.
Internals:
CFGFN
DEF ([deltadewpoint:state]<2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice15 on) DOELSEIF ([deltadewpoint:state]<2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice15 on) DOELSE (set HUEDevice15 off)
FUUID 5fe1bee7-f33f-f59f-1a14-e04ad4bc48189b35
MODEL FHEM
NAME TAUPUNKT_LUEFTUNG_KG
NOTIFYDEV global,deltadewpoint
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 1608673354.02454
VALUE initialized
READINGS:
2020-12-22 22:42:34 cmd 0
2020-12-22 22:42:34 mode enabled
2020-12-22 22:42:34 state initialized
2020-12-22 22:42:34 timer_01_c01 23.12.2020 07:00:00
2020-12-22 22:42:34 timer_02_c01 22.12.2020 23:00:00
2020-12-22 22:42:34 timer_03_c02 23.12.2020 07:00:00
2020-12-22 22:42:34 timer_04_c02 22.12.2020 23:00:00
Regex:
accu:
cond:
deltadewpoint:
0:
state ^deltadewpoint$:^state:
1:
state ^deltadewpoint$:^state:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'deltadewpoint','state')<2 and ::DOIF_time($hash,0,1,$wday,$hms) and ($month>4 and $month<10)
1 ::ReadingValDoIf($hash,'deltadewpoint','state')<2 and ::DOIF_time($hash,2,3,$wday,$hms) and ($month<=4 or $month>=10)
days:
do:
0:
0 set HUEDevice15 on
1:
0 set HUEDevice15 on
2:
0 set HUEDevice15 off
helper:
DEVFILTER ^global$|^deltadewpoint$
NOTIFYDEV global|deltadewpoint
globalinit 1
last_timer 4
sleeptimer -1
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
localtime:
0 1608703200
1 1608674400
2 1608703200
3 1608674400
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
triggertime:
1608674400:
localtime 1608674400
hash:
1608703200:
localtime 1608703200
hash:
uiState:
uiTable:
Attributes:
room Kellerlüftung
Nach ein paar wenigen Minuten hat der Lüfter jetzt eingeschalten.
Unter state steht cmd_2
List von TAUPUNKT_LUEFTUNG_KG
Internals:
CFGFN
DEF ([deltadewpoint:state]<2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice15 on) DOELSEIF ([deltadewpoint:state]<2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice15 on) DOELSE (set HUEDevice15 off)
FUUID 5fe1bee7-f33f-f59f-1a14-e04ad4bc48189b35
MODEL FHEM
NAME TAUPUNKT_LUEFTUNG_KG
NOTIFYDEV global,deltadewpoint
NR 1436
NTFY_ORDER 50-TAUPUNKT_LUEFTUNG_KG
STATE cmd_2
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 1608673777.54177
VALUE cmd_2
READINGS:
2020-12-22 22:49:37 Device deltadewpoint
2020-12-22 22:49:37 cmd 2
2020-12-22 22:49:37 cmd_event deltadewpoint
2020-12-22 22:49:37 cmd_nr 2
2020-12-22 22:49:37 e_deltadewpoint_state -0.9
2020-12-22 22:42:34 mode enabled
2020-12-22 22:49:37 state cmd_2
2020-12-22 22:42:34 timer_01_c01 23.12.2020 07:00:00
2020-12-22 22:42:34 timer_02_c01 22.12.2020 23:00:00
2020-12-22 22:42:34 timer_03_c02 23.12.2020 07:00:00
2020-12-22 22:42:34 timer_04_c02 22.12.2020 23:00:00
Regex:
accu:
cond:
deltadewpoint:
0:
state ^deltadewpoint$:^state:
1:
state ^deltadewpoint$:^state:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'deltadewpoint','state')<2 and ::DOIF_time($hash,0,1,$wday,$hms) and ($month>4 and $month<10)
1 ::ReadingValDoIf($hash,'deltadewpoint','state')<2 and ::DOIF_time($hash,2,3,$wday,$hms) and ($month<=4 or $month>=10)
days:
do:
0:
0 set HUEDevice15 on
1:
0 set HUEDevice15 on
2:
0 set HUEDevice15 off
helper:
DEVFILTER ^global$|^deltadewpoint$
NOTIFYDEV global|deltadewpoint
event -0.9
globalinit 1
last_timer 4
sleeptimer -1
timerdev deltadewpoint
timerevent -0.9
triggerDev deltadewpoint
DOIF_eventa:
cmd_nr: 2
cmd: 2
cmd_event: deltadewpoint
cmd_2
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: deltadewpoint
state: cmd_2
timerevents:
-0.9
timereventsState:
state: -0.9
triggerEvents:
-0.9
triggerEventsState:
state: -0.9
internals:
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
localtime:
0 1608703200
1 1608674400
2 1608703200
3 1608674400
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:
1608674400:
localtime 1608674400
hash:
1608703200:
localtime 1608703200
hash:
uiState:
uiTable:
Attributes:
room Kellerlüftung
Zitat von: CommandRef#DOIFFalls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden: ...((set lamp1,lamp2 on),set switch on)
https://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil
... und hat vermutlich um 23 Uhr dann abgeschaltet, richtig?
Ich würde jetzt
- Wieder die richtigen Vergleiche (> 2) eintragen, bevor der Weinkeller zur Nebelkammer wird
- Den Tipp von amenomade umsetzen, also Klammern im Ausführungsteil und wieder beide Geräte schalten
- Beobachten
- von "on" auf "set-on-for-timer" gehen und beobachten
- mit "repeatCmd" spielen und beobachten
Danke für Euere bisherigen große Hilfsbereitschaft :)
Ja, hat gestern um 23:00 Uhr abgeschalten.
Derzeit sieht mein DOIF so aus und als repeatcmd Attribut habe ich dort 7200:10080 gesetzt.
([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice15 on-for-timer 1800) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice15 on-for-timer 1200) DOELSE (set HUEDevice15 off)
Das mit den Klammern setzten wird wohl das Problem gewesen sein.
Werde aber heute eine Kabel direkt zu dem zweiten Lüfter ziehen, weil anscheinen der zweite Lüfter bzw. die Smart+ Steckdose die Verbindung verliert. Die zwei Steckdosen haben zwar Sichtkontakt und sind nur etwa 8-10 m auseinander aber der Gang ist ziemlich schmal. Evlt. können sich hier die Zigbee Funkwellen nicht zuverlässig ausbreiten.
Lüften ist ja heute sowieso noch nicht drinnen, weil zu feucht.
Werde die Sache jetzt mal beobachten und zwischendurch berichten. Vielleicht schaffe ich es auch einen längeren Zeitraum von der DBLog Aufzeichnung darzustellen. Kann nur einen Tag darstellen.
Zuallererst möchte ich noch einen schönen zweiten Weihnachtsfeiertag wünschen.
Sei drei Tagen läuft jetzt die grundsätzilche Steuerung ohne Probleme. Die Lüfter schalten zuverlässig ein und aus.
Jedoch interessiert FHEM meine eingestellten Lüftungs- und Pausenzeiten überhaupt nicht.
Der Lüfter ist immer für eine Stunden eingeschaltet und für eine Stunde ausgeschaltet, obwohl er für 20 Minuten einschalten sollte und für 120 Minuten.
Hier wäre meine DOIF mit folgenden Attribut:
([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice9 on-for-timer 1800) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10)) (set HUEDevice9 on-for-timer 900) DOELSE (set HUEDevice9 off)
attr TAUPUNKT_LUEFTUNG_KG repeatcmd 3600:7200
So wie ich es verstanden habe werden die Zeiten überall in Sekunden angegeben. Beim repeatcmd bezieht sich die 3600 auf den ersten Teil (also von Mai bis September) und der zweite Teil nach dem Doppelpunkt auf jetzt.
An was liegt es?
Viel kann ich noch nicht darüber sagen, ob das Lüften etwas bringt, nachdem es seit gestern erst wieder trockener geworden ist. Außerdem wird durch das momentante Lüftungsverhalten und den jetzt fallenden Außentemperaturen der Keller zu viel "ausgekühlt".
Habe auch die Funktion gefunden, mit der ich einen längeren Zeitraum in der Grafik darstellen kann. Man brauch nur im jeweiligen SVG_DbLog folgendes Attribut setzen (z.B. week, month,...)
attr TAUPUNKT_LUEFTUNG_KG fixedrange week
Hier eine Woche der Aufzeichnung:
Habe die Lists vergessen.
TAUPUNKT_LUEFTUNG_KG:
Internals:
CFGFN
DEF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month>4 and $month<10)) (set HUEDevice9 on-for-timer 1800) DOELSEIF ([deltadewpoint:state]>2 and [07:00-23:00] and ($month<=4 or $month>=10)) (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 cmd_2
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 1608976800.09825
VALUE cmd_2
READINGS:
2020-12-26 12:14:03 Device deltadewpoint
2020-12-26 11:00:00 cmd 2
2020-12-26 11:00:00 cmd_event timer_3
2020-12-26 11:00:00 cmd_nr 2
2020-12-26 12:14:03 e_deltadewpoint_state 11
2020-12-26 00:49:08 mode enabled
2020-12-26 11:00:00 state cmd_2
2020-12-26 00:49:08 timer_01_c01 26.12.2020 07:00:00
2020-12-26 00:49:08 timer_02_c01 26.12.2020 23:00:00
2020-12-26 00:49:08 timer_03_c02 26.12.2020 07:00:00
2020-12-26 00:49:08 timer_04_c02 26.12.2020 23:00:00
2020-12-26 11:00:00 wait_timer 26.12.2020 13:00:00 cmd_2 timer_3
Regex:
accu:
cond:
deltadewpoint:
0:
state ^deltadewpoint$:^state:
1:
state ^deltadewpoint$:^state:
attr:
cmdState:
repeatcmd:
3600
7200
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'deltadewpoint','state')>2 and ::DOIF_time($hash,0,1,$wday,$hms) and ($month>4 and $month<10)
1 ::ReadingValDoIf($hash,'deltadewpoint','state')>2 and ::DOIF_time($hash,2,3,$wday,$hms) and ($month<=4 or $month>=10)
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 11
globalinit 1
last_timer 4
sleepdevice timer_3
sleepsubtimer 0
sleeptimer 1
timerdev deltadewpoint
timerevent 11
triggerDev deltadewpoint
timerevents:
11
timereventsState:
state: 11
triggerEvents:
11
triggerEventsState:
state: 11
internals:
interval:
0 -1
1 0
2 -1
3 2
intervalfunc:
intervaltimer:
localtime:
0 1608962400
1 1609020000
2 1608962400
3 1609020000
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:
1609020000:
localtime 1609020000
hash:
uiState:
uiTable:
Attributes:
repeatcmd 3600:7200
room Kellerlüftung
deltadewpoint:
Internals:
CFGFN
FUUID 5fe0eb17-f33f-f59f-e80b-ec58da6542b958ca
NAME deltadewpoint
NR 1200
STATE 11
TYPE dummy
Helper:
DBLOG:
state:
DbLog:
TIME 1608981243.4925
VALUE 11
READINGS:
2020-12-26 12:14:03 state 11
Attributes:
room Kellerlüftung
calcdelta:
Internals:
CFGFN
DEF (KEL|AUS)_LUFTFEUCHTIGKEIT:dewpoint.* { my $a=ReadingsVal("KEL_LUFTFEUCHTIGKEIT", "dewpoint", 0)-ReadingsVal("AUS_LUFTFEUCHTIGKEIT", "dewpoint", 0); fhem ("set deltadewpoint " . $a) }
FUUID 5fe0eb52-f33f-f59f-d120-dc8c0132d5471c97
NAME calcdelta
NR 1203
NTFY_ORDER 50-calcdelta
REGEXP (KEL|AUS)_LUFTFEUCHTIGKEIT:dewpoint.*
STATE 2020-12-26 12:14:03
TRIGGERTIME 1608981243.48697
TYPE notify
Helper:
DBLOG:
state:
DbLog:
TIME 1608575826.8177
VALUE active
READINGS:
2020-12-21 19:37:06 state active
Attributes:
room Kellerlüftung
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.
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
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)
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
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...
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 (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