[gelöst] Modbus Urlaubssteuerung Heizung

Begonnen von hugo, 17 April 2024, 22:15:11

Vorheriges Thema - Nächstes Thema

hugo

Hallo zusammen,
ich wollte meine Urlaubssteuerung der Heizung etwas smarter machen, momentan geht sie nur in den Absenkbetrieb.
Da ich eine Thermosolaranlage auf dem Dach habe, war meine Überlegung die erzeugte Wärme auch in der Urlaubszeit zum Heizen der FBH nutzen, falls genügend Wärme im Puffer vorhanden ist.
Die Steuerung erfolgt über Modbus. Leider funktioniert das untenstehende DoIf nur teilweise. Es wird immer nur ein Befehl des Blocks ausgeführt, obwohl die sets einzeln ausgeführt, alle funktionieren. Ich habe auch schon mit "wait getestet ohne Erfolg.

Hat jemand eine Idee?

defmod di.UrlaubHeizung DOIF
([ETA_PU15_Modbus:ETA_Kollektorpumpe] eq "Ein" and
 [ETA_PU15_Modbus:ETA_Puffer_Unten] > 35 and
 [urlaub:tomorrow] ne "none"
)
(
    (set ETA_PU15_Modbus ETA_FBH_ein Ein)
    (set ETA_PU15_Modbus ETA_Taste_Heizen Ein)
    (set ETA_PU15_Modbus ETA_Temp_Schieber 900)
)   
DOELSEIF
([ETA_PU15_Modbus.ETA_FBH_ein] eq "Ein" and
 [ETA_PU15_Modbus:ETA_Puffer_Unten] < 33
 [urlaub:tomorrow] ne "none"
)
(
    (set ETA_PU15_Modbus ETA_FBH_ein Aus)
    (set ETA_PU15_Modbus ETA_Taste_Absenken Ein)
    (set ETA_PU15_Modbus ETA_Temp_Schieber 100)
)   
DOELSEIF
([urlaub:tomorrow] eq "none" and
 [urlaub:today] ne "none"
)
(
    (set ETA_PU15_Modbus ETA_Kessel_ein Ein)
    (set ETA_PU15_Modbus.ETA_FBH_ein Ein)
    (set ETA_PU15_Modbus.ETA_Taste_Auto Ein)
)   

Gruß Josef
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;

Damian

Du solltest die Befehle mit Komma oder Semikolon trennen, wenn du keine zusätzliche Verzögerung zwischen den Befehlen brauchst:

...(set ETA_PU15_Modbus ETA_FBH_ein Ein, set ETA_PU15_Modbus ETA_Taste_Heizen Ein, set ETA_PU15_Modbus ETA_Temp_Schieber 900)...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

hugo

Hallo Damian,
Danke für die Antwort. Habe mein DoIf jetzt mit abgespeckter Version erstmal am laufen. Mit deiner Version von Befehlsausführung.

Nach langen testen habe ich folgendes festgestellt, dass es beim sendnen auf die Reihenfolge und einem größeren Zeitlichen Abstand an kommt.

Also bis jetzt funktioniert es mit dem Wait.


define di.UrlaubHeizung DOIF ([ETA_PU15_Modbus:ETA_Kollektorpumpe] eq "Ein" and\
 [ETA_PU15_Modbus:ETA_Puffer_Unten] > 30 and \
 [urlaub:tomorrow] ne "none"\
)\
 (\
  set ETA_PU15_Modbus ETA_FBH_ein Ein, \
  set ETA_PU15_Modbus ETA_Taste_Heizen Ein)\
DOELSEIF\
([ETA_PU15_Modbus.ETA_FBH_ein] eq "Ein" and \
 [ETA_PU15_Modbus:ETA_Puffer_Unten] < 50 and\
 [urlaub:tomorrow] ne "none"\
)\
(\
 set ETA_PU15_Modbus ETA_Taste_Absenken Ein,\
 set ETA_PU15_Modbus ETA_FBH_ein Aus\
)\

attr di.UrlaubHeizung DbLogExclude .*
attr di.UrlaubHeizung disable 1
attr di.UrlaubHeizung wait 0,120:0,120
#   DEF        ([ETA_PU15_Modbus:ETA_Kollektorpumpe] eq "Ein" and
# [ETA_PU15_Modbus:ETA_Puffer_Unten] > 30 and
# [urlaub:tomorrow] ne "none"
#)
# (
#  set ETA_PU15_Modbus ETA_FBH_ein Ein,
#  set ETA_PU15_Modbus ETA_Taste_Heizen Ein)
#DOELSEIF
#([ETA_PU15_Modbus.ETA_FBH_ein] eq "Ein" and
# [ETA_PU15_Modbus:ETA_Puffer_Unten] < 50 and
# [urlaub:tomorrow] ne "none"
#)
#(
# set ETA_PU15_Modbus ETA_Taste_Absenken Ein,
# set ETA_PU15_Modbus ETA_FBH_ein Aus
#)
#
#   FUUID      66058372-f33f-046a-0942-c83b06b5b6350d6c
#   MODEL      FHEM
#   NAME       di.UrlaubHeizung
#   NOTIFYDEV  global
#   NR         94
#   NTFY_ORDER 50-di.UrlaubHeizung
#   STATE      deactivated
#   TYPE       DOIF
#   VERSION    27740 2023-07-10 09:31:11
#   disableNotifyFn 1
#   eventCount 42
#   READINGS:
#     2024-04-24 16:33:13   mode            deactivated
#     2024-04-24 16:33:13   state           deactivated
#   Regex:
#   attr:
#     cmdState:
#     wait:
#       0:
#         0
#         120
#       1:
#         0
#         120
#     waitdel:
#   condition:
#   do:
#     0:
#   helper:
#     NOTIFYDEV  global
#   uiState:
#   uiTable:
#
setstate di.UrlaubHeizung deactivated
setstate di.UrlaubHeizung 2024-04-24 16:33:13 mode deactivated
setstate di.UrlaubHeizung 2024-04-24 16:33:13 state deactivated

Gruß Josef
Raspi 3 mit CUL HM-MOD-UART; nanoCUL
Homematic: HM-SEC-SCo 5x;HM-LC-SW1-BA-PCB 3x;HM-Dis-EP-WM55; HM-LC-SW4-PCB; ARLO;
Somfy RTS Rollo 14x; Alexa; GardenaSmartDevice; Stromzähler(GPIO); shelly1; shelly2.5;Wasserzähler(GPIO);Brennerstuhlsteckdosen;