Hallo,
möchte gerne einen Radiator über eine HM Schaltsteckdose steuern mit Hilfe eines HM Thermostat. Dafür habe ich mir folgendes überlegt.
die Heizung soll um 5:00 Uhr in der Woche und um 7:00 Uhr am Wochenende angehen (bzw. um 17:20 Uhr jeden Tag), wenn die eingestellte Temperatur (HM-Thermostat) nicht erreicht ist und soll
dann ausgehen, wenn die Temperatur erreicht ist, spätestens aber um 7:00 Uhr in der Woche und um 09:00 am Wochenende (bzw. um 21:00 Uhr jeden Tag).
([05:00|8] or [07:00|7] or [17:00|8] or [17:20|7] and [HM_26FE8C_Climate:measured-temp] < [HM_26FE8C_Climate:desired-temp] and [Fenster_Bad] eq "closed") (set HM_25891E on) DOELSEIF ([07:00|8] or [09:00|7] or [21:00]) (set HM_25891E off)
Aber irgendwie funktioniert es nicht so wie ich mir das vorstelle. Mal geht SIe an, oder aber nicht aus wenn die Temperatur erreicht ist.
Kann mir vielleicht jemand hierbei helfen, oder muss ich das DOIF aufteilen, in mehrere einzelne DOIF´s?
Danke vorab
Gruß
Setze mal deine ganzen oder Verknüpfungen in eine klammer! Dann sollte es klappen.
Oder vor und wird es ohne klammern ungesund! [emoji6]
Gesendet von meinem SM-T560 mit Tapatalk
@sash.sc
Danke für den Tip. Werde ich heute dann ausprobieren . . . . :)
Leider funktioniert es noch nicht so wie ich es mir denke . . .
Die Heizung geht nicht mehr an??? Status bleibt auf CMD2
(([05:50|8] or [07:00|7] or [17:00|8] or [17:20|7]) and [HM_26FE8C_Climate:measured-temp] < [HM_26FE8C_Climate:desired-temp] and [Fenster_Bad] eq "closed") (set HM_25891E on) DOELSEIF ([07:00|8] or [09:00|7] or [21:00] or [HM_26FE8C_Climate:measured-temp] > [HM_26FE8C_Climate:desired-temp]) (set HM_25891E off)
list <Name des DOIFs> erspart uns allen die Glaskugel...
Hier das List . . .
Internals:
DEF (([05:50|8] or [07:00|7] or [17:00|8] or [17:20|7]) and [HM_26FE8C_Climate:measured-temp] < [HM_26FE8C_Climate:desired-temp] and [Fenster_Bad] eq "closed") (set HM_25891E on) DOELSEIF ([07:00|8] or [09:00|7] or [21:00] or [HM_26FE8C_Climate:measured-temp] > [HM_26FE8C_Climate:desired-temp]) (set HM_25891E off)
NAME Warm.Bad1
NR 173
NTFY_ORDER 50-Warm.Bad1
STATE cmd_2
TYPE DOIF
Readings:
2017-02-23 11:51:41 Device HM_26FE8C_Climate
2017-02-23 07:00:01 cmd 2
2017-02-23 07:00:01 cmd_event timer_5
2017-02-23 07:00:01 cmd_nr 2
2017-02-23 06:40:16 e_Fenster_Bad_STATE closed
2017-02-23 11:51:41 e_HM_26FE8C_Climate_desired-temp 22.5
2017-02-23 11:51:41 e_HM_26FE8C_Climate_measured-temp 19.5
2017-02-23 07:00:01 state cmd_2
2017-02-23 05:50:00 timer_01_c01 24.02.2017 05:50:00|8
2017-02-23 07:00:01 timer_02_c01 24.02.2017 07:00:00|7
2017-02-22 19:06:49 timer_03_c01 23.02.2017 17:00:00|8
2017-02-22 19:06:49 timer_04_c01 23.02.2017 17:20:00|7
2017-02-23 07:00:01 timer_05_c02 24.02.2017 07:00:00|8
2017-02-23 09:00:00 timer_06_c02 24.02.2017 09:00:00|7
2017-02-22 21:00:00 timer_07_c02 23.02.2017 21:00:00
Condition:
0 (DOIF_time_once($hash,0,$wday,"8") or DOIF_time_once($hash,1,$wday,"7") or DOIF_time_once($hash,2,$wday,"8") or DOIF_time_once($hash,3,$wday,"7")) and ReadingValDoIf($hash,'HM_26FE8C_Climate','measured-temp') < ReadingValDoIf($hash,'HM_26FE8C_Climate','desired-temp') and InternalDoIf($hash,'Fenster_Bad','STATE') eq "closed"
1 DOIF_time_once($hash,4,$wday,"8") or DOIF_time_once($hash,5,$wday,"7") or DOIF_time_once($hash,6,$wday) or ReadingValDoIf($hash,'HM_26FE8C_Climate','measured-temp') > ReadingValDoIf($hash,'HM_26FE8C_Climate','desired-temp')
Days:
0 8
1 7
2 8
3 7
4 8
5 7
Devices:
0 HM_26FE8C_Climate Fenster_Bad
1 HM_26FE8C_Climate
all HM_26FE8C_Climate Fenster_Bad
Do:
0:
0 set HM_25891E on
1:
0 set HM_25891E off
2:
Helper:
event desired-temp: 22.5,humidity: 52,measured-temp: 19.5,T: 19.5 desired: 22.5
globalinit 1
last_timer 7
sleeptimer -1
timerdev
timerevent timer_5
triggerDev HM_26FE8C_Climate
timerevents:
timer_5
timereventsState:
desired-temp: 22.5
humidity: 51
measured-temp: 20.4
state: T: 20.4 desired: 22.5
triggerEvents:
desired-temp: 22.5
humidity: 52
measured-temp: 19.5
T: 19.5 desired: 22.5
triggerEventsState:
desired-temp: 22.5
humidity: 52
measured-temp: 19.5
state: T: 19.5 desired: 22.5
Internals:
0 Fenster_Bad:STATE
all Fenster_Bad:STATE
Interval:
Itimer:
Localtime:
0 1487911800
1 1487916000
2 1487865600
3 1487866800
4 1487916000
5 1487923200
6 1487880000
Readings:
0 HM_26FE8C_Climate:measured-temp HM_26FE8C_Climate:desired-temp
1 HM_26FE8C_Climate:measured-temp HM_26FE8C_Climate:desired-temp
all HM_26FE8C_Climate:measured-temp HM_26FE8C_Climate:desired-temp
Realtime:
0 05:50:00
1 07:00:00
2 17:00:00
3 17:20:00
4 07:00:00
5 09:00:00
6 21:00:00
Regexp:
0:
1:
All:
State:
Time:
0 05:50:00
1 07:00:00
2 17:00:00
3 17:20:00
4 07:00:00
5 09:00:00
6 21:00:00
Timecond:
0 0
1 0
2 0
3 0
4 1
5 1
6 1
Timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
Timers:
0 0 1 2 3
1 4 5 6
Trigger:
Triggertime:
1487865600:
localtime 1487865600
Hash:
1487866800:
localtime 1487866800
Hash:
1487880000:
localtime 1487880000
Hash:
1487911800:
localtime 1487911800
Hash:
1487916000:
localtime 1487916000
Hash:
1487923200:
localtime 1487923200
Hash:
Attributes:
group Heizung
room Programme
ist $we bei dir heute wahr oder benutzt du eine nicht aktuelle Version von DOIF?
Er steht aktuell auf timer_5 - wäre dann am Freitag um
07:00 Uhr | 8 .
Also alte Version? Wo finde ich die neue Version?
Habe Fhem bereits geupdatet.
Danke
Zitat von: DJ-Mix am 23 Februar 2017, 14:15:44
Er steht aktuell auf timer_5 - wäre dann am Freitag um
07:00 Uhr | 8 .
Also alte Version? Wo finde ich die neue Version?
Habe Fhem bereits geupdatet.
Danke
In der Commandozeile:
Version DOIF
zeigt dir die aktuelle Version
{$we}
sollte heute 0 ergeben
File Rev Last Change
98_DOIF.pm 13414 2017-02-14 20:37:20Z Damian
{$we}
ergibt 0
Update: 17:00 Uhr
jetzt ist die Heizung angesprungen und der Status hat auf timer_3 gewechselt.
Zitat von: DJ-Mix am 23 Februar 2017, 16:57:58
File Rev Last Change
98_DOIF.pm 13414 2017-02-14 20:37:20Z Damian
{$we}
ergibt 0
Update: 17:00 Uhr
jetzt ist die Heizung angesprungen und der Status hat auf timer_3 gewechselt.
Ich sehe gerade, dass du weiter hinten auch [07:00|8] definiert hast. Am besten machst du Zeilenumbrüche für jeden Zweig, sonst kann man die eine Zeile schlecht auswerten.
Wenn er um 07:00 Uhr cmd_2 geschaltet hat, dann einfach deswegen weil HM_26FE8C_Climate:measured-temp] > [HM_26FE8C_Climate:desired-temp.
Ich glaube aber nicht, dass du das so willst, wie du es definiert hast. Deine Zeitdefinitionen sind nur als Zeitpunkte zu sehen und nicht als Zeiträume.
Wenn also um 7:00 Uhr die Temperatur warm genug ist, dann wird nicht eingeschaltet, aber wenn eine Minute später also um 7:01 Uhr zu kalt wird, wird ebenfalls nicht eingeschaltet.
Du solltest also besser Zeitintervalle definieren, in denen du bei kalter Temperatur deinen Radiator einschalten möchtest.
meinst du das dann in etwa so?
(([05:50-07:00|8] or [07:00-09:00|7] or [17:00-21:00|8] or [17:20-21:00|7]) and [HM_26FE8C_Climate:measured-temp] < [HM_26FE8C_Climate:desired-temp] and [Fenster_Bad] eq "closed") (set HM_25891E on) DOELSEIF ([HM_26FE8C_Climate:measured-temp] > [HM_26FE8C_Climate:desired-temp]) (set HM_25891E off)
Zitat von: DJ-Mix am 23 Februar 2017, 19:57:28
meinst du das dann in etwa so?
(([05:50-07:00|8] or [07:00-09:00|7] or [17:00-21:00|8] or [17:20-21:00|7]) and [HM_26FE8C_Climate:measured-temp] < [HM_26FE8C_Climate:desired-temp] and [Fenster_Bad] eq "closed") (set HM_25891E on) DOELSEIF ([HM_26FE8C_Climate:measured-temp] > [HM_26FE8C_Climate:desired-temp]) (set HM_25891E off)
Schon eher und den DOELSEIF würde ich als DOELSE definieren, da es ja das Gegenteil sein soll.
Vielen Dank für die Hilfe. Werde ich morgen umsetzen.
Jetzt erstmal bisschen Karneval feiern 8) 8)
habe es mal so eingetragen. jetzt erhalte ich aber im Log folgende Meldungen.
2017.02.24 08:52:37 2: Warm.Bad1: 19.6 > 22.5: Unknown command 19.6, try help.
2017.02.24 08:52:37 3: CUL_HM set HM_25891E off
2017.02.24 08:53:43 2: Warm.Bad1: 19.7 > 22.5: Unknown command 19.7, try help.
2017.02.24 08:53:43 3: CUL_HM set HM_25891E off
2017.02.24 08:53:43 2: Warm.Bad1: 19.7 > 22.5: Unknown command 19.7, try help.
2017.02.24 08:53:43 3: CUL_HM set HM_25891E off
2017.02.24 08:54:45 2: Warm.Bad1: 19.7 > 22.5: Unknown command 19.7, try help.
2017.02.24 08:54:45 3: CUL_HM set HM_25891E off
2017.02.24 08:57:43 2: Warm.Bad1: 19.7 > 22.5: Unknown command 19.7, try help.
2017.02.24 08:57:43 3: CUL_HM set HM_25891E off
2017.02.24 09:00:27 2: Warm.Bad1: 19.7 > 22.5: Unknown command 19.7, try help.
Wie kann ich das den abstellen? Muss ich dafür das DOIF umbauen?
DOELSE hat keine Bedingung, also muss die Temperaturabfrage hinter DOELSE weg.
Yes Sir . . .
Vielen Dank Damian.
Heißt für mich noch weiter lernen.
Habe noch eine Frage bezüglich Log.
Hier taucht nun ständig die Meldung CUL_HM set HM_25891E off
bzw. CUL_HM set HM_25891E on
auf, auch außerhalb der Zeit. Hier nochmal der aktuelle Code den ich verwende.
(([05:50-07:00|8] or [07:00-09:30|7] or [17:00-20:00|8] or [17:20-21:00|7]) and [HM_26FE8C_Climate:measured-temp] < [?HM_26FE8C_Climate:desired-temp] and [Fenster_Bad] eq "closed") (set HM_25891E on) DOELSE (set HM_25891E off)