DOIF funktioniert nur ab und an

Begonnen von MichaTbh, 14 September 2018, 21:58:39

Vorheriges Thema - Nächstes Thema

MichaTbh

Hallo Gemeinde,

ich habe da ein Problem welches ich schon ca. 2 Stunden lang googel.
Und zwar funktionieren meine DOIF´s für die Regelung von meinem Heizkessel nur sporadisch.
Mal schaltet er den Brenner nicht ein und ein anderes mal vergisst er die Brauchwasserpumpe zu steuern.
Wenn ich es manuell anstoße, also in der Timer Zeit den Brenner anschalte läuft alles einwandfrei aber das ist ja fern des Begriffs "Automation"

Hier meine fhem.cfg:
define Brauchwasser DOIF ([GPIO4_DS1820_000802e71903:temperature] > 55 and [Schalter_Brauchwasser] eq "on")(set Relais_Badheizung on)DOELSE (set Relais_Badheizung off)
attr Brauchwasser devStateIcon cmd_2:FS20.off cmd_1:FS20.on
attr Brauchwasser room DELETE
define Brenner_Brauchwasser DOIF ([GPIO4_DS1820_000802e71903:temperature] > 70)(set Test2 off)\
DOELSEIF ([GPIO4_DS1820_000802e71903:temperature] < 60)(set Test2 on)
attr Brenner_Brauchwasser devStateIcon disabled:taster_ch_aus_rot cmd_1:FS20.off cmd_2:FS20.on
attr Brenner_Brauchwasser room DELETE
define Schalter_Brauchwasser dummy
attr Schalter_Brauchwasser room Ölheizung
attr Schalter_Brauchwasser webCmd on:off
define Brauchwasser_uhr DOIF ([Schalter_Brauchwasser:state] eq "on" and [Warmwasser:temperature] < 60)(set Brenner_Brauchwasser enable)DOELSE (set Test2 off)
attr Brauchwasser_uhr room DELETE
define Abschalten DOIF ([Schalter_Brauchwasser:state] eq "off")(set Brenner_Brauchwasser disable)DOELSE (set Brenner_Brauchwasser enable)
attr Abschalten room DELETE
define Brauchwasser_abschalten DOIF ([Warmwasser:temperature] > 60)(set Schalter_Brauchwasser off)
attr Brauchwasser_abschalten room DELETE
define Brauchwasser_Steuerung DOIF ([Schalter_Brauchwasser:state] eq "on" and [Warmwasser:temperature] < 60)(set BW_Brenner_Steuerung enable)DOELSE(set BW_Brenner_Steuerung disable)\
DOELSEIF\
([GPIO4_DS1820_000802e71903:temperature] > 55 and [Schalter_Brauchwasser] eq "on")(set Relais_Badheizung on)DOELSE(set Relais_Badheizung off)\
DOELSEIF\
([Warmwasser:temperature] > 60)(set Schalter_Brauchwasser off)
attr Brauchwasser_Steuerung room Ölheizung
define Zeitschaltuhr_BWasser DOIF (([21:35-22:00]) and [Warmwasser:temperature] < 60)(set Brauchwasser_Steuerung enable, set Schalter_Brauchwasser on)DOELSE(set Brauchwasser_Steuerung disable, set Schalter_Brauchwasser off)
attr Zeitschaltuhr_BWasser room Ölheizung
define BW_Brenner_Steuerung DOIF ([GPIO4_DS1820_000802e71903:temperature] < 60)(set Test2 on)DOELSE(set Test2 off)
attr BW_Brenner_Steuerung room Ölheizung


- GPIO4_DS1820_000802e71903 ist der Kessel
- Relais_Badheizung ist die Brauchwasser Ladepumpe

Vielleicht entdeckt ihr ja einen Fehler den ich übersehen habe. Im Logfile steht nichts drin außer das FHEM gestartet ist.

Vielen Dank für eure Hilfe.

Gruß Micha

Frank_Huber

Am besten postet Du mal ein List des DOIF vom Fehlerfall.
Daran sieht man deutlich mehr als an den defines...

Gesendet von meinem Doogee S60 mit Tapatalk


MichaTbh

#2
Hallo,

hier die Ausgabe von List für die Brenner Steuerung.
Internals:
   DEF        ([Schalter_Brauchwasser] eq "on" and [GPIO4_DS1820_000802e71903:temperature] < 70)(set Test2 on)DOELSE(set Test2 off)
   NAME       BW_Brenner_Steuerung
   NR         52
   NTFY_ORDER 50-BW_Brenner_Steuerung
   STATE      disabled
   TYPE       DOIF
   Readings:
     2018-09-14 22:51:53   Device          GPIO4_DS1820_000802e71903
     2018-09-14 22:47:50   cmd             2
     2018-09-14 22:47:50   cmd_event       GPIO4_DS1820_000802e71903
     2018-09-14 22:47:50   cmd_nr          2
     2018-09-14 22:51:53   e_GPIO4_DS1820_000802e71903_temperature 73.25
     2018-09-15 21:00:00   mode            enable
     2018-09-15 21:00:00   state           disabled
   Condition:
     0          InternalDoIf($hash,'Schalter_Brauchwasser','STATE') eq "on" and ReadingValDoIf($hash,'GPIO4_DS1820_000802e71903','temperature') < 70
   Devices:
     0           Schalter_Brauchwasser GPIO4_DS1820_000802e71903
     all         Schalter_Brauchwasser GPIO4_DS1820_000802e71903
   Do:
     0:
       0          set Test2 on
     1:
       0          set Test2 off
   Helper:
     event      T: 73.25,temperature: 73.25
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   GPIO4_DS1820_000802e71903
     timerevent T: 73.25,temperature: 73.25
     triggerDev GPIO4_DS1820_000802e71903
     timerevents:
       T: 73.25
       temperature: 73.25
     timereventsState:
       state: T: 73.25
       temperature: 73.25
     triggerEvents:
       T: 73.25
       temperature: 73.25
     triggerEventsState:
       state: T: 73.25
       temperature: 73.25
   Internals:
     0           Schalter_Brauchwasser:STATE
     all         Schalter_Brauchwasser:STATE
   Itimer:
   Readings:
     0           GPIO4_DS1820_000802e71903:temperature
     all         GPIO4_DS1820_000802e71903:temperature
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   room       Ölheizung


Hier die Ausgabe von List für die Brauchwasser Steuerung
Internals:
   DEF        ([Schalter_Brauchwasser:state] eq "on" and [Warmwasser:temperature] < 60)(set BW_Brenner_Steuerung enable)DOELSE(set BW_Brenner_Steuerung disable)
DOELSEIF
([GPIO4_DS1820_000802e71903:temperature] > 55 and [Schalter_Brauchwasser] eq "on")(set Relais_Badheizung on)DOELSE(set Relais_Badheizung off)
DOELSEIF
([Warmwasser:temperature] > 60)(set Schalter_Brauchwasser off)
   NAME       Brauchwasser_Steuerung
   NR         50
   NTFY_ORDER 50-Brauchwasser_Steuerung
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2018-09-15 21:02:02   Device          Warmwasser
     2018-09-15 21:00:00   cmd             1
     2018-09-15 21:00:00   cmd_event       Schalter_Brauchwasser
     2018-09-15 21:00:00   cmd_nr          1
     2018-09-15 21:00:00   e_Schalter_Brauchwasser_state on
     2018-09-15 21:02:02   e_Warmwasser_temperature 55.125
     2018-09-15 21:00:00   mode            enable
     2018-09-15 21:00:00   state           cmd_1
   Condition:
     0          ReadingValDoIf($hash,'Schalter_Brauchwasser','state') eq "on" and ReadingValDoIf($hash,'Warmwasser','temperature') < 60
   Devices:
     0           Schalter_Brauchwasser Warmwasser
     all         Schalter_Brauchwasser Warmwasser
   Do:
     0:
       0          set BW_Brenner_Steuerung enable
     1:
       0          set BW_Brenner_Steuerung disable
   Helper:
     event      T: 55.125,temperature: 55.125
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Warmwasser
     timerevent T: 55.125,temperature: 55.125
     triggerDev Warmwasser
     timerevents:
       T: 55.125
       temperature: 55.125
     timereventsState:
       state: T: 55.125
       temperature: 55.125
     triggerEvents:
       T: 55.125
       temperature: 55.125
     triggerEventsState:
       state: T: 55.125
       temperature: 55.125
   Internals:
   Itimer:
   Readings:
     0           Schalter_Brauchwasser:state Warmwasser:temperature
     all         Schalter_Brauchwasser:state Warmwasser:temperature
   Regexp:
     0:
     All:
   State:
   Trigger:
Attributes:
   disable    0
   room       Ölheizung


Hier die Ausgabe von List für "Zeitschaltuhr"
Internals:
   DEF        (([21:00-22:00]) and [Warmwasser:temperature] < 60)(set Brauchwasser_Steuerung enable, set Schalter_Brauchwasser on, set BW_Brenner_Steuerung enable)DOELSE(set Brauchwasser_Steuerung disable, set Schalter_Brauchwasser off, set BW_Brenner_Steuerung disable, set Relais_Badheizung off)
   NAME       Zeitschaltuhr_BWasser
   NR         51
   NTFY_ORDER 50-Zeitschaltuhr_BWasser
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2018-09-15 21:03:03   Device          Warmwasser
     2018-09-15 21:00:00   cmd             1
     2018-09-15 21:00:00   cmd_event       Warmwasser
     2018-09-15 21:00:00   cmd_nr          1
     2018-09-15 21:03:03   e_Warmwasser_temperature 55.062
     2018-09-15 21:00:00   state           cmd_1
     2018-09-14 22:59:20   timer_01_c01    15.09.2018 21:00:00
     2018-09-14 22:59:20   timer_02_c01    15.09.2018 22:00:00
   Condition:
     0          (DOIF_time($hash,0,1,$wday,$hms)) and ReadingValDoIf($hash,'Warmwasser','temperature') < 60
   Days:
   Devices:
     0           Warmwasser
     all         Warmwasser
   Do:
     0:
       0          set Brauchwasser_Steuerung enable, set Schalter_Brauchwasser on, set BW_Brenner_Steuerung enable
     1:
       0          set Brauchwasser_Steuerung disable, set Schalter_Brauchwasser off, set BW_Brenner_Steuerung disable, set Relais_Badheizung off
   Helper:
     event      T: 55.062,temperature: 55.062
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   Warmwasser
     timerevent T: 55.062,temperature: 55.062
     triggerDev Warmwasser
     timerevents:
       T: 55.062
       temperature: 55.062
     timereventsState:
       state: T: 55.062
       temperature: 55.062
     triggerEvents:
       T: 55.062
       temperature: 55.062
     triggerEventsState:
       state: T: 55.062
       temperature: 55.062
   Internals:
   Interval:
     0          -1
     1          0
   Itimer:
   Localtime:
     0          1537038000
     1          1537041600
   Readings:
     0           Warmwasser:temperature
     all         Warmwasser:temperature
   Realtime:
     0          21:00:00
     1          22:00:00
   Regexp:
     0:
     All:
   State:
   Time:
     0          21:00:00
     1          22:00:00
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timers:
     0           0  1
   Trigger:
   Triggertime:
     1537041600:
       localtime  1537041600
       Hash:
Attributes:
   room       Ölheizung


Heute hat das DOIF "Brauchwasser_Steuerung" die Brauchwasserpumpe nicht eingeschalten bei einer Kesseltemperatur von 55 °C,es bleibt auf cmd_1 stehen :-(

Vielen Dank für eure Hilfe.

Gruß Micha

amenomade

 Brauchwasser Steuerung: DOIF... DOELSE... DOELSEIF... DOELSE... DOELSEIF kann nicht gehen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MichaTbh

#4
Guten Morgen,

also benötige ich noch ein DOIF so zu sagen.....


Gruß Micha

-EDIT-
Habe jetzt ein weiteres DOIF "BW_Pumpe" erstellt mit folgendem Befehl

([Schalter_Brauchwasser] eq "on" and [GPIO4_DS1820_000802e71903:temperature] > 55 and [Schalter_Brauchwasser] eq "on")(set Relais_Badheizung on)DOELSE(set Relais_Badheizung off)


Jetzt läuft es einwandfrei auf dem ersten Blick. Vielen Dank
Jetzt habe ich aber noch eine Frage. Kann man das ganze irgendwie "Schlanker" gestalten?

Grüße