Ich habe im Laufe des Jahres meine Fussbodenheizung mit Stellmotoren umgerüstet und auf FHEM umgestellt. Das Ein- und Ausschalten klappt auch soweit. Ich würde das Ganze jedoch noch verfeinern und zwischen Sommer (AUS) und Winter (AUTO bzw. URLAUB) unterscheiden. Ob das allerdings Sinn macht, wenn ich die Motoren nach Außen- und Innentemperatur steuern lasse, sei dahin gestellt. Vielleicht kann der ein oder andere ja mal über den Code schauen, ob der so funktioniert.
################################################################################
# Heizung Schaltaktoren - Regelung
#-------------------------------------------------------------------------------
#
# Heizungregelung (FHZ)
#
define Modus_FHZ dummy
attr Modus_FHZ alias Heizungsmodus
attr Modus_FHZ devStateIcon devStateIcon Auto:sani_heating_automatic FHEM:sani_heating_manual AUS:secur_heat_protection Frostschutz:temp_frost
attr Modus_FHZ eventMap FHEM Urlaub Aus
attr Modus_FHZ group Heizung
attr Modus_FHZ icon temp_inside@LightSlateGray
attr Modus_FHZ room Automation
attr Modus_FHZ setList state:AUTO,URLAUB,AUS
attr Modus_FHZ sortby 01
attr Modus_FHZ webCmd state
################################################################################
# Heizung Schaltaktoren
#-------------------------------------------------------------------------------
#
# Heizungsaktor - Erdgeschoss
#
define HM_531770 CUL_HM 531770
attr HM_531770 IODev myCUL
attr HM_531770 IOgrp myVCCU:myCUL
attr HM_531770 autoReadReg 4_reqStatus
attr HM_531770 comment 2-fach Schaltaktor fuer FBH (Ergeschoss)
attr HM_531770 expert 2_raw
attr HM_531770 firmware 2.8
attr HM_531770 group Schaltaktoren
attr HM_531770 model HM-LC-SW2-FM
attr HM_531770 room CUL_HM
attr HM_531770 serialNr NEQ1780929
attr HM_531770 subType switch
attr HM_531770 webCmd getConfig:clear msgEvents
define FileLog_HM_531770 FileLog /opt/fhem/log/HM_531770-%Y.log HM_531770
attr FileLog_HM_531770 logtype text
attr FileLog_HM_531770 room CUL_HM
#
# Wohnzimmer - Kanal 1
#
define HM_531770_Sw_01 CUL_HM 53177001
attr HM_531770_Sw_01 comment Kanal 1 steuert FBH-Heizkreise 1-2 (Wohnzimmer)
attr HM_531770_Sw_01 group Schaltaktoren
attr HM_531770_Sw_01 model HM-LC-SW2-FM
attr HM_531770_Sw_01 peerIDs 00000000,
attr HM_531770_Sw_01 room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01 webCmd statusRequest:toggle:on:off
#
# Wohnzimmer - Heizungregelung (Automatik- / Urlaubsmodus)
#
define HM_531770_Sw_01.Auto DOIF ([Modus_FHZ] eq "AUTO" and ([05:00-22:00] and [GT.LaCrosse:temperature] < 15 and [WZ.LaCrosse:temperature] < 21.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "AUTO" and ([05:00-22:00] and [GT.LaCrosse:temperature] > 15 and [WZ.LaCrosse:temperature] > 21.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([05:00-22:00] and [GT.LaCrosse:temperature] < 15 and [WZ.LaCrosse:temperature] < 17.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([05:00-22:00] and [GT.LaCrosse:temperature] > 15 and [WZ.LaCrosse:temperature] > 17.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([23:00-04:00] and [GT.LaCrosse:temperature] < 12 and [WZ.LaCrosse:temperature] < 17.5) (set HM_531770_Sw_01 on)
attr HM_531770_Sw_01.Auto group Schaltaktoren
attr HM_531770_Sw_01.Auto room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01.Auto sortby 02
#
# Wohnzimmer - Heizungregelung (Sommermodus)
#
define HM_531770_Sw_01.Off DOIF ([Modus_FHZ] eq "AUS") (set HM_531770_Sw_01.Auto disable) DOELSEIF ([Modus_FHZ] ne "AUS") (set HM_531770_Sw_01.Auto initialize)
attr HM_531770_Sw_01.Off group Schaltaktoren
attr HM_531770_Sw_01.Off room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01.Off sortby 03
#
# Wohnzimmer - Benachrichtigung für Stellmotor
#
define HM_531770_Sw_01.SM.Oeffnung dummy
attr HM_531770_Sw_01.SM.Oeffnung room Haus
#HM_531770_Sw_01.SM.Oeffnung definieren
define HM_531770_Sw_01.SM.Oeffnung.An notify HM_531770_Sw_01:on.* { fhem ("set HM_531770_Sw_01.SM.Oeffnung on") }
define HM_531770_Sw_01.SM.Oeffnung.Aus notify HM_531770_Sw_01:off.* { fhem ("set HM_531770_Sw_01.SM.Oeffnung off") }
#
#Pushover Notification bei Stellmotorenöffnung
#
define HM_531770_Sw_01.SM.Oeffnung.Pushover.On notify HM_531770_Sw_01.SM.Oeffnung:on {\
my $temperature_wz = sprintf "%.2f°C", ReadingsVal("WZ.LaCrosse","temperature",0);;\
my $temperature_te = sprintf "%.2f°C", ReadingsVal("GT.LaCrosse","temperature",0);;\
{fhem ("set PushMessenger msg 'FHZ (Wohnzimmer)' 'Die Stellmotoren wurden geöffnet.\n-WZ.Temperatur $temperature_wz\n-Außentemperatur $temperature_te'")}
define HM_531770_Sw_01.SM.Oeffnung.Pushover.Off notify HM_531770_Sw_01.SM.Oeffnung:off {\
my $temperature_wz = sprintf "%.2f°C", ReadingsVal("WZ.LaCrosse","temperature",0);;\
my $temperature_te = sprintf "%.2f°C", ReadingsVal("GT.LaCrosse","temperature",0);;\
{fhem ("set PushMessenger msg 'FHZ (Wohnzimmer)' 'Die Stellmotoren wurden geschlossen.\n-WZ.Temperatur $temperature_wz\n-Außentemperatur $temperature_te'")}
Soll er an bleiben, wenn [GT.LaCrosse:temperature] < 15 und [WZ.LaCrosse:temperature] geht über 21.5 durch die Heizung?
Wenn ich am Tablet den 'Hauptschalter' auf AUS stelle, soll er gar nichts tun. Bei AUTO soll fhem dann in Abhängigkeit der Außen- und Raumtemperatur entscheiden, ob der Stellmotor aufgemacht werden muss und wenn die Raumtemperatur die Temperatur von 21.5 erreicht hat, wieder schließen.
Trotzdem hast Du keine Bedingung für "[GT.LaCrosse:temperature] < 15 und [WZ.LaCrosse:temperature] geht über 21.5" oder sehe ich das falsch?
Nach längerem Überlegen macht es vielleicht mehr Sinn, nur auf die Innentemperatur abzufragen. Korrigiert mich wenn ich da einen Denkfehler habe, aber wenn draußen 18 Grad sind und drin auch nur 18, dann ist es drin ja gefühlt merklich kälter. Demnach vielleicht doch nur auf das Programm und die Innentemperatur schauen ?
Macht es wegen der Trägheit der FH Sinn die Range zwischen 20.5 und 22.5 zu belassen (sprich 2 Grad die geheizt werden) ?
define HM_531770_Sw_01.Auto DOIF ([Modus_FHZ] eq "AUTO" and ([04:15-22:00] and [WZ.LaCrosse:temperature] < 20.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "AUTO" and ([04:15-22:00] and [WZ.LaCrosse:temperature] > 22.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-22:00] and [WZ.LaCrosse:temperature] < 17.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-22:00] and [WZ.LaCrosse:temperature] > 19.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([22:45-04:00] and [WZ.LaCrosse:temperature] < 17.5) (set HM_531770_Sw_01 on) \
DOELSEIF ([22:45-04:00] and [WZ.LaCrosse:temperature] > 19.5) (set HM_531770_Sw_01 off)
...
Ja, sieht m.A. besser aus. 2 Grad Hysterese ist auch nicht schlecht - bin aber kein Heizungsprofi ;)
Ca. 21,5 ° ist OK für ein Wohnzimmer, aber ein bisschen zu viel für ein Schlafzimmer. Das ist aber eine Geschmacks-/Kostensache.
Hallo,
ich bin ebenfalls daran interessiert eine Fussbodenheizung - wenn auch nicht sofort - aber dann doch ueber FHEM (bin absoluter Anfaenger )zu steuern.
Wie ist es ausgegangen bislang?
Wie sind die Stellmotoren angeschlossen? Wer steuert sie an?
Gruss und Danke,
FNT
Also irgendwie funktioniert der Code noch nicht. Der Modus_FHZ steht auf Auto. Ich habe den Stellmotor dann mal manuell eingeschalten und laut Code hätte er bei 22,5 zu fahren sollen. Jetzt hab ich 23,5 und der Stellmotor ist immernoch offen.
Vielleicht nur auf die Temperaturen triggern und die anderen mit [? 22.00 usw. Und mit der höchsten beginnen.
Gruß Rolf
Und vielleicht atribut doalways. Bin ich mir aber nicht sicher.
Gruß Rolf
Poste mal ein "list HM_531770_Sw_01.Auto" bitte
Hier das List. Manuell kann ich die Stellmotoren ein und ausschalten.
Internals:
CFGFN ./FHEM/fhem_activeactors.cfg
DEF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 20.5)) (set HM_531770_Sw_01 on)
DOELSEIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 22.5)) (set HM_531770_Sw_01 off)
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 17.5)) (set HM_531770_Sw_01 on)
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 19.5)) (set HM_531770_Sw_01 off)
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] < 17.5) (set HM_531770_Sw_01 on)
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] > 19.5) (set HM_531770_Sw_01 off)
NAME HM_531770_Sw_01.Auto
NR 215
NTFY_ORDER 50-HM_531770_Sw_01.Auto
STATE cmd_6
TYPE DOIF
READINGS:
2017-09-18 16:29:56 Device WZ.LaCrosse
2017-09-09 22:00:00 cmd 6
2017-09-09 22:00:00 cmd_event timer_11
2017-09-09 22:00:00 cmd_nr 6
2017-09-07 19:22:52 e_GT.LaCrosse_temperature 17.4
2017-09-08 19:57:12 e_Modus_FHZ_STATE Auto
2017-09-18 16:29:56 e_WZ.LaCrosse_temperature 22.6
2017-09-09 22:00:00 state cmd_6
2017-09-18 16:03:57 timer_01_c01 19.09.2017 04:15:00
2017-09-18 16:03:57 timer_02_c01 18.09.2017 21:00:00
2017-09-18 16:03:57 timer_03_c02 19.09.2017 04:15:00
2017-09-18 16:03:57 timer_04_c02 18.09.2017 21:00:00
2017-09-18 16:03:57 timer_05_c03 19.09.2017 04:15:00
2017-09-18 16:03:57 timer_06_c03 18.09.2017 21:00:00
2017-09-18 16:03:57 timer_07_c04 19.09.2017 04:15:00
2017-09-18 16:03:57 timer_08_c04 18.09.2017 21:00:00
2017-09-18 16:03:57 timer_09_c05 18.09.2017 22:00:00
2017-09-18 16:03:57 timer_10_c05 19.09.2017 04:00:00
2017-09-18 16:03:57 timer_11_c06 18.09.2017 22:00:00
2017-09-18 16:03:57 timer_12_c06 19.09.2017 04:00:00
2017-09-18 16:04:01 wait_timer 18.09.2017 17:04:01 cmd_2 WZ.LaCrosse
condition:
0 InternalDoIf($hash,'Modus_FHZ','STATE') eq "Auto" and (DOIF_time($hash,0,1,$wday,$hms) and ReadingValDoIf($hash,'WZ.LaCrosse','temperature') < 20.5)
1 InternalDoIf($hash,'Modus_FHZ','STATE') eq "Auto" and (DOIF_time($hash,2,3,$wday,$hms) and ReadingValDoIf($hash,'WZ.LaCrosse','temperature') > 22.5)
2 InternalDoIf($hash,'Modus_FHZ','STATE') eq "URLAUB" and (DOIF_time($hash,4,5,$wday,$hms) and ReadingValDoIf($hash,'WZ.LaCrosse','temperature') < 17.5)
3 InternalDoIf($hash,'Modus_FHZ','STATE') eq "URLAUB" and (DOIF_time($hash,6,7,$wday,$hms) and ReadingValDoIf($hash,'WZ.LaCrosse','temperature') > 19.5)
4 DOIF_time($hash,8,9,$wday,$hms) and ReadingValDoIf($hash,'WZ.LaCrosse','temperature') < 17.5
5 DOIF_time($hash,10,11,$wday,$hms) and ReadingValDoIf($hash,'WZ.LaCrosse','temperature') > 19.5
days:
devices:
0 Modus_FHZ WZ.LaCrosse
1 Modus_FHZ WZ.LaCrosse
2 Modus_FHZ WZ.LaCrosse
3 Modus_FHZ WZ.LaCrosse
4 WZ.LaCrosse
5 WZ.LaCrosse
all Modus_FHZ WZ.LaCrosse
do:
0:
0 set HM_531770_Sw_01 on
1:
0 set HM_531770_Sw_01 off
2:
0 set HM_531770_Sw_01 on
3:
0 set HM_531770_Sw_01 off
4:
0 set HM_531770_Sw_01 on
5:
0 set HM_531770_Sw_01 off
6:
helper:
event temperature: 22.6,humidity: 49,dewpoint: 11.4
globalinit 1
last_timer 12
sleepdevice WZ.LaCrosse
sleepsubtimer 0
sleeptimer 1
timerdev WZ.LaCrosse
timerevent temperature: 22.6,humidity: 49,dewpoint: 11.4
triggerDev WZ.LaCrosse
timerevents:
temperature: 22.6
humidity: 49
dewpoint: 11.4
timereventsState:
temperature: 22.6
humidity: 49
dewpoint: 11.4
triggerEvents:
temperature: 22.6
humidity: 49
dewpoint: 11.4
triggerEventsState:
temperature: 22.6
humidity: 49
dewpoint: 11.4
internals:
0 Modus_FHZ:STATE
1 Modus_FHZ:STATE
2 Modus_FHZ:STATE
3 Modus_FHZ:STATE
all Modus_FHZ:STATE
interval:
0 -1
1 0
10 -1
11 10
2 -1
3 2
4 -1
5 4
6 -1
7 6
8 -1
9 8
itimer:
localtime:
0 1505787300
1 1505761200
10 1505764800
11 1505786400
2 1505787300
3 1505761200
4 1505787300
5 1505761200
6 1505787300
7 1505761200
8 1505764800
9 1505786400
readings:
0 WZ.LaCrosse:temperature
1 WZ.LaCrosse:temperature
2 WZ.LaCrosse:temperature
3 WZ.LaCrosse:temperature
4 WZ.LaCrosse:temperature
5 WZ.LaCrosse:temperature
all WZ.LaCrosse:temperature
realtime:
0 04:15:00
1 21:00:00
10 22:00:00
11 04:00:00
2 04:15:00
3 21:00:00
4 04:15:00
5 21:00:00
6 04:15:00
7 21:00:00
8 22:00:00
9 04:00:00
regexp:
0:
1:
all:
state:
STATE:
time:
0 04:15:00
1 21:00:00
10 22:00:00
11 04:00:00
2 04:15:00
3 21:00:00
4 04:15:00
5 21:00:00
6 04:15:00
7 21:00:00
8 22:00:00
9 04:00:00
timeCond:
0 0
1 0
10 5
11 5
2 1
3 1
4 2
5 2
6 3
7 3
8 4
9 4
timer:
0 0
1 0
10 0
11 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
timers:
0 0 1
1 2 3
2 4 5
3 6 7
4 8 9
5 10 11
trigger:
triggertime:
1505761200:
localtime 1505761200
hash:
1505764800:
localtime 1505764800
hash:
1505786400:
localtime 1505786400
hash:
1505787300:
localtime 1505787300
hash:
Attributes:
group Schaltaktoren
room CUL_HM,Wohnzimmer
sortby 02
wait 0:3600
Es ist einfacher die Steuerung zu handhaben, wenn man pro Zimmer ein THRESHOLD-Modul definiert, welches autark arbeitet. Über ein zentrales DOIF werden nur noch die Zeitprogramme definiert.
So läuft es bei mir:
eines der zahlreichen THRESHOLDS:
defmod TH_DG THRESHOLD T_Dachgeschoss H_Dachgeschoss
attr TH_DG number_format %.1f
attr TH_DG room Heizung,Info
attr TH_DG state_cmd1_gt off
attr TH_DG state_cmd2_lt on
attr TH_DG state_format _dv _sc _s1v
setstate TH_DG 20.0 off 22.7
setstate TH_DG 2017-09-18 13:00:00 cmd cmd1_gt
setstate TH_DG 2017-09-18 13:00:00 desired_value 20
setstate TH_DG 2017-09-18 13:00:00 mode active
setstate TH_DG 2017-09-18 17:06:21 sensor_value 22.6875
setstate TH_DG 2017-09-18 17:06:21 state 20.0 off 22.7
setstate TH_DG 2017-09-18 13:00:00 threshold_max 20
setstate TH_DG 2017-09-18 13:00:00 threshold_min 19
und hier eine für unser Haus ausgetüftelte Wochentagsteuerung:
defmod di_Heizung DOIF ([04:30|8] or [05:00|7])\
(set TH_Kz_o_HM desired-temp 21)\
DOELSEIF ([05:00|8] or [06:00|7])\
(set TH_Keller_HM desired-temp 20,\
set TH_Kueche desired 21,\
set TH_Bad_HM desired-temp 20,\
set TH_DG desired 20)\
DOELSEIF ([05:35|7])\
(set TH_Wz desired 19.5,\
set TH_Kz_w_HM desired-temp 21)\
DOELSEIF ([08:00|8] or [09:00|7])\
(set TH_Keller_HM desired-temp 17,\
set TH_Kueche desired 17,\
set TH_Kz_w_HM desired-temp 17,\
set TH_Bad_HM desired-temp 17,\
set TH_DG desired 17)\
DOELSEIF ([13:00])\
(set TH_Kueche desired 19.5,\
set TH_Wz desired 20.5,\
set TH_Kz_w_HM desired-temp 21,\
set TH_Keller_HM desired-temp 20,\
set TH_DG desired 20)\
DOELSEIF ([17:00])\
(set TH_Bad_HM desired-temp 17)\
DOELSEIF ([20:00])\
(set TH_Kueche desired 17,\
set TH_Wz desired 19,\
set TH_Keller_HM desired-temp 17,\
set TH_Kz_w_HM desired-temp 17,\
set TH_Bad_HM desired-temp 17,\
set TH_DG desired 17)\
DOELSEIF ([23:00])\
(set TH_Kz_o_HM desired-temp 19)
attr di_Heizung room Heizung
setstate di_Heizung cmd_6
setstate di_Heizung 2017-09-18 17:00:00 cmd 6
setstate di_Heizung 2017-09-18 17:00:00 cmd_event timer_9
setstate di_Heizung 2017-09-18 17:00:00 cmd_nr 6
setstate di_Heizung 2017-09-18 17:00:00 state cmd_6
setstate di_Heizung 2017-09-18 04:30:00 timer_01_c01 19.09.2017 04:30:00|8
setstate di_Heizung 2017-09-18 05:00:00 timer_02_c01 19.09.2017 05:00:00|7
setstate di_Heizung 2017-09-18 05:00:00 timer_03_c02 19.09.2017 05:00:00|8
setstate di_Heizung 2017-09-18 06:00:00 timer_04_c02 19.09.2017 06:00:00|7
setstate di_Heizung 2017-09-18 05:35:00 timer_05_c03 19.09.2017 05:35:00|7
setstate di_Heizung 2017-09-18 08:00:00 timer_06_c04 19.09.2017 08:00:00|8
setstate di_Heizung 2017-09-18 09:00:00 timer_07_c04 19.09.2017 09:00:00|7
setstate di_Heizung 2017-09-18 13:00:00 timer_08_c05 19.09.2017 13:00:00
setstate di_Heizung 2017-09-18 17:00:00 timer_09_c06 19.09.2017 17:00:00
setstate di_Heizung 2017-09-17 20:00:00 timer_10_c07 18.09.2017 20:00:00
setstate di_Heizung 2017-09-17 23:00:00 timer_11_c08 18.09.2017 23:00:00
Hallo,
mache gerade was ähnliches. FTUI ist angehängt. Was momentan geht ist Automatic inkl. Nachtabsenkung und manuell. Aus und Boost fehlt noch. Darüber wollte ich dann nochmal eine Zentrale setzen die dann Party, Urlaub, ... steuert.
Status pro Raum zu definieren
Internals:
NAME Heizung.Status_BAD_EG
NR 367
STATE ???
TYPE dummy
READINGS:
2017-09-19 13:33:47 Boost off
2017-09-19 13:33:45 Frost on
2017-09-21 10:44:26 Heizung automatic
2017-09-11 16:09:31 Nacht 21:00
2017-09-19 13:33:52 Party on
2017-09-19 13:33:50 Sommer off
2017-09-11 16:07:33 Tag 04:30
2017-09-19 16:53:41 TempMan 23.0
2017-04-03 16:11:40 TempNacht 20.0
2017-09-19 15:45:29 TempTag 22.0
2017-09-19 13:33:43 Urlaub off
2017-09-19 13:33:49 abwesend off
Attributes:
readingList Boost Frost Heizung Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend
room Heizungsraum
setList Boost Frost Heizung Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend
useSetExtensions 1
Thermostat zum steuern des Stellmotors pro Raum
Internals:
NAME EinschaltTemp_BAD_EG
NR 312
STATE 22.0
TYPE dummy
READINGS:
2017-09-20 04:30:00 state 22.0
Attributes:
group Schalter
room Heizungsraum,Wohnzimmer
setList state:slider,15,0.5,25,1
sortby 5
webCmd state
DOIF für Vergleich eingestellte Temp mit realer Temp
Internals:
DEF ([Sensor_BAD_EG:temperature:d] < [EinschaltTemp_BAD_EG:state]) (set Heizung_BAD_EG on, setreading Heizung_BAD_EG stateColor #995c00) DOELSE (set Heizung_BAD_EG off, setreading Heizung_BAD_EG stateColor #112026)
NAME Program.Heizung_BAD_EG
NR 313
NTFY_ORDER 50-Program.Heizung_BAD_EG
STATE cmd_1
TYPE DOIF
Helper:
DBLOG:
cmd:
logdb:
TIME 1505997421.22745
VALUE 1
cmd_event:
logdb:
TIME 1505997421.22745
VALUE Sensor_BAD_EG
cmd_nr:
logdb:
TIME 1505997421.22745
VALUE 1
state:
logdb:
TIME 1505997421.22745
VALUE cmd_1
READINGS:
2017-09-21 14:37:01 Device Sensor_BAD_EG
2017-09-21 14:37:01 cmd 1
2017-09-21 14:37:01 cmd_event Sensor_BAD_EG
2017-09-21 14:37:01 cmd_nr 1
2017-09-20 04:30:00 e_EinschaltTemp_BAD_EG_state 22.0
2017-09-21 14:37:01 e_Sensor_BAD_EG_temperature 21.9 C
2017-09-21 14:37:01 state cmd_1
condition:
0 ReadingValDoIf($hash,'Sensor_BAD_EG','temperature','','d') < ReadingValDoIf($hash,'EinschaltTemp_BAD_EG','state')
devices:
0 Sensor_BAD_EG EinschaltTemp_BAD_EG
all Sensor_BAD_EG EinschaltTemp_BAD_EG
do:
0:
0 set Heizung_BAD_EG on, setreading Heizung_BAD_EG stateColor #995c00
1:
0 set Heizung_BAD_EG off, setreading Heizung_BAD_EG stateColor #112026
helper:
event temperature: 21.9 C
globalinit 1
last_timer 0
sleeptimer -1
timerdev Sensor_BAD_EG
timerevent temperature: 21.9 C
triggerDev Sensor_BAD_EG
timerevents:
temperature: 21.9 C
timereventsState:
temperature: 21.9 C
triggerEvents:
temperature: 21.9 C
triggerEventsState:
temperature: 21.9 C
internals:
itimer:
readings:
0 Sensor_BAD_EG:temperature EinschaltTemp_BAD_EG:state
all Sensor_BAD_EG:temperature EinschaltTemp_BAD_EG:state
regexp:
0:
all:
state:
STATE:
trigger:
Attributes:
room Heizungsraum
Nachtabsenkung und die verschiedenen Betriebsmodi (automatic und manuell momentan)
Internals:
DEF ([Heizung.Status_BAD_EG:Heizung] eq "automatic" and [[Heizung.Status_BAD_EG:Tag]-[ Heizung.Status_BAD_EG:Nacht]]) (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "automatic") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "manuell") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan])
NAME Steuerung.Heizung.BAD_EG
NR 387
NTFY_ORDER 50-Steuerung.Heizung.BAD_EG
STATE cmd_1
TYPE DOIF
READINGS:
2017-09-21 10:44:26 Device Heizung.Status_BAD_EG
2017-09-20 04:30:00 cmd 1
2017-09-20 04:30:00 cmd_event timer_1
2017-09-20 04:30:00 cmd_nr 1
2017-09-21 10:44:26 e_Heizung.Status_BAD_EG_Heizung automatic
2017-09-20 04:30:00 state cmd_1
2017-09-21 13:54:44 timer_01_c01 22.09.2017 04:30:00
2017-09-21 13:54:44 timer_02_c01 21.09.2017 21:00:00
2017-09-21 13:54:41 wait_timer no timer
condition:
0 ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "automatic" and DOIF_time($hash,0,1,$wday,$hms)
1 ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "automatic"
2 ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "manuell"
days:
devices:
0 Heizung.Status_BAD_EG
1 Heizung.Status_BAD_EG
2 Heizung.Status_BAD_EG
all Heizung.Status_BAD_EG
do:
0:
0 set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]
1:
0 set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht]
2:
0 set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan]
3:
helper:
globalinit 1
last_timer 2
sleeptimer -1
interval:
0 -1
1 0
itimer:
all Heizung.Status_BAD_EG
localtime:
0 1506047400
1 1506020400
readings:
0 Heizung.Status_BAD_EG:Heizung
1 Heizung.Status_BAD_EG:Heizung
2 Heizung.Status_BAD_EG:Heizung
all Heizung.Status_BAD_EG:Heizung
realtime:
0 04:30:00
1 21:00:00
regexp:
all:
state:
STATE:
time:
0 [Heizung.Status_BAD_EG:Tag]
1 [Heizung.Status_BAD_EG:Nacht]
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
triggertime:
1506020400:
localtime 1506020400
hash:
1506047400:
localtime 1506047400
hash:
Attributes:
room Heizungsraum
wait 3:3:3
Umschalten auf manuell
Internals:
DEF Heizung.Status_BAD_EG:TempMan.* set Heizung.Status_BAD_EG Heizung manuell
NAME Heizung_BAD_EG.man
NOTIFYDEV Heizung.Status_BAD_EG
NR 403
NTFY_ORDER 50-Heizung_BAD_EG.man
REGEXP Heizung.Status_BAD_EG:TempMan.*
STATE active
TYPE notify
READINGS:
2017-09-21 13:54:44 state active
Attributes:
room Heizungsraum
Setzt Nachts alles nochmal auf automatic
Internals:
DEF ([00:00]) (set Heizung.Status.* Heizung automatic)
NAME Heizung.auto
NR 408
NTFY_ORDER 50-Heizung.auto
STATE cmd_1
TYPE DOIF
READINGS:
2017-09-20 00:00:00 cmd 1
2017-09-20 00:00:00 cmd_event timer_1
2017-09-20 00:00:00 cmd_nr 1
2017-09-20 00:00:00 state cmd_1
2017-09-21 13:54:44 timer_01_c01 22.09.2017 00:00:00
condition:
0 DOIF_time_once($hash,0,$wday)
days:
devices:
do:
0:
0 set Heizung.Status.* Heizung automatic
1:
helper:
globalinit 1
last_timer 1
sleeptimer -1
itimer:
localtime:
0 1506031200
realtime:
0 00:00:00
regexp:
all:
state:
STATE:
time:
0 00:00:00
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1506031200:
localtime 1506031200
hash:
Attributes:
room Heizungsraum
Vielleicht hilft es jemandem!
Gruß
Eisix
Jetzt klappt es. Fragt mich aber nicht warum, ich musste das Auto in AUTO abändern.
Zeitlich sind bei dieser Programmierung recht fix. Flexibel wäre mir hier lieber.
Daher die Frage an Eisix wie dieses Popup funktioniert bzw. die cfg ausschaut. Gerne würde ich die Sache mit dem Urlaub so gestalten, dass ich neben Urlaub ein Datum eingeben kann, wann ich wieder da bin, damit der Heizung / Motoren schon 2 Tage früher wieder auf Auto schalten können. Hab es gestern gemerkt, dass 18,5 Grad doch kalt ist ;o) und die Fussbodenheizung bekanntlich 2 Tage braucht.
Ich nehme an du braust das Template für das Raumthermostat.
<header>par01</header>
<div class="container">
<div data-type="label"
data-device="par03"
data-get="temperature"
data-limits='["par24","par25","par26"]'
data-colors='["#6699FF","#21a000","#bb6242"]'
data-unit=" °C"
data-part="1"
class="great bold inline"
></div>
<br>
<div data-type="popup" data-width="450px" data-height="380px" class="inline">
<div data-type="symbol" data-icon="oa-edit_settings" class="inline"></div>
<div class="dialog" style="background-color:#112026">
<header class="large">Handbetrieb</header>
<br>
<div data-type="spinner"
data-device="par04"
data-get="par02"
data-set="par02"
data-icon-left-color="blue"
data-icon-right-color="red"
data-step="0.5"
data-min="10"
data-max="30"
data-unit="°"
class="valueonly center"
></div>
<br>
<br>
<header class="large">Heizungs-Automatik</header>
<br>
<div class="">
<div class="left">
<div data-type="spinner"
data-device="par04"
data-get="par05"
data-set="par05"
data-icon-left-color="blue"
data-icon-right-color="red"
data-step="0.5"
data-min="10"
data-max="30"
data-unit="°"
class="valueonly"
></div>
<br>
<div data-type="label" class="inline bigger" >Tag:</div>
<div data-type="datetimepicker"
data-device="par04"
data-get="par06"
data-set="par06"
data-step="5"
data-datepicker="false"
data-format="H:i"
class="inline bigger orange"
></div>
</div>
<div class="right">
<div data-type="spinner"
data-device="par04"
data-get="par07"
data-set="par07"
data-icon-left-color="blue"
data-icon-right-color="red"
data-step="0.5"
data-min="10"
data-max="30"
data-unit="°"
class="valueonly"
></div>
<br>
<div data-type="label" class="inline bigger" >Nacht:</div>
<div data-type="datetimepicker"
data-device="par04"
data-get="par08"
data-set="par08"
data-step="5"
data-datepicker="false"
data-format="H:i"
class="inline bigger orange"
></div>
</div>
</div>
<div class="">
<div class="inline">
<br>
<br>
<div data-type="checkbox"
data-device="par04"
data-get="par09"
data-set="par09"
class=""
></div>
<div data-type="label" class="" >Party</div>
</div>
<div class="inline">
<div data-type="checkbox"
data-device="par04"
data-get="par10"
data-set="par10"
class=""
></div>
<div data-type="label" class="" >Sommer</div>
</div>
<div class="inline">
<div data-type="checkbox"
data-device="par04"
data-get="par11"
data-set="par11"
class=""
></div>
<div data-type="label" class="" >abwesend</div>
</div>
<div class="inline">
<div data-type="checkbox"
data-device="par04"
data-get="par12"
data-set="par12"
class=""
></div>
<div data-type="label" class="" >Urlaub</div>
</div>
<div class="inline">
<div data-type="checkbox"
data-device="par04"
data-get="par13"
data-set="par13"
class=""
></div>
<div data-type="label" class="" >Frost</div>
</div>
<div class="inline">
<div data-type="checkbox"
data-device="par04"
data-get="par14"
data-set="par14"
class=""
></div>
<div data-type="label" class="" >Boost</div>
</div>
</div>
</div>
</div>
<div data-type="popup" data-width="750px" data-height="350px" class="inline">
<div data-type="symbol" data-icon="fa-area-chart" class="inline"></div>
<div class="dialog">
<header>TEMPERATURE</header>
<div data-type="chart"
data-logdevice='["par16","par17","par18"]'
data-columnspec='["par19","3:par20:1:$fld[2]=~\\x22off\\x22?0:1","par21"]'
data-style='["ftui l4","ftui l6","ftui l0fill"]'
data-ptype='["lines","cubic","lines"]'
data-uaxis='["primary","secondary","primary"]'
data-legend='["Soll-Temp","Stellantrieb","Ist-Temp"]'
data-yunit="°C"
data-yunit_sec="on"
data-ytext="Temperature"
data-ytext_sec="on-off"
data-minvalue="auto"
data-maxvalue="auto"
data-minvalue_sec="0"
data-maxvalue_sec="1"
data-height="300"
data-daysago_start="3"
data-daysago_end="-1"
data-crosshair="true"
data-cursorgroup="1"
data-scrollgroup="1"
data-showlegend="false"
data-yticks="auto"
data-yticks_sec='[[0,"off"],[1,"on"]]'
data-xticks="auto">
</div>
</div>
</div>
<div data-type="switch"
data-device="par04"
data-cmd="setreading"
data-get="par22"
data-set="par22"
data-states='["manuell","automatic","boost","off"]'
data-set-states='["automatic","boost","off","manuell"]'
data-icons='["oa-sani_heating_manual","oa-sani_heating_automatic","fs-sani_heating_boost","fs-general_aus"]'
data-colors='["#5EDAFF","#21a000","#FF5E5E","grey"]'
data-background-color="par23"
class="inline"
></div>
</li>
</div>
Wie muss ich das dann in der cfg einbinden bzw kann ich auch bei Urlaub ein Datum.mitgeben wo dem wieder auf Auto umspringt?
Hallo,
so werden die einzelnen Templates aufgerufen.
<li data-row="1" data-col="2" data-sizex="3" data-sizey="3"
data-template="templates/Thermostat.htm" data-parameter='{"par01":"WOHNZIMMER",
"par02":"TempMan",
"par03":"EnO_4BS_XXXXXXXX",
"par04":"Heizung.Status_WZ",
"par05":"TempTag",
"par06":"Tag",
"par07":"TempNacht",
"par08":"Nacht",
"par09":"Party",
"par10":"Sommer",
"par11":"abwesend",
"par12":"Urlaub",
"par13":"Frost",
"par14":"Boost",
"par15":"Heizung_WZ",
"par16":"FileLog_EinschaltTemp_WZ",
"par17":"FileLog_Heizung_WZ",
"par18":"FileLog_EnO_4BS_XXXXXXXX",
"par19":"3:EinschaltTemp_WZ",
"par20":"Heizung_WZ",
"par21":"4:temperature",
"par22":"Heizung",
"par23":"Heizung_WZ:stateColor",
"par24":"19",
"par25":"21",
"par26":"24"
}'
></li>
Zum besseren Verständnis, die jeweiligen checkboxen ( Frost, Sommer, Urlaub,...) stellen den gewünschten Zustand bei der jeweiligen globalen Einstellung dar. Also bei z.B. Frost an oder Urlaub aus.
Mit datetimepicker kannst du auch eine Auswahl für Datum erstellen. Habe ich bis jetzt noch nicht implementiert.
https://wiki.fhem.de/wiki/FTUI_Beispiel_Datetimepicker_f%C3%BCr_Timer
Gruß
Eisix
Ich glaube nicht dass du eine FBH über ein TRESHOLD modul oder über Raumtemperatur steuern kannst. Dafür ist diese viel zu träge. Ein und Ausschalten ja, aber nicht die Raumtemperatur. Dafür benötigst du eine PID Regelung. Das Modul PWM/PWMR z.b. Ist dafür hervorragend geeignet.
Sent from my iPad using Tapatalk
Hallo schka17,
ich glaube meine FBH ist auch für PWM/PWMR zu träge. Grundsätzlich sind die Systeme zu individuell um eine globale Aussage über FBH zu treffen.
Kurz mal die Eckdaten meiner FBH: 14 Jahre, Erdwärme ohne Zuheizer, Außenfühler, Drehthermostat in jedem Raum.
Steuerung bisher:
Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht eh schon auf max)
Ich: gehe in den Keller und drehe die Vorlauftemperatur um 1C hoch
Bedeutet ich reguliere das ganze Haus direkt an der Heizung.
Steuerung jetzt:
Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht immer noch auf max)
Ich: Mache das Tablet an und stelle in Fhem 0,5C hoch
Dauert dann natürlich trotzdem Stunden bis das ganze fühlbar ist.
Vielleicht schaffe ich es noch das Sie selbst das ganze hoch regelt :)
Außerdem kann ich jetzt die Nachtabsenkung pro Raum einzeln einstellen. Wobei bei der Trägheit eine Nachtabsenkung für die Haupträume fast keinen Sinn macht. Das sehe ich aber auch erst seit ich das ganze in Fhem mache.
Gruß
Eisix
Hallo Eisix,
kannst du eine komplette define für deine Bad-Heizungssteuerung bereit stellen incl.
Sensor und Schalter ??
Zitat von: Eisix am 10 Oktober 2017, 11:32:43
Hallo schka17,
ich glaube meine FBH ist auch für PWM/PWMR zu träge. Grundsätzlich sind die Systeme zu individuell um eine globale Aussage über FBH zu treffen.
Kurz mal die Eckdaten meiner FBH: 14 Jahre, Erdwärme ohne Zuheizer, Außenfühler, Drehthermostat in jedem Raum.
Steuerung bisher:
Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht eh schon auf max)
Ich: gehe in den Keller und drehe die Vorlauftemperatur um 1C hoch
Bedeutet ich reguliere das ganze Haus direkt an der Heizung.
Steuerung jetzt:
Frau: "Das Wohnzimmer wird nicht richtig warm" (Drehthermostat steht immer noch auf max)
Ich: Mache das Tablet an und stelle in Fhem 0,5C hoch
Dauert dann natürlich trotzdem Stunden bis das ganze fühlbar ist.
Vielleicht schaffe ich es noch das Sie selbst das ganze hoch regelt :)
Außerdem kann ich jetzt die Nachtabsenkung pro Raum einzeln einstellen. Wobei bei der Trägheit eine Nachtabsenkung für die Haupträume fast keinen Sinn macht. Das sehe ich aber auch erst seit ich das ganze in Fhem mache.
Gruß
Eisix
Hallo Eisix,
Klar ist jede Anlage individuell, das schöne an PWMR ist ja das man die PID parameter individuell anpassen kann. Mein FBH ist 20 Jahre alt, letztes Jahr ein neues Brennwert Gerät und die Steuerung auf Einzelraumsteuerung mit Homematic, PWMR und Steuerventile für meine Kreise installiert. Funktioniert perfekt, jetzt kann ich das erste Mal in der Früh ins warme Badezimmer das dann bis abends wieder abgesenkt wird. Zur Unterstützung bei der Einstellung der PID parameter habe ich noch ein paar 1-wire sensoren für VL und RL der einzelnen Kreise montiert, ich hab da gar nicht viel herumprobieren müssen, nach zwei Wochen lief es und seither habe ich da nicht mehr hingegriffen.
Sent from my iPad using Tapatalk
@Ingo298
Die ganzen Steuerungssachen und FTUI stehen auf der 1 Seite. Verstehe nicht ganz was die meine Sensoren und Schalter bringen sollen wenn du nicht zufällig die gleichen nutzt. Meine Heizungsventile steuere ich über NodOn EnOcean und die Sensoren sind Eltako EnOcean oder Fibaro Zwave.
Wo genau kann ich dir helfen?
@schka17
Mit dem Brennwert Gerät sollte das perfekt funktionieren da stimme ich dir zu. Du hast dadurch sozusagen immer bei Bedarf Dampf auf dem Kessel. Da sollte das PWM Modul gut optimieren. Bei mir ist durch die Erdbohrung die Verfügbarkeit der Energie wesentlich geringer was ich über die Laufzeit dann ausgleichen muss. Das geht bei extremen Minustemperaturen soweit das meine WP praktisch permanent läuft (abgesehen von Abtauzyklen). Bis jetzt wurde es aber immer noch warm genug und ich bin sehr zufrieden mit der Heizung. Man bastelt halt gerne und man ist bequem, Fhem abhängig wie wir alle!
Gruß
Eisix
@Ingo298
Die ganzen Steuerungssachen und FTUI stehen auf der 1 Seite. Verstehe nicht ganz was die meine Sensoren und Schalter bringen sollen wenn du nicht zufällig die gleichen nutzt. Meine Heizungsventile steuere ich über NodOn EnOcean und die Sensoren sind Eltako EnOcean oder Fibaro Zwave.
Du benutzt pro Raum einen Aktor (NodOn EnOcean) um das Stellventil ein und aus zuschalten, ein Wandthermostat (was für eins) um die Raumthemeratur zu messen?
Steuerung wie auf Seite 1 beschrieben und das für jeden Raum das wars?
Hallo,
pro Raum nutze ich einen Kanal von einem NodOn - EnOcean In-Wall Module 2*1kW mit dem ich das Stellventil ein/aus schalte. War bei meinen Gegebenheiten für mich die billigste Variante. Im Forum findest du aber diverse andere auch billigere Arten sowas zu realisieren. Das Wandthermostat ist bei mir sozusagen historisch vorhanden(simples Drehthermostat), habe ich aber auch auf den Eingang des Aktors gelegt.
Bei der Messung der Raumtemperatur war ich bis jetzt nicht besonders wählerisch z.B. Fibaro Rauchmelder haben ein Thermometer, Fibaro Motion Sensor, Eltako FBH65TFB oder Eltako FIFT63AP. Du kannst auch ein Wandthermostat nehmen je nachdem welche Protokolle du über Fhem empfangen kannst und wieviel Geld du ausgeben willst.
Die einfachste Variante ist pro Raum
( [RaumTemp:temperature:d] < Wunschtemperatur) (set Heizung on) DOELSE (set Heizung off)
alles andere ist mehr Komfort.
Ob das für deine Gegebenheiten reicht weiss ich nicht. Mein System ist so träge das es funktioniert. Eine Heizung mit einer Gastherme oder eine Ölheizung würde ich so nicht betreiben. Auch solltest du die Elektroarbeiten von jemandem machen lassen der sich damit auskennt.
Gruß
Eisix
Genau den Komfort möchte ich gern haben, ich habe es ersteinmal soweit wi du übernommen entsprechnet eben mit meinen Aktor bzw. Temp-Sensor.
Im log habe ich jetzt folgende Meldung
Bad_temp return value: Unknown argument 22.9, choose one of Boost:on,off Frost:in,off Heizung:automatic,manuell Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend
für was ist das ":d"
[RaumTemp:temperature:d]
Hallo,
mein Sensor hat z.B. 22.9 °C im reading. :d nimmt dann nur die Zahl 22.9 sonst funktioniert "[RaumTemp:temperature:d] < Wunschtemperatur" nicht. Wenn bei dir nur die Zahl drin steht brauchst du es nicht.
Bzgl. deines Log Eintrags ist das nur damit schwierig zu sagen. Sieht so aus als wolltest die die Temperatur in den Status der Heizung setzen aber wie gesagt mit nur dem Log Eintrag schwer zu sagen.
Gruß
Eisix
Fehler gefunden, richtig ich wollte die die Temperatur in den Status der Heizung setzen geht aber nicht
habe den dummy noch erweitert um in mit dem HomeKit zu steueren
define Heizung.Status_BAD_EG dummy
attr Heizung.Status_BAD_EG genericDeviceType thermostat
attr Heizung.Status_BAD_EG group Bad
attr Heizung.Status_BAD_EG homebridgeMapping TargetTemperature=TempMan::TempMan,minValue=5,maxValue=30,minStep=0.5,nocache=1\
CurrentTemperature=Temp_Bad:temperature,nocache=1
attr Heizung.Status_BAD_EG readingList Boost Frost Heizung Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend
attr Heizung.Status_BAD_EG room Heizung_Test,Homekit
attr Heizung.Status_BAD_EG setList Boost Frost Heizung Nacht Party Sommer Tag TempMan TempNacht TempTag Urlaub abwesend
attr Heizung.Status_BAD_EG useSetExtensions 1
evtl kann einer noch das Ein- und Ausschalten der automatic dazu machen
Guten Morgen,
ich habe jetzt mal alles wie Eisix übernommen, leider bleibt immer der Tag Modus aktiv.
Internals:
CHANGED
DEF ([Heizung.Status_BAD_EG:Heizung] eq "automatic" and [[Heizung.Status_BAD_EG:Tag]-[ Heizung.Status_BAD_EG:Nacht]]) (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "automatic") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "manuell") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan])
NAME Steuerung.Heizung.BAD_EG
NR 278
NTFY_ORDER 50-Steuerung.Heizung.BAD_EG
STATE cmd_1
TYPE DOIF
READINGS:
2017-10-26 06:09:46 Device Heizung.Status_BAD_EG
2017-10-26 06:15:00 cmd 1
2017-10-26 06:15:00 cmd_event timer_1
2017-10-26 06:15:00 cmd_nr 1
2017-10-26 06:09:46 e_Heizung.Status_BAD_EG_Heizung automatic
2017-10-25 19:37:01 mode enable
2017-10-26 06:15:00 state cmd_1
2017-10-26 06:09:46 timer_01_c01 26.10.2017 06:15:00
2017-10-25 23:36:26 timer_02_c01 26.10.2017 16:00:00
2017-10-25 23:36:24 wait_timer no timer
condition:
0 ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "automatic" and DOIF_time($hash,0,1,$wday,$hms)
1 ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "automatic"
2 ReadingValDoIf($hash,'Heizung.Status_BAD_EG','Heizung') eq "manuell"
days:
devices:
0 Heizung.Status_BAD_EG
1 Heizung.Status_BAD_EG
2 Heizung.Status_BAD_EG
all Heizung.Status_BAD_EG
do:
0:
0 set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]
1:
0 set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht]
2:
0 set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan]
3:
helper:
event timer_1
globalinit 1
last_timer 2
sleeptimer -1
timerdev
timerevent timer_1
triggerDev
timerevents:
timer_1
timereventsState:
Tag: 06:15
triggerEvents:
timer_1
triggerEventsState:
Tag: 06:15
internals:
interval:
0 -1
1 0
itimer:
all Heizung.Status_BAD_EG
localtime:
0 1508991300
1 1509026400
readings:
0 Heizung.Status_BAD_EG:Heizung
1 Heizung.Status_BAD_EG:Heizung
2 Heizung.Status_BAD_EG:Heizung
all Heizung.Status_BAD_EG:Heizung
realtime:
0 06:15:00
1 16:00:00
regexp:
0:
1:
all:
state:
STATE:
time:
0 [Heizung.Status_BAD_EG:Tag]
1 [Heizung.Status_BAD_EG:Nacht]
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
triggertime:
1509026400:
localtime 1509026400
hash:
Attributes:
DbLogExclude .*
group Bad
room Heizung_Test
wait 3:3:3
müsste er nicht jetzt den timer_01_c01 schon auf morgen setzen, was habe ich falsch gemacht?
Hallo,
ist mir gestern auch aufgefallen. Liegt am DOIF.
([Heizung.Status_BAD_EG:Heizung] eq "automatic" and [[Heizung.Status_BAD_EG:Tag]-[ Heizung.Status_BAD_EG:Nacht]]) (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempTag]) DOELSEIF ([Heizung.Status_BAD_EG:Heizung] eq "manuell") (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempMan]) DOELSE (set EinschaltTemp_BAD_EG [Heizung.Status_BAD_EG:TempNacht])
So funktioniert es.
Gruß
Eisix
Bis vor einer Woche hat alles geklappt. Beim Unterschreiten 21.5 mach die FHZ auf und bei 22.5 macht der Stellmotor zu. Jetzt fährt der Motor zwar morgens auf aber ist die 22.5 erreicht macht fhem gar nicths mehr
define HM_531770_Sw_01.Auto DOIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 21.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 22.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 17.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 19.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] < 17.5) (set HM_531770_Sw_01 on) \
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] > 19.5) (set HM_531770_Sw_01 off)
attr HM_531770_Sw_01.Auto group Schaltaktoren
attr HM_531770_Sw_01.Auto room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01.Auto sortby 02
attr HM_531770_Sw_01.Auto wait 0:3600
In den Readings von HM_531770_Sw_01.Auto steht...
Readings
Device
WZ.LaCrosse
2017-11-20 19:29:05
cmd
1
2017-11-20 04:15:00
cmd_event
timer_1
2017-11-20 04:15:00
cmd_nr
1
2017-11-20 04:15:00
e_GT.LaCrosse_temperature
17.4
2017-09-07 19:22:52
e_Modus_FHZ_STATE
Auto
2017-10-24 21:22:23
e_WZ.LaCrosse_temperature
22.8
2017-11-20 19:29:05
state
cmd_1
2017-11-20 04:15:00
Stimmen Datum und Uhrzeit bei den Timern?
Auf welchem cmd steht das DOIF?
Gruß
Eisix
define HM_5316F7_Sw_02.Auto DOIF ([Modus_FHZ] eq "Auto" and ([04:15-18:30] and [KZ.LaCrosse:temperature] < 21.0)) (set HM_5316F7_Sw_02 on) \
DOELSEIF ([Modus_FHZ] eq "Auto" and ([04:15-18:30] and [KZ.LaCrosse:temperature] > 22.5)) (set HM_5316F7_Sw_02 off) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-18:30] and [KZ.LaCrosse:temperature] < 17.5)) (set HM_5316F7_Sw_02 on) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-18:30] and [KZ.LaCrosse:temperature] > 19.5)) (set HM_5316F7_Sw_02 off) \
DOELSEIF ([19:30-04:00] and [KZ.LaCrosse:temperature] < 17.5) (set HM_5316F7_Sw_02 on) \
DOELSEIF ([19:30-04:00] and [KZ.LaCrosse:temperature] > 19.5) (set HM_5316F7_Sw_02 off)
attr HM_5316F7_Sw_02.Auto group Schaltaktoren
attr HM_5316F7_Sw_02.Auto room CUL_HM,Kinderzimmer
attr HM_5316F7_Sw_02.Auto sortby 02
attr HM_5316F7_Sw_02.Auto wait 0:3600
Momentan zeigt die Temperatur 20.8 an und der Stellmotor ist aus, obwohl er eingeschaltet sein müsste.
HM_5316F7_Sw_02.Auto steht in fhem auf initialize und timer_01_c01 4:15 22.11. und timer_02_c01 auf 18:30 22.11 Timer stimmen alle. DOIF steht auf cmd_2
Eventuell fehlt das event das ein Umschalten auslöst. Wie verhält sich der Temperatursensor. Sendet er nur bei Temperaturänderung oder auch in bestimmten Zeitabständen?
Zum debuggen kannst auch mit setreading den Temperaturwert manuell setzen und dann sehen was passiert.
setreading KZ.LaCrosse temperature 20.0
setreading KZ.LaCrosse temperature 23.0
Aber nimm besser den wait vorher raus.
Gruß
Eisix
Ich habe am Wochenende mal das Wohnzimmer gecheckt. Ich habe den Stellmotor mal händisch abgeschalten. 4:15 hat fhem diesen wieder eingeschalten. Aber nachdem die Temperatur bei 22.5 war, wurde dieser von fhem nicht abgeschalten. Selbst bei 23.5 tat sich nichts.
#
# Wohnzimmer - Heizungregelung (Automatik- / Urlaubsmodus)
#
define HM_531770_Sw_01.Auto DOIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 21.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 22.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 18.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 19.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] < 19.5) (set HM_531770_Sw_01 on) \
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] > 20.5) (set HM_531770_Sw_01 off)
attr HM_531770_Sw_01.Auto group Schaltaktoren
attr HM_531770_Sw_01.Auto room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01.Auto sortby 02
attr HM_531770_Sw_01.Auto wait 0:3600
#
# Wohnzimmer - Heizungregelung (Sommermodus)
#
define HM_531770_Sw_01.Off DOIF ([Modus_FHZ] eq "AUS") (set HM_531770_Sw_01.Auto disable) DOELSEIF ([Modus_FHZ] ne "AUS") (set HM_531770_Sw_01.Auto initialize)
attr HM_531770_Sw_01.Off group Schaltaktoren
attr HM_531770_Sw_01.Off room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01.Off sortby 03
Badezimmer hingegen klappt. Ich kann aber auch keinen Unterschied außer die MotorId selbst im Code erkennen.
#
# Badezimmer - Heizungregelung (Automatik- / Urlaubsmodus)
#
define HM_5316F7_Sw_01.Auto DOIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [BZ.LaCrosse:temperature] < 21.5)) (set HM_5316F7_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [BZ.LaCrosse:temperature] > 22.5)) (set HM_5316F7_Sw_01 off) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [BZ.LaCrosse:temperature] < 18.5)) (set HM_5316F7_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [BZ.LaCrosse:temperature] > 19.5)) (set HM_5316F7_Sw_01 off) \
DOELSEIF ([22:00-04:00] and [BZ.LaCrosse:temperature] < 20.5) (set HM_5316F7_Sw_01 on) \
DOELSEIF ([22:00-04:00] and [BZ.LaCrosse:temperature] > 21.0) (set HM_5316F7_Sw_01 off)
attr HM_5316F7_Sw_01.Auto group Schaltaktoren
attr HM_5316F7_Sw_01.Auto room CUL_HM,Badezimmer
attr HM_5316F7_Sw_01.Auto sortby 02
attr HM_5316F7_Sw_01.Auto wait 0:3600
#
# Badezimmer - Heizungregelung (Sommermodus)
#
define HM_5316F7_Sw_01.Off DOIF ([Modus_FHZ] eq "AUS") (set HM_5316F7_Sw_01.Auto disable) DOELSEIF ([Modus_FHZ] ne "AUS") (set HM_5316F7_Sw_01.Auto initialize)
attr HM_5316F7_Sw_01.Off group Schaltaktoren
attr HM_5316F7_Sw_01.Off room CUL_HM,Badezimmer
attr HM_5316F7_Sw_01.Off sortby 03
Ist mir ein Rätsel.
Ein "list" vom DOIF, wenn er sich in einem falschen Zustand befindet, ist immer hilfreich, um zu gucken, was geschaltet hat.
M.M.n. fehlt in deinem DOIF ein leeres DOELSE.
Wenn dein DOIF auf cmd_2 steht hat Fhem ja korrekt reagiert und du müßtest den Schaltvorgang im Log finden. Was wiederum bedeuten würde dein Schaltkommando wird nicht oder nicht immer an deinen Stellmotor übertragen.
Den Fall hatte ich auch schon allerdings mit einem Zwave Zwischenstecker in einer Hausecke. Habe keine HM Komponenten aber da gibt es doch bestimmt auch sowas wie einen Repeater um testweise die Reichweite zu verbessern?
Wie schon geschrieben teste mit dem setzen der Raumtemperatur und schau dir das log an.
Gruß
Eisix
In den Probably steht...
HM_531770_Sw_01.Auto
cmd_1
DOIF
HM_531770_Sw_01.Off
cmd_2
DOIF
Fürs Kinderzimmer (derzeit off), was funktioniert steht jetzt...
HM_5316F7_Sw_02.Auto
cmd_6
DOIF
HM_5316F7_Sw_02.Off
cmd_2
DOIF
Ich kann nur empfehlen nicht alles in ein DOIF zu packen, wenn man es modular aufbauen kann.
Bei mir läuft seit Jahren unsere Fußbodenheizung mit einem DOIF für das zeitabhängige Setzen der Vorgabetemperatur für jedes Zimmer und eine Zweipunktregelung für jedes Zimmer per THRESHOLD bei 1-wire bzw. direkt gepairt bei HM.
Diese Lösung lässt sich wesentlich einfacher pflegen und visualisieren. Einige Zimmer laufen noch mit 1-wire und einige über HM. Das DOIF konnte weitgehend erhalten bleiben.
Das Ergebnis von
list HM_5316F7_Sw_01.Auto
in "code" Blöcken (Symbol # im Editor) wäre trotzdem interessant...