Hauptmenü

Fussbodenheizung via FHEM

Begonnen von en-trust, 05 September 2017, 07:51:44

Vorheriges Thema - Nächstes Thema

en-trust

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'")}

amenomade

Soll er an bleiben, wenn [GT.LaCrosse:temperature] < 15 und [WZ.LaCrosse:temperature] geht über 21.5 durch die Heizung?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

en-trust

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.

amenomade

Trotzdem hast Du keine Bedingung für "[GT.LaCrosse:temperature] < 15 und [WZ.LaCrosse:temperature] geht über 21.5" oder sehe ich das falsch?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

en-trust

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)
...

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

FNT

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

en-trust

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.

Rolfg

Vielleicht nur auf die Temperaturen triggern und die anderen mit [? 22.00 usw. Und mit der höchsten beginnen.
Gruß Rolf

Rolfg

Und vielleicht atribut doalways. Bin ich mir aber nicht sicher.
Gruß Rolf

amenomade

Poste mal ein "list HM_531770_Sw_01.Auto" bitte
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

en-trust

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

Damian

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




Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Eisix

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

en-trust

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.

Eisix

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>


en-trust

Wie muss ich das dann in der cfg einbinden bzw kann ich auch bei Urlaub ein Datum.mitgeben wo dem wieder auf Auto umspringt?

Eisix

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

schka17

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
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

Eisix

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

Ingo298

Hallo Eisix,

kannst du eine komplette define für deine Bad-Heizungssteuerung bereit stellen incl.
Sensor und Schalter  ??
RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT

schka17

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
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

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.
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

@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?

RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT

Eisix

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

Ingo298

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]
RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT

Eisix

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

Ingo298

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
RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT

Ingo298

#28
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?
RPi4 8GB: Buster FHEM 6.3, FTUI-3, AMAD,10.1" Tablet; MiLight;IT;HM;Dect200;VZLogger;MQTT

Eisix

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

en-trust

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

Eisix

Stimmen Datum und Uhrzeit bei den Timern?
Auf welchem cmd steht das DOIF?

Gruß
Eisix

en-trust

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

Eisix

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

en-trust

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.

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Eisix

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

en-trust

#37
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

Damian

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.



Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Happy Fhem User

Das Ergebnis von

list HM_5316F7_Sw_01.Auto

in "code" Blöcken (Symbol # im Editor) wäre trotzdem interessant...