Hallo Leute
Habe mir eine Lüftersteuerung gebaut. Einschaltet klappt. Ausschalten ist schlecht zu testen wegen der Uhrzeit. Und habe leider nur Abend äs dazu Zeit und dort schläft er schon.
defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2) (set Luefter_Ole on) DOELSEIF ([4:00] or [LaCrosse_23:temperature] < 18) (set Luefter_Ole off)
attr Ole_Luefter_automatik room Ole
Es soll nachts um 4 Uhr abschalten oder bei unter 18 Grad.
Danke für den Tipp schon mal.
Warum änderst Du zum Testen nicht die Uhrzeiten und ggf. die Temperaturen?
Mit den Zeilenumbrüchen in der Definition wird es nicht funktionieren.
Ich hoffe mal er hat den Code ohne Zeilenumbrüche und weiß nur nicht wie man hier Code einfügt.
Zum posting: https://forum.fhem.de/index.php/topic,71806.0.html
Ich würde die Bedingung in Eine packen, die einzelne Zeit 4:00 und Abfrage < 18 macht keinen Sinn.
defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) DOELSE (set Luefter_Ole off)
Gruß Otto
Zitat von: Otto123 am 23 April 2019, 09:22:32
Zum posting: https://forum.fhem.de/index.php/topic,71806.0.html
Ich würde die Bedingung in Eine packen, die einzelne Zeit 4:00 und Abfrage < 18 macht keinen Sinn.
defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) DOELSE (set Luefter_Ole off)
Gruß Otto
Er frägt ja nicht UND sondern ODER ;)
Er will ja zwischen 18:00 und 04:00 wenn irgendwas mit Temp ist ODER aber um 04:00 (auf jeden Fall ausschalten) ODER wenn schon vorher? die Temp kleiner 18Grad ist...
Ob nun das DOIF so stimmt und schaltet wie gewünscht?
Nutze kein DOIF ;)
EDIT: äh nutze kein DOIF, daher lasse ich die Anmerkung mal stehen denke aber dass die Def von Otto vermutlich auch macht was gewünscht ist... Weil DOELSE ja "aus macht", wenn nichts bei DOIF passt ;) / halte zukünftig bei DOIF besser die Klappe ;)
Aber wie schon angemerkt: ausprobieren ;)
(andere Uhrzeit im DOIF zum Test oder einfach mal per setreading [kurzzeitig / weil wird ja wieder "überschrieben"] die Temp entsprechend setzen)
Gruß, Joachim
Ich denke das passt schon mit der Umkehrung (or -> and) beim Wechsel in den anderen Zweig.
Die einzige (eventuell nur philosophische) Frage ist: passt es auch mit >18 oder müsste es >= 18 (wäre die exakte Umkehrung) oder nimmt man > 17 (weil = 18 gar nicht in der Überlegung war) ;)
Klammern sind deine Freunde....?!
(
[?18:00-04:00] and ### ?-> nur Bedingung, kein Trigger
(([LaCrosse_0C:temperature]-[LaCrosse_23:temperature]) < 2) and
([LaCrosse_23:temperature] > 18)
)
(set Luefter_Ole on)
DOELSEIF
( [04:01] )
(set Luefter_Ole off)
DOELSE
(set Luefter_Ole off)
Klammern sind in dem Fall zwar sparsam aber nicht zu wenig ;D
https://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity
Probiers aus - für die FHEM Kommandozeile ;D
{4-2 > 2}
{4-1 > 2}
Und er wollte 4:00 Uhr aus haben nicht 4:01 Uhr ;)
Hallo
Und sry fürs jetzt erst melden. @otto es schaltet von dir sehr gut Danke.
Aber würde gerne noch dieses einfügen. Oder bin ich dafür auf den Holzweg oder gibt es eine einfachere/ andere Lösung.
Anwendungsbeispiel: Warmwasserzirkulation
define di_pump_circ DOIF ([05:00-22:00])(set pump on)(set pump off) DOELSE (set pump off)
attr di_pump_circ wait 0,300
attr di_pump_circ repeatcmd 3600
Zwischen 5:00 und 22:00 Uhr läuft die Zirkulationspumpe alle 60 Minuten jeweils 5 Minuten lang.
So sieht meine List aus Zeitangaben sind nur Testzwecke.
Internals:
CFGFN
DEF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) DOELSE (set Luefter_Ole off)
FUUID 5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
MODEL FHEM
NAME Ole_Luefter_automatik
NR 21454
NTFY_ORDER 50-Ole_Luefter_automatik
STATE cmd_1
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
READINGS:
2019-04-24 23:00:10 Device LaCrosse_23
2019-04-24 22:59:14 cmd 1
2019-04-24 22:59:14 cmd_event LaCrosse_0C
2019-04-24 22:59:14 cmd_nr 1
2019-04-24 23:00:06 e_LaCrosse_0C_temperature 16.2
2019-04-24 23:00:10 e_LaCrosse_23_temperature 21.2
2019-04-24 22:55:30 mode enabled
2019-04-24 22:59:14 state cmd_1
2019-04-24 22:47:39 timer_01_c01 25.04.2019 18:00:00
2019-04-24 22:47:39 timer_02_c01 25.04.2019 04:00:00
2019-04-24 22:59:14 wait_timer 24.04.2019 23:02:34 cmd_1 LaCrosse_0C
Regex:
accu:
attr:
cmdState:
repeatcmd:
200
wait:
0:
O
100
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') < 2 and ::ReadingValDoIf($hash,'LaCrosse_23','temperature') > 18
days:
devices:
0 LaCrosse_0C LaCrosse_23
all LaCrosse_0C LaCrosse_23
do:
0:
0 set Luefter_Ole on
1:
0 set Luefter_Ole off
helper:
event battery: ok,temperature: 21.2,humidity: 54
globalinit 1
last_timer 2
sleepdevice LaCrosse_0C
sleepsubtimer 0
sleeptimer 0
timerdev LaCrosse_23
timerevent battery: ok,temperature: 21.2,humidity: 54
triggerDev LaCrosse_23
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: LaCrosse_0C
state: cmd_1
timerevents:
battery: ok
temperature: 21.2
humidity: 54
timereventsState:
battery: ok
temperature: 21.2
humidity: 54
triggerEvents:
battery: ok
temperature: 21.2
humidity: 54
triggerEventsState:
battery: ok
temperature: 21.2
humidity: 54
internals:
interval:
0 -1
1 0
intervalfunc:
itimer:
localtime:
0 1556208000
1 1556157600
readings:
0 LaCrosse_0C:temperature LaCrosse_23:temperature
all LaCrosse_0C:temperature LaCrosse_23:temperature
realtime:
0 18:00:00
1 04:00:00
time:
0 18:00:00
1 4:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
triggertime:
1556157600:
localtime 1556157600
hash:
1556208000:
localtime 1556208000
hash:
uiState:
uiTable:
Attributes:
repeatcmd 200
room Ole
wait O,100
Schaltet nur leider nicht. Er fragt ejar die Temperatursensoren ab
Zitat von: Wasserwerk33 am 24 April 2019, 22:33:06Aber würde gerne noch dieses einfügen.
Mein Vorschlag: anderer Aktor = anderes DOIF. Nicht dass es ungewollte Quereffekte gibt.
Hallo Wasserwerk33,
sorry aber ich verstehe Deine Gedankengänge nicht. Das list von dem DOIF ist doch das was funktioniert?
Der Code von dem DOIF Wasserzirkulation ist aus der Doku?
Du willst die Intervallschaltung von dort in dein DOIF bauen?
Gruß Otto
Hallo
Fangen wir vorne. Das ist ein Lüfter der in der Nacht (Temperaturabfall) kühle Luft in die Zimmer der Kinder leitet. Funktioniert soweit super.
Das soll passieren in der Zeit von18-4 uhr. Und das bei 2 Grad temperatur unterschied aussen zu innen. Das Zimmer aber nicht kälter als 18 Grad machen.
Und nicht die ganze Nacht laufen sozusagen Intervall mässig. Letztes Jahr hatte ich dieses einfach nur mit einem button der 7200 lief und dann ausging und dann nicht mehr an. Aber Intervall wäre schön besser.
Also, falls das jetzt bedeutet, auf alle 3 Fragen von mir ist die Antwort Ja? ;)
defmod Ole_Luefter_automatik DOIF ([18:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > 18) (set Luefter_Ole on) (set Luefter_Ole off) DOELSE (set Luefter_Ole off)
attr Ole_Luefter_automatik wait 0,300
attr Ole_Luefter_automatik repeatcmd 3600
Danke Läuft super. Auch mit dem Timer. Meinte letztens immer das er die Temperatursensoren abfragt. Dieses war aber wohl nicht der fall.
ich verstehe Deine Frage mit den 20 grad nicht. Klar kannst Du die 18 auf 20 grad ändern. Oder willst Du eine Hysterese?
Gru´ß Otto
Habe es gerade gegoogelt "Hysterese" ja genau.
Habe nun einem dummy genommen und ihn mit einem doif versehen der erst bei 20 Grad einschaltet. Geht dieses auch in einem doif? Den wäre ja nun noch eins zusätzlich.
Habe was gefunden werde es erst selber versuchen. Melde mich nochmal.
Moin,
brauchst Du nicht all zuweit googeln, steht in der Doku ;)
https://commandref.fhem.de/commandref_DE.html#DOIF_Weitere_Anwendungsbeispiele
Gruß Otto
Hallo Leute.
Habe mich mal dem Problem meines Lüfters wieder angenommen bei dem heißen Tag heute. 8)
Habe nun die Hysterese eingefügt aber einen error Fehler. Liegt das an dem Das ich es andersherum aufgebaut habe und dann nicht dieses mit dem -1 Grad habe sondern 2 Grad + damit meine?
Internals:
DEF ([23:00-4:00] and [LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > ([$SELF:desired] 2)) (set Luefter_Ole on) (set Luefter_Ole off) DOELSEIF([LaCrosse_0C:temperature] < ([$SELF:desired])) (set Luefter_Ole off)
FUUID 5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
MODEL FHEM
NAME Ole_Luefter_automatik
NR 94
NTFY_ORDER 50-Ole_Luefter_automatik
STATE initialized
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
READINGS:
2019-06-02 17:05:46 Device LaCrosse_0C
2019-06-02 17:04:12 cmd 0
2019-06-02 17:05:46 e_LaCrosse_0C_temperature 33.8
2019-06-02 17:05:45 e_LaCrosse_23_temperature 22.9
2019-06-02 17:05:46 error condition c01: syntax error, 2"
2019-06-02 17:04:12 mode enabled
2019-06-02 17:04:12 state initialized
2019-06-02 17:04:12 timer_01_c01 02.06.2019 23:00:00
2019-06-02 17:04:12 timer_02_c01 03.06.2019 04:00:00
2019-06-02 17:05:46 warning condition c01: (Missing operator before 2?)
Regex:
accu:
attr:
cmdState:
0:
on
1:
off
repeatcmd:
7200
wait:
0:
0
3600
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') < 2 and ::ReadingValDoIf($hash,'LaCrosse_23','temperature') > (::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired') 2)
1 ::ReadingValDoIf($hash,'LaCrosse_0C','temperature') < (::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired'))
days:
devices:
0 LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
1 LaCrosse_0C Ole_Luefter_automatik
all LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
do:
0:
0 set Luefter_Ole on
1 set Luefter_Ole off
1:
0 set Luefter_Ole off
2:
helper:
event battery: ok,temperature: 33.8,humidity: 29
globalinit 1
last_timer 2
sleeptimer -1
triggerDev LaCrosse_0C
triggerEvents:
battery: ok
temperature: 33.8
humidity: 29
triggerEventsState:
battery: ok
temperature: 33.8
humidity: 29
internals:
interval:
0 -1
1 0
intervalfunc:
itimer:
localtime:
0 1559509200
1 1559527200
readings:
0 LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
1 LaCrosse_0C:temperature Ole_Luefter_automatik:desired
all LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
realtime:
0 23:00:00
1 04:00:00
time:
0 23:00:00
1 4:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
triggertime:
1559509200:
localtime 1559509200
hash:
1559527200:
localtime 1559527200
hash:
uiState:
uiTable:
Attributes:
cmdState on|off
readingList desired
repeatcmd 7200
room Ole
setList 18
wait 0,3600
webCmd desired
Danke für eure Hilfe
Nachtrag Fehler gefunden war in meiner setList
Zitat von: Wasserwerk33 am 02 Juni 2019, 17:12:06
... > ([$SELF:desired] 2)) ...
Copy-Fehler?
Falls LaCrosse_23:temperature auch negative Temperaturen annehmen kann, solltest du ihm ein Leerzeichen nach dem Minus spendieren!
@ Per so? > ([$SELF:desired] - 2))
Ich habe ejar das Problem es schalter auch wenn das Zimmer 23 Grad hat und Aussentemperatur bei 25 Grad liegt. Bei 24.9 geht er nicht an. Wo ist den mein Fehler?
Zitat von: Wasserwerk33 am 03 Juni 2019, 14:51:00so?
Weiss ich nicht, aber irgend ein Zeichen sollte dazwischen. Sonst wird es mit hoher Wahrscheinlichkeit ein Syntaxfehler.
Okay ja habe eins dazwischen. Schaltet nun auch.
Nur nicht den Lüfter. Das doif wird geschaltet. Und wenn ich cmd2 schälte spring er auch sofort um nur wiegesagt der Lüfter wird nicht angeschaltet. Drücke ich dem on Button wird der Lüfter angeschaltet. Mmhh
([LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and [LaCrosse_23:temperature] > ([$SELF:desired] +2)) (set Luefter_Ole on) (set Luefter_Ole off) DOELSE([LaCrosse_0C:temperature] < ([$SELF:desired])) (set Luefter_Ole off)
Wo ist der Fehler?
Hi,
Du solltest besser ein list vom DOIF posten.
Gruß Otto
Sry ja kein Problem. Habe es den Abend weiter probiert aber es klappt nicht habe es schon mitsandten Temperaturen versucht. Das wo ich nun hintergekommen bin ist das wenn ich die desired von 18 auf 21 hochstelle, stellt sich der Lüfter aus. Aber wieso springt er vor der 2 Grad Temperatur Unterschied von Schlafzimmer zu Außentemperatur an.
Internals:
DEF ([LaCrosse_0C:temperature]-[LaCrosse_23:temperature] < 2 and ([LaCrosse_23:temperature] > [Ole_Luefter_automatik:desired] +2)) (set Luefter_Ole on) DOELSEIF ([LaCrosse_0C:temperature]-[LaCrosse_23:temperature] > 0.1 or ([LaCrosse_0C:temperature] < [Ole_Luefter_automatik:desired])) (set Luefter_Ole off)
FUUID 5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
MODEL FHEM
NAME Ole_Luefter_automatik
NR 94
NTFY_ORDER 50-Ole_Luefter_automatik
STATE on
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
READINGS:
2019-06-03 22:56:24 Device LaCrosse_23
2019-06-03 22:53:15 cmd 1
2019-06-03 22:53:15 cmd_event LaCrosse_0C
2019-06-03 22:53:15 cmd_nr 1
2019-06-03 22:52:58 desired 19
2019-06-03 22:56:23 e_LaCrosse_0C_temperature 20.9
2019-06-03 22:56:24 e_LaCrosse_23_temperature 22.8
2019-06-03 22:53:10 mode enabled
2019-06-03 22:53:15 state on
Regex:
accu:
attr:
cmdState:
0:
on
1:
off
repeatcmd:
wait:
waitdel:
condition:
0 ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') < 2 and (::ReadingValDoIf($hash,'LaCrosse_23','temperature') > ::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired') +2)
1 ::ReadingValDoIf($hash,'LaCrosse_0C','temperature')-::ReadingValDoIf($hash,'LaCrosse_23','temperature') > 0.1 or (::ReadingValDoIf($hash,'LaCrosse_0C','temperature') < ::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired'))
devices:
0 LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
1 LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
all LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
do:
0:
0 set Luefter_Ole on
1:
0 set Luefter_Ole off
2:
helper:
event battery: ok,temperature: 22.8,humidity: 63
globalinit 1
last_timer 0
sleeptimer -1
timerdev LaCrosse_23
timerevent battery: ok,temperature: 22.8,humidity: 63
triggerDev LaCrosse_23
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: LaCrosse_0C
state: on
timerevents:
battery: ok
temperature: 22.8
humidity: 63
timereventsState:
battery: ok
temperature: 22.8
humidity: 63
triggerEvents:
battery: ok
temperature: 22.8
humidity: 63
triggerEventsState:
battery: ok
temperature: 22.8
humidity: 63
internals:
itimer:
readings:
0 LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
1 LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
all LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
trigger:
uiState:
uiTable:
Attributes:
cmdState on|off
readingList desired
room Ole
setList desired:17,18,19,20,21
verbose 5
webCmd desired
Zitat von: Wasserwerk33 am 03 Juni 2019, 23:00:13Aber wieso springt er vor der 2 Grad Temperatur Unterschied von Schlafzimmer zu Außentemperatur an.
Nimm DOIF_Readings zur Fehlersuche!
Und <Enter> zur Formatierung:
(([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) < 2 and ([LaCrosse_23:temperature] > ([Ole_Luefter_automatik:desired] + 2)))
(set Luefter_Ole on)
DOELSEIF ((([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) > 0.1) or ([LaCrosse_0C:temperature] < [Ole_Luefter_automatik:desired]))
(set Luefter_Ole off)
Sinnvoll ist auch, sich für eine Schreibweise (a-b > c) oder (a + c > b) zu entscheiden, macht das Überprüfen im Kopf leichter und bringt manchmal sogar Vorteile beim Zusammenfassen:
([$SELF:LC_0C23] < 2 and [$SELF:LC_23de] > 2)
(set Luefter_Ole on)
DOELSEIF ([$SELF:LC_0C23] > 0.1 or [$SELF:LC_23de] < 0)
(set Luefter_Ole off)
attr Ole_Luefter_automatik DOIF_Readings LC_0C23:([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]),LC_23de:([LaCrosse_23:temperature] - [Ole_Luefter_automatik:desired])
Außerdem solltest du die Richtungen der Vergleiche prüfen: < 2 und > 0.1 ergibt einen gemeinsamen Bereich von 1.9. Ist das gewollt?
Hi Per
Lacrosse 0C = Aussenthermeter
Lacrosse 23 = Kinderzimmer
Denke ich habe dann in dem Unterem eine Falsche Schreibweise wollte nämlich das sich der Lüfter ausschaltet wenn er über die Kinderzimmertemperatur geht und nicht die Wärme Luft reinkommt. Deswegen hatte ich dort > 0.1 gestellt und das obere soll heißen wenn ich das Richtig gemacht habe, das ich eine Temperatur von 18 Grad einstelle und bei 20 Grad soll der Lüfter dann anspringen aber erst wenn die Außentemperatur unter die Temperatur vom kinderzimmer fällt.
Zitat von: Wasserwerk33 am 04 Juni 2019, 17:08:33eine Falsche Schreibweise
Was durch die neue "Sortierung" schneller auffällt und leichter zu überwachen ist.
Hi Per
Danke es läuft. So wie es soll. Zumindestens zur Zeit. Ist ja auch warm in den Zimmern. Mal schauen ob es auch klappt wenn wir der eingestellten Temperatur kommen
Hi
Also sobald ich an die 18+2 Grad komme wo er eigentlich anschalten soll springt er immer an uns aus.
20.0 aus
20.1 wieder an.
Er kühlt garnicht bis 18 Grad runter. Hat jemand eine Idee wo das Problem liegt?
Internals:
DEF (([22:00-18:00]) and ([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) < - 0.5
and ([LaCrosse_23:temperature] > ([Ole_Luefter_automatik:desired] + 2)))
(set Luefter_Ole on)
DOELSEIF ((([LaCrosse_0C:temperature] - [LaCrosse_23:temperature]) > 0.5) or ([LaCrosse_0C:temperature] < [Ole_Luefter_automatik:desired]))
(set Luefter_Ole off)
FUUID 5cc0cb6b-f33f-faf7-7809-0fd5326691c8d4ec
MODEL FHEM
NAME Ole_Luefter_automatik
NR 93
NTFY_ORDER 50-Ole_Luefter_automatik
STATE disabled
TYPE DOIF
VERSION 18890 2019-03-13 18:56:41
READINGS:
2019-06-09 05:23:47 Device LaCrosse_23
2019-06-04 18:20:38 LC_0C23 -3.9
2019-06-04 18:20:38 LC_23de 5.5
2019-06-10 22:45:32 cmd 1
2019-06-10 22:45:32 cmd_event Ole_Luefter_automatik
2019-06-10 22:45:32 cmd_nr 1
2019-06-09 05:05:26 desired 18
2019-06-09 05:23:41 e_LaCrosse_0C_temperature 11
2019-06-09 05:23:47 e_LaCrosse_23_temperature 20
2019-06-09 05:04:43 e_Ole_Luefter_automatik_desired 18
2019-06-10 22:45:44 last_cmd on
2019-06-10 22:45:44 mode disabled
2019-06-10 22:45:44 state disabled
2019-06-10 18:00:00 timer_01_c01 10.06.2019 22:00:00
2019-06-10 18:00:00 timer_02_c01 11.06.2019 18:00:00
2019-06-10 22:45:10 wait_timer no timer
Regex:
attr:
cmdState:
0:
on
1:
off
repeatcmd:
wait:
waitdel:
condition:
0 (::DOIF_time($hash,0,1,$wday,$hms)) and (::ReadingValDoIf($hash,'LaCrosse_0C','temperature') - ::ReadingValDoIf($hash,'LaCrosse_23','temperature')) < - 0.5 and (::ReadingValDoIf($hash,'LaCrosse_23','temperature') > (::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired') + 2))
1 ((::ReadingValDoIf($hash,'LaCrosse_0C','temperature') - ::ReadingValDoIf($hash,'LaCrosse_23','temperature')) > 0.5) or (::ReadingValDoIf($hash,'LaCrosse_0C','temperature') < ::ReadingValDoIf($hash,'Ole_Luefter_automatik','desired'))
days:
devices:
0 LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
1 LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
all LaCrosse_0C LaCrosse_23 Ole_Luefter_automatik
do:
0:
0 set Luefter_Ole on
1:
0 set Luefter_Ole off
2:
helper:
globalinit 1
last_timer 2
sleeptimer -1
timerdev
timerevent
timerevents
timereventsState
triggerDev
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: Ole_Luefter_automatik
state: on
internals:
interval:
0 -1
1 0
intervalfunc:
intervaltimer:
itimer:
localtime:
0 1560196800
1 1560268800
perlblock:
readings:
0 LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
1 LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
all LaCrosse_0C:temperature LaCrosse_23:temperature Ole_Luefter_automatik:desired
realtime:
0 22:00:00
1 18:00:00
time:
0 22:00:00
1 18:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
triggertime:
1560268800:
localtime 1560268800
hash:
uiState:
uiTable:
Attributes:
cmdState on|off
readingList desired
room Ole
setList desired:17,18,19,20,21
webCmd desired
Moin,
das hier ist Deine Bedingung für Einschalten mit Hysterese + 2
([LaCrosse_23:temperature] > ([Ole_Luefter_automatik:desired] + 2))
und das hier müsste Deine Bedingung für Ausschalten ohne Hysterese sein:
([LaCrosse_0C:temperature] < [Ole_Luefter_automatik:desired]))
Allerdings steht da der falsche Temp Fühler drin?
Gruß Otto
An alle.
Super Danke für die Hilfe.
System läuft super.
Schönes weiter schwitzen Büsche ich euch ;)