Hauptmenü

Frostwarner für Wärmepumpe

Begonnen von thomasg, 23 Februar 2025, 17:55:22

Vorheriges Thema - Nächstes Thema

thomasg

Hi Zusammen,

ich baue mir mein erstes DoIf zusammen. Ich möchte die Readings Durchfluss der Umwälzpumpe und Außentemperatur überwachen. Sollte es draußen frostig sein und die Umwälzpumpe aus sein, will ich eine Nachricht per MSG bekommen.

Ich habe jetzt schon einiges probiert. Leider landet das DoIf immer relativ schnell in CMD2 und hört dann auf.
Ich möchte aber, dass er solange überwacht, bis die Bedingung erstmals erfüllt ist. Dann das MSG ausführen und dann Ende.

Übrigens habe ich bei meinen readings, die ich auswerte , mit event-on-change gearbeitet.


Hier ist mein Listung vom DoIF:

Internals:
   CFGFN     
   DEF        ([HAR.WMZ_Durchfluss_Akt:heating] < 1.5 and [AB.KS_West:temperature] < 3) (msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf)
   FUUID      67bb165b-f33f-f90e-34f4-92ca5debeec27018
   MODEL      FHEM
   NAME       HAR.WMZ_Frostwarnung
   NOTIFYDEV  global,AB.KS_West,HAR.WMZ_Durchfluss_Akt
   NR         261
   NTFY_ORDER 50-HAR.WMZ_Frostwarnung
   STATE      cmd_2
   TYPE       DOIF
   VERSION    29460 2024-12-29 20:25:48
   eventCount 32
   READINGS:
     2025-02-23 17:47:30   Device          AB.KS_West
     2025-02-23 17:27:22   cmd             2
     2025-02-23 17:27:22   cmd_event       AB.KS_West
     2025-02-23 17:27:22   cmd_nr          2
     2025-02-23 17:47:30   e_AB.KS_West_temperature 9.7
     2025-02-23 17:44:22   e_HAR.WMZ_Durchfluss_Akt_heating 0.545
     2025-02-23 17:20:41   mode            enabled
     2025-02-23 17:27:22   state           cmd_2
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       AB.KS_West:
         0:
           temperature ^AB.KS_West$:^temperature:
       HAR.WMZ_Durchfluss_Akt:
         0:
           heating    ^HAR.WMZ_Durchfluss_Akt$:^heating:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'HAR.WMZ_Durchfluss_Akt','heating') < 1.5 and ::ReadingValDoIf($hash,'AB.KS_West','temperature') < 3
   do:
     0:
       0          msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf
     1:
   helper:
     NOTIFYDEV  global,AB.KS_West,HAR.WMZ_Durchfluss_Akt
     event      PIO.A: 1,PIO.B: 1,PIO.C: 1,PIO.D: 1,volt.A: 2.63551,volt.B: 0.616494,volt.C: 0.0778137,volt.D: 2.79028,volt2.A: 1.31775,volt2.B: 0.308247,volt2.C: 0.0389068,volt2.D: 1.39514,temperature: 9.7,humidity: 78.91,Helligkeit: 19.06,VOC: 9.96
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   AB.KS_West
     timerevent PIO.A: 1,PIO.B: 1,PIO.C: 1,PIO.D: 1,volt.A: 2.63551,volt.B: 0.616494,volt.C: 0.0778137,volt.D: 2.79028,volt2.A: 1.31775,volt2.B: 0.308247,volt2.C: 0.0389068,volt2.D: 1.39514,temperature: 9.7,humidity: 78.91,Helligkeit: 19.06,VOC: 9.96
     triggerDev AB.KS_West
     timerevents:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.63551
       volt.B: 0.616494
       volt.C: 0.0778137
       volt.D: 2.79028
       volt2.A: 1.31775
       volt2.B: 0.308247
       volt2.C: 0.0389068
       volt2.D: 1.39514
       temperature: 9.7
       humidity: 78.91
       Helligkeit: 19.06
       VOC: 9.96
     timereventsState:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.63551
       volt.B: 0.616494
       volt.C: 0.0778137
       volt.D: 2.79028
       volt2.A: 1.31775
       volt2.B: 0.308247
       volt2.C: 0.0389068
       volt2.D: 1.39514
       temperature: 9.7
       humidity: 78.91
       Helligkeit: 19.06
       VOC: 9.96
     triggerEvents:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.63551
       volt.B: 0.616494
       volt.C: 0.0778137
       volt.D: 2.79028
       volt2.A: 1.31775
       volt2.B: 0.308247
       volt2.C: 0.0389068
       volt2.D: 1.39514
       temperature: 9.7
       humidity: 78.91
       Helligkeit: 19.06
       VOC: 9.96
     triggerEventsState:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.63551
       volt.B: 0.616494
       volt.C: 0.0778137
       volt.D: 2.79028
       volt2.A: 1.31775
       volt2.B: 0.308247
       volt2.C: 0.0389068
       volt2.D: 1.39514
       temperature: 9.7
       humidity: 78.91
       Helligkeit: 19.06
       VOC: 9.96
   internals:
   readings:
     all         HAR.WMZ_Durchfluss_Akt:heating AB.KS_West:temperature

Danke Euch
Fhem + knx + 1wire auf raspi 2

Per

Temperatur von 9.7, ist doch ok, dass es in cmd_2 geht.

thomasg

Ja - das ist schon richtig irgendwie. Aber jetzt ist das DoIf ja aus und ich werde nie eine Mail bekommen, falls es draußen mal fröstelt. Kann ich ihm irgendwie mitteilen, dass er sich erst dann beenden soll, wenn die Bedingung einmal wahr war? Damit ich dann meine Mail bekomme? Evtl habe ich da nochwas nicht richtig verstanden von der Funktionsweise des DoIf
Fhem + knx + 1wire auf raspi 2

Icinger

ZitatEvtl habe ich da nochwas nicht richtig verstanden von der Funktionsweise des DoIf
Ja, genau :)

Das DOIF überwacht im Hintergrund schon weiterhin die Readings. Sobald die Bedingungen zutreffen, geht es auch automatisch auf CMD1, keine Sorge.
Du könntest ja zum Testen einfast ein
setreading HAR.WMZ_Durchfluss_Akt heating 1;setreading AB.KS_West temperature 1 absetzen, dann solltest du sofort die Nachricht bekommen.

lg, Stefan
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Adimarantis

Dein DOIF wird genau einmal ausgeführt und dann nie wieder, weil die Bedingung dann ja erfüllt wurde und DOIF die selbe Bedingung nicht mehrfach ausführt.
Ein "do always" würde hier helfen, aber dann bekommst du jedesmal eine Nachricht, wenn die Bedingung erneut erfüllt ist (also neue Werte vom Sensor kommen) - was du wahrscheinlich nicht willst.
Helfen würde hier ein DOELSE oder DOELSEIF Zweig.
Der muss jetzt nicht mal zwangweise etwas tun, sondern aktiviert lediglich den ersten Zweig wieder, wenn die Bedingung 1 eben zwischendurch nicht mehr wahr war.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

thomasg

Danke Euch. Ich habe es jetzt grob verstanden denke ich. Ich war einfach zu ungeduldig als ich den Status cmd_2 gesehen habe. Ich habe es ausprobiert. Nachdem er in cmd_2 war und danach die Bedingung erfüllt war, hat er die Mail gesendet und der Status ist auf CMD_1 umgeswitched.

So wie ich es verstanden habe, ist mit CMD_1 dann auch das DoIF beendet und muss erneut manuell initialisiert werden im Standard.

Schöne Grüße
Fhem + knx + 1wire auf raspi 2

Adimarantis

Was meinst du mit "manuell" - natürlich läuft das automatisch.
Ich würde es eben so machen:
([HAR.WMZ_Durchfluss_Akt:heating] < 1.5 and [AB.KS_West:temperature] < 3) (msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf)
DOELSE (msg Wärmepumpe - keine Frostgefahr mehr)
Dann kriegst du eine Nachricht sobald die Bedingung eintritt - aber eben nicht ständig (was bei "attr ... do always" der Fall wäre).
Erst wenn der ELSE Zweig getriggert wurde, weil Bedingung 1 eben nicht mehr war ist, wird Bedingung 1 bei erneuter Unterschreitung der Temperaturen auch erneut getriggert. Und wenn du keine Nachricht dazu willst reicht auch ein "DOELSE ()"
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Damian

#7
Zitat von: Adimarantis am 23 Februar 2025, 20:27:06Und wenn du keine Nachricht dazu willst reicht auch ein "DOELSE ()"

Man braucht in diesem Fall noch nicht mal DOELSE.

Denn ein DOIF-Device mit einem Zweig (cmd1) ohne do always wechselt immer in cmd2, wenn die Bedingung nicht erfüllt wird - auch ohne DOELSE.

Ansonsten würde das Modul nur einmal etwas tun und dann nie wieder, weil es aus dem cmd1 nicht herauskäme.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Adimarantis

@Damian: Macht Sinn. Nachdem ich nur DOIF mit mehreren Zweigen habe, habe ich da wohl eine falsche Schlussfolgerung getroffen. Danke für die Korrektur.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU)/RfxTrx433XL/Zigbee
Module: 50_Signalbot, 48_HomeConnect, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

thomasg

#9
Guten Morgen,

ich habe das DoIf einmal über nacht laufen lassen und obwohl theoretisch kein Zustandswechsel bei der Bedingung (theoretisch) hätte sein dürfen habe ich in Zeitabständen von ca 2 Stunden insgesamt 6 Mails bekommen.

Mich interessiert natürlich woran das liegt. Das ist ja nach meinem Verständnis nicht das normale Verhalten von DoIf. Kann es an den Readings liegen, dass sie vielleicht irgendwie für einen Bruchteil einer Sekunde "ausreißen". Ich sehe in dem DoIf Device auch nicht den Wert der beiden Readings für die Bedingung den sie zum Auslösezeitpunkt hatten.

Habt Ihr da eine Idee, wie ich sowas analysieren kann?

Hier nochmal das aktuelle Listing:


Internals:
   CFGFN     
   DEF        ([HAR.WMZ_Durchfluss_Akt:heating] < 1.5 and [AB.KS_West:temperature] < 6.0) (msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf)
   FUUID      67bb165b-f33f-f90e-34f4-92ca5debeec27018
   MODEL      FHEM
   NAME       HAR.WMZ_Frostwarnung
   NOTIFYDEV  global,AB.KS_West,HAR.WMZ_Durchfluss_Akt
   NR         261
   NTFY_ORDER 50-HAR.WMZ_Frostwarnung
   STATE      cmd_1
   TYPE       DOIF
   VERSION    29460 2024-12-29 20:25:48
   eventCount 74
   READINGS:
     2025-02-24 07:58:13   Device          AB.KS_West
     2025-02-24 07:31:49   cmd             1
     2025-02-24 07:31:49   cmd_event       HAR.WMZ_Durchfluss_Akt
     2025-02-24 07:31:49   cmd_nr          1
     2025-02-24 07:58:13   e_AB.KS_West_temperature 0.9
     2025-02-24 07:56:52   e_HAR.WMZ_Durchfluss_Akt_heating 0.6229999
     2025-02-24 07:31:49   error           msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxxx@xxxx.de: -1
 
     2025-02-23 19:31:33   mode            enabled
     2025-02-24 07:31:49   state           cmd_1
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       AB.KS_West:
         0:
           temperature ^AB.KS_West$:^temperature:
       HAR.WMZ_Durchfluss_Akt:
         0:
           heating    ^HAR.WMZ_Durchfluss_Akt$:^heating:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'HAR.WMZ_Durchfluss_Akt','heating') < 1.5 and ::ReadingValDoIf($hash,'AB.KS_West','temperature') < 6.0
   do:
     0:
       0          msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf
     1:
   helper:
     NOTIFYDEV  global,AB.KS_West,HAR.WMZ_Durchfluss_Akt
     event      PIO.A: 1,PIO.B: 1,PIO.C: 1,PIO.D: 1,volt.A: 2.56676,volt.B: 0.683135,volt.C: 0.114455,volt.D: 3.02583,volt2.A: 1.28338,volt2.B: 0.341568,volt2.C: 0.0572274,volt2.D: 1.51291,temperature: 0.9,humidity: 87.44,Helligkeit: 388.63,VOC: 14.65
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   AB.KS_West
     timerevent PIO.A: 1,PIO.B: 1,PIO.C: 1,PIO.D: 1,volt.A: 2.56676,volt.B: 0.683135,volt.C: 0.114455,volt.D: 3.02583,volt2.A: 1.28338,volt2.B: 0.341568,volt2.C: 0.0572274,volt2.D: 1.51291,temperature: 0.9,humidity: 87.44,Helligkeit: 388.63,VOC: 14.65
     triggerDev AB.KS_West
     timerevents:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.56676
       volt.B: 0.683135
       volt.C: 0.114455
       volt.D: 3.02583
       volt2.A: 1.28338
       volt2.B: 0.341568
       volt2.C: 0.0572274
       volt2.D: 1.51291
       temperature: 0.9
       humidity: 87.44
       Helligkeit: 388.63
       VOC: 14.65
     timereventsState:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.56676
       volt.B: 0.683135
       volt.C: 0.114455
       volt.D: 3.02583
       volt2.A: 1.28338
       volt2.B: 0.341568
       volt2.C: 0.0572274
       volt2.D: 1.51291
       temperature: 0.9
       humidity: 87.44
       Helligkeit: 388.63
       VOC: 14.65
     triggerEvents:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.56676
       volt.B: 0.683135
       volt.C: 0.114455
       volt.D: 3.02583
       volt2.A: 1.28338
       volt2.B: 0.341568
       volt2.C: 0.0572274
       volt2.D: 1.51291
       temperature: 0.9
       humidity: 87.44
       Helligkeit: 388.63
       VOC: 14.65
     triggerEventsState:
       PIO.A: 1
       PIO.B: 1
       PIO.C: 1
       PIO.D: 1
       volt.A: 2.56676
       volt.B: 0.683135
       volt.C: 0.114455
       volt.D: 3.02583
       volt2.A: 1.28338
       volt2.B: 0.341568
       volt2.C: 0.0572274
       volt2.D: 1.51291
       temperature: 0.9
       humidity: 87.44
       Helligkeit: 388.63
       VOC: 14.65
   internals:
   readings:
     all         HAR.WMZ_Durchfluss_Akt:heating AB.KS_West:temperature
   trigger:
   uiState:
   uiTable:
Attributes:
   group      Heizung
   loglevel   6
   msgTitle   Wärmepumpe: Frostwarnung
   room       Sensoren


Einen Logausschnitt habe ich auch einmal dazugepackt:

2025.02.23 19:43:21 3: msg globalMsg: ID=1740336200.14524.1 TYPE=mail ROUTE=xxxx.xxx.de STATUS=ERROR PRIORITY=0 TITLE='Meldung von horst-fhem' MSG='Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf'
2025.02.23 19:43:21 2: HAR.WMZ_Frostwarnung: msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxx.xxx.de: -1

2025.02.23 20:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.23 21:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.23 22:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.23 22:25:11 3: msg globalMsg: ID=1740345910.63956.1 TYPE=mail ROUTE=xxxx.xxx.de STATUS=ERROR PRIORITY=0 TITLE='Meldung von horst-fhem' MSG='Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf'
2025.02.23 22:25:11 2: HAR.WMZ_Frostwarnung: msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxx.xxx.de: -1

2025.02.23 22:49:51 3: HAR.Counter: reading counters.A did not return a value
2025.02.23 22:49:51 3: HAR.Counter: reading counters.B did not return a value
2025.02.23 23:05:06 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.23 23:47:49 3: HAR.Counter: reading counters.A did not return a value
2025.02.23 23:47:49 3: HAR.Counter: reading counters.B did not return a value
2025.02.23 23:56:00 3: DbRep WP.Erzeugung.Tag - get initial structure information of database "/opt/fhem/log/messwerte_horst.db", remaining attempts: 3
2025.02.23 23:56:00 3: DbRep WP.Erzeugung.Tag - Connectiontest to database SQLite:dbname=/opt/fhem/log/messwerte_horst.db with user
2025.02.23 23:56:00 3: DbRep WP.Erzeugung.Tag - Index Report_Idx exists. Check ok
2025.02.23 23:56:00 3: DbRep WP.Erzeugung.Tag - Initial data information retrieved - total time used: 0.0186 seconds
2025.02.23 23:56:00 3: DbRep WP.Erzeugung.Tag - Connectiontest to db SQLite:dbname=/opt/fhem/log/messwerte_horst.db successful
2025.02.23 23:56:24 3: DbRep WP.Erzeugung.Tag - number of lines updated in >horstDbLog<: 1093
2025.02.23 23:56:24 3: DbRep WP.Erzeugung.Tag - number of lines inserted into >horstDbLog<: 1
2025.02.23 23:57:00 3: DbRep WP.Verbrauch.Tag - get initial structure information of database "/opt/fhem/log/messwerte_horst.db", remaining attempts: 3
2025.02.23 23:57:00 3: DbRep WP.Verbrauch.Tag - Connectiontest to database SQLite:dbname=/opt/fhem/log/messwerte_horst.db with user
2025.02.23 23:57:00 3: DbRep WP.Verbrauch.Tag - Index Report_Idx exists. Check ok
2025.02.23 23:57:00 3: DbRep WP.Verbrauch.Tag - Initial data information retrieved - total time used: 0.0175 seconds
2025.02.23 23:57:00 3: DbRep WP.Verbrauch.Tag - Connectiontest to db SQLite:dbname=/opt/fhem/log/messwerte_horst.db successful
2025.02.23 23:57:06 3: DbRep WP.Verbrauch.Tag - time/aggregation periods containing only one dataset -> no diffValue calc was possible in period:
2025.02.23 23:57:06 3: 2022-09-28
2025.02.23 23:57:06 3: 2022-10-02
2025.02.23 23:57:06 3: 2022-10-28
2025.02.23 23:57:06 3: 2023-04-11
2025.02.23 23:57:06 3: 2023-04-13
2025.02.23 23:57:06 3: 2023-05-03
2025.02.23 23:57:06 3: 2023-05-06
2025.02.23 23:57:06 3: 2023-05-11
2025.02.23 23:57:06 3: 2023-05-20
2025.02.23 23:57:06 3: 2023-05-22
2025.02.23 23:57:06 3: 2023-05-23
2025.02.23 23:57:06 3: 2023-05-26
2025.02.23 23:57:06 3: 2023-05-29
2025.02.23 23:57:06 3: 2023-05-30
2025.02.23 23:57:06 3: 2023-06-02
2025.02.23 23:57:06 3: 2023-06-04
2025.02.23 23:57:06 3: 2023-06-05
2025.02.23 23:57:06 3: 2023-06-06
2025.02.23 23:57:06 3: 2023-06-07
2025.02.23 23:57:06 3: 2023-06-08
2025.02.23 23:57:06 3: 2023-06-11
2025.02.23 23:57:06 3: 2023-06-13
2025.02.23 23:57:06 3: 2023-06-16
2025.02.23 23:57:06 3: 2023-06-17
2025.02.23 23:57:06 3: 2023-06-20
2025.02.23 23:57:06 3: 2023-06-21
2025.02.23 23:57:06 3: 2023-06-22
2025.02.23 23:57:06 3: 2023-06-23
2025.02.23 23:57:06 3: 2023-06-24
2025.02.23 23:57:06 3: 2023-06-25
2025.02.23 23:57:06 3: 2023-06-27
2025.02.23 23:57:06 3: 2023-06-29
2025.02.23 23:57:06 3: 2023-06-30
2025.02.23 23:57:06 3: 2023-07-01
2025.02.23 23:57:06 3: 2023-07-03
2025.02.23 23:57:06 3: 2023-07-04
2025.02.23 23:57:06 3: 2023-07-05
2025.02.23 23:57:06 3: 2023-07-06
2025.02.23 23:57:06 3: 2023-07-07
2025.02.23 23:57:06 3: 2023-07-08
2025.02.23 23:57:06 3: 2023-07-09
2025.02.23 23:57:06 3: 2023-07-15
2025.02.23 23:57:06 3: 2023-07-19
2025.02.23 23:57:06 3: 2023-07-25
2025.02.23 23:57:06 3: 2023-07-26
2025.02.23 23:57:06 3: 2023-08-01
2025.02.23 23:57:06 3: 2023-08-06
2025.02.23 23:57:06 3: 2023-08-10
2025.02.23 23:57:06 3: 2023-08-12
2025.02.23 23:57:06 3: 2023-08-13
2025.02.23 23:57:06 3: 2023-08-15
2025.02.23 23:57:06 3: 2023-08-16
2025.02.23 23:57:06 3: 2023-08-20
2025.02.23 23:57:06 3: 2023-08-21
2025.02.23 23:57:06 3: 2023-08-22
2025.02.23 23:57:06 3: 2023-08-23
2025.02.23 23:57:06 3: 2023-08-25
2025.02.23 23:57:06 3: 2023-08-26
2025.02.23 23:57:06 3: 2023-08-27
2025.02.23 23:57:06 3: 2023-08-28
2025.02.23 23:57:06 3: 2023-08-29
2025.02.23 23:57:06 3: 2023-08-30
2025.02.23 23:57:06 3: 2023-08-31
2025.02.23 23:57:06 3: 2023-09-03
2025.02.23 23:57:06 3: 2023-09-07
2025.02.23 23:57:06 3: 2023-09-09
2025.02.23 23:57:06 3: 2023-09-11
2025.02.23 23:57:06 3: 2023-09-15
2025.02.23 23:57:06 3: 2023-09-16
2025.02.23 23:57:06 3: 2023-09-17
2025.02.23 23:57:06 3: 2023-09-18
2025.02.23 23:57:06 3: 2023-09-19
2025.02.23 23:57:06 3: 2023-09-20
2025.02.23 23:57:06 3: 2023-09-21
2025.02.23 23:57:06 3: 2023-09-24
2025.02.23 23:57:06 3: 2023-09-29
2025.02.23 23:57:06 3: 2023-10-04
2025.02.23 23:57:06 3: 2023-10-11
2025.02.23 23:57:06 3: 2023-10-21
2025.02.23 23:57:06 3: 2023-10-24
2025.02.23 23:57:06 3: 2023-10-26
2025.02.23 23:57:06 3: 2023-10-27
2025.02.23 23:57:06 3: 2023-10-28
2025.02.23 23:57:06 3: 2024-03-31
2025.02.23 23:57:06 3: 2024-04-02
2025.02.23 23:57:06 3: 2024-04-04
2025.02.23 23:57:06 3: 2024-04-06
2025.02.23 23:57:06 3: 2024-04-08
2025.02.23 23:57:06 3: 2024-05-15
2025.02.23 23:57:06 3: 2024-05-17
2025.02.23 23:57:06 3: 2024-05-19
2025.02.23 23:57:06 3: 2024-05-20
2025.02.23 23:57:06 3: 2024-05-22
2025.02.23 23:57:06 3: 2024-05-24
2025.02.23 23:57:06 3: 2024-05-25
2025.02.23 23:57:06 3: 2024-05-26
2025.02.23 23:57:06 3: 2024-05-28
2025.02.23 23:57:06 3: 2024-05-30
2025.02.23 23:57:06 3: 2024-05-31
2025.02.23 23:57:06 3: 2024-06-02
2025.02.23 23:57:06 3: 2024-06-04
2025.02.23 23:57:06 3: 2024-06-05
2025.02.23 23:57:06 3: 2024-06-06
2025.02.23 23:57:06 3: 2024-06-20
2025.02.23 23:57:06 3: 2024-06-21
2025.02.23 23:57:06 3: 2024-06-25
2025.02.23 23:57:06 3: 2024-06-26
2025.02.23 23:57:06 3: 2024-06-27
2025.02.23 23:57:06 3: 2024-06-29
2025.02.23 23:57:06 3: 2024-06-30
2025.02.23 23:57:06 3: 2024-07-01
2025.02.23 23:57:06 3: 2024-07-04
2025.02.23 23:57:06 3: 2024-07-07
2025.02.23 23:57:06 3: 2024-07-08
2025.02.23 23:57:06 3: 2024-07-11
2025.02.23 23:57:06 3: 2024-07-17
2025.02.23 23:57:06 3: 2024-07-20
2025.02.23 23:57:06 3: 2024-07-21
2025.02.23 23:57:06 3: 2024-07-22
2025.02.23 23:57:06 3: 2024-07-23
2025.02.23 23:57:06 3: 2024-07-24
2025.02.23 23:57:06 3: 2024-07-28
2025.02.23 23:57:06 3: 2024-07-30
2025.02.23 23:57:06 3: 2024-08-02
2025.02.23 23:57:06 3: 2024-08-04
2025.02.23 23:57:06 3: 2024-08-06
2025.02.23 23:57:06 3: 2024-08-09
2025.02.23 23:57:06 3: 2024-08-12
2025.02.23 23:57:06 3: 2024-08-13
2025.02.23 23:57:06 3: 2024-08-14
2025.02.23 23:57:06 3: 2024-08-15
2025.02.23 23:57:06 3: 2024-08-16
2025.02.23 23:57:06 3: 2024-08-18
2025.02.23 23:57:06 3: 2024-08-19
2025.02.23 23:57:06 3: 2024-08-20
2025.02.23 23:57:06 3: 2024-08-21
2025.02.23 23:57:06 3: 2024-08-22
2025.02.23 23:57:06 3: 2024-08-23
2025.02.23 23:57:06 3: 2024-08-24
2025.02.23 23:57:06 3: 2024-08-26
2025.02.23 23:57:06 3: 2024-08-27
2025.02.23 23:57:06 3: 2024-08-28
2025.02.23 23:57:06 3: 2024-09-01
2025.02.23 23:57:06 3: 2024-09-04
2025.02.23 23:57:06 3: 2024-09-05
2025.02.23 23:57:06 3: 2024-09-06
2025.02.23 23:57:06 3: 2024-09-09
2025.02.23 23:57:06 3: 2024-09-10
2025.02.23 23:57:06 3: 2024-09-19
2025.02.23 23:57:06 3: 2024-09-24
2025.02.23 23:57:06 3: 2024-09-25
2025.02.23 23:57:06 3: 2024-09-26
2025.02.23 23:57:06 3: 2024-10-03
2025.02.23 23:57:06 3: 2024-10-05
2025.02.23 23:57:06 3: 2024-10-23
2025.02.23 23:57:06 3: 2024-10-25
2025.02.23 23:57:21 3: DbRep WP.Verbrauch.Tag - number of lines updated in >horstDbLog<: 993
2025.02.23 23:57:21 3: DbRep WP.Verbrauch.Tag - number of lines inserted into >horstDbLog<: 1
2025.02.24 00:00:00 3: datedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set datedev value value now" - use: "set datedev g1 value now"
2025.02.24 00:00:00 2: datedev [KNX_encodeByDpt 1724]: gadName=g1 VALUE=value does not match allowed values: (?^msix:((?^msix:(?^msix:^(3[01]|[1-2]\d|0?[1-9])[.](1[0-2]|0?[1-9]))[.](199\d|20[0-8]\d))|now))
2025.02.24 00:00:00 3: dateset: "set datedev g1 value" failed, see Log-Messages
2025.02.24 00:05:06 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.24 00:17:23 3: HAR.Counter: reading counters.A did not return a value
2025.02.24 00:20:32 3: msg globalMsg: ID=1740352831.64136.1 TYPE=mail ROUTE=xxxx.xxx.de STATUS=ERROR PRIORITY=0 TITLE='Meldung von horst-fhem' MSG='Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf'
2025.02.24 00:20:32 2: HAR.WMZ_Frostwarnung: msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxx.xxx.de: -1

2025.02.24 01:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - ################################################################
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - ###                    new reduceLog run                     ###
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - ################################################################
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - get initial structure information of database "/opt/fhem/log/messwerte_horst.db", remaining attempts: 3
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - Connectiontest to database SQLite:dbname=/opt/fhem/log/messwerte_horst.db with user
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - Index Report_Idx exists. Check ok
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - Initial data information retrieved - total time used: 0.0200 seconds
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - Connectiontest to db SQLite:dbname=/opt/fhem/log/messwerte_horst.db successful
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - reduce data older than: 2025-02-11 01:14:59, newer than: 2025-02-10 01:14:59
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - reduceLog requested with options:
INCLUDE -> Devs: % Readings: %
2025.02.24 01:15:00 3: DbRep DbRep.horstDBLog.Reduce - reduceLog finished. Rows processed: 618, deleted: 0
2025.02.24 02:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.24 02:07:18 3: HAR.Counter: reading counters.A did not return a value
2025.02.24 02:10:53 3: msg globalMsg: ID=1740359452.22713.1 TYPE=mail ROUTE=xxxx.xxx.de STATUS=ERROR PRIORITY=0 TITLE='Meldung von horst-fhem' MSG='Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf'
2025.02.24 02:10:53 2: HAR.WMZ_Frostwarnung: msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxx.xxx.de: -1

2025.02.24 03:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.24 03:56:12 3: msg globalMsg: ID=1740365771.91221.1 TYPE=mail ROUTE=xxxx.xxx.de STATUS=ERROR PRIORITY=0 TITLE='Meldung von horst-fhem' MSG='Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf'
2025.02.24 03:56:12 2: HAR.WMZ_Frostwarnung: msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxx.xxx.de: -1

2025.02.24 04:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.24 05:01:16 3: HAR.Counter: reading counters.A did not return a value
2025.02.24 05:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.24 05:41:30 3: msg globalMsg: ID=1740372089.7025.1 TYPE=mail ROUTE=xxxx.xxx.de STATUS=ERROR PRIORITY=0 TITLE='Meldung von horst-fhem' MSG='Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf'
2025.02.24 05:41:30 2: HAR.WMZ_Frostwarnung: msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxx.xxx.de: -1

2025.02.24 06:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now " - use: "set timedev g1 now "
2025.02.24 06:24:40 3: HAR.Counter: reading counters.A did not return a value
2025.02.24 06:54:57 3: ESS.Rollo_Sued [KNX_Set_oldsyntax 958]: you are still using old syntax, pls. change to "set ESS.Rollo_Sued g2 off <value>"
2025.02.24 06:54:58 3: ESS.Rollo_West [KNX_Set_oldsyntax 958]: you are still using old syntax, pls. change to "set ESS.Rollo_West g2 off <value>"
2025.02.24 06:54:59 3: KUE.Rollo_West [KNX_Set_oldsyntax 958]: you are still using old syntax, pls. change to "set KUE.Rollo_West g2 off <value>"
2025.02.24 06:55:00 3: WOH.Rollo_Sued [KNX_Set_oldsyntax 958]: you are still using old syntax, pls. change to "set WOH.Rollo_Sued g2 off <value>"
2025.02.24 07:05:05 3: timedev [KNX_Set_oldsyntax 1003]: This cmd will be deprecated by 1/2024: "set timedev value now a" - use: "set timedev g1 now "
2025.02.24 07:31:49 3: msg globalMsg: ID=1740378708.5814.1 TYPE=mail ROUTE=xxxx.xxx.de STATUS=ERROR PRIORITY=0 TITLE='Meldung von horst-fhem' MSG='Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf'
2025.02.24 07:31:49 2: HAR.WMZ_Frostwarnung: msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf: xxxx.xxx.de: -1

Schöne Grüße
Fhem + knx + 1wire auf raspi 2

Damian

Du hast zwei Readings, die du mit and-verknüpft abfragst. Wenn der Zustand im DOIF-Device wechselt, dann heißt das, dass die Bedingung zwischendurch nicht wahr ist. D. h. entweder der eine Sensor, der andere oder beide um den Grenzwert  "schwanken".

Das ist ganz normal und wird durch eine Hysterese üblicherweise abgefangen.

Das kannst du entweder durch eine Verzögerung mit wait einschränken oder mit einer zusätzlichen DOELESEIF Bedingung, die das Umschalten in den cmd2-Zustand mit einem Temperaturabstand (Hysterese) vornimmt, z. B.:

([HAR.WMZ_Durchfluss_Akt:heating] < 1.5 and [AB.KS_West:temperature] < 6.0) (msg Wärmepumpe - Umwälzpumpe aus - Bei Frost dringender Handlungsbedarf) DOELSEIF ([HAR.WMZ_Durchfluss_Akt:heating] > 2 or [AB.KS_West:temperature] > 6.5) ()
Hier habe ich eine Hysterese von 0,5 Grad bei beiden Sensoren eingebaut.




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

thomasg

Jetzt wo du es schreibst wird mir das auch klar. Die Wärmepumpe ist ja bei der aktuellen Luftfeuchtigkeit draußen öfter mal beim Abtauen - und da schnellt die Umwälzpumpe natürlich nach oben und die Bedingung ändert sich im Zustand. Vielen Dank!! Auch für den Hinweis mit der Hysterese ...
Fhem + knx + 1wire auf raspi 2

Damian

#12
Zitat von: thomasg am 24 Februar 2025, 11:03:56Jetzt wo du es schreibst wird mir das auch klar. Die Wärmepumpe ist ja bei der aktuellen Luftfeuchtigkeit draußen öfter mal beim Abtauen - und da schnellt die Umwälzpumpe natürlich nach oben und die Bedingung ändert sich im Zustand. Vielen Dank!! Auch für den Hinweis mit der Hysterese ...

In dem Fall würde sich wait anbieten, denn das sind ja keine kleinen Schwankungen mehr. Je nachdem wie lange die Auftauphase dauert, kannst mit wait diese überbrücken. Mit attr wait 1800 würdest du z. B. mit deiner Meldung eine halbe Stunde warten. Wenn der Spuck innerhalb dieser Zeit vorbei ist und sich alles normalisiert hat, wird wait abgebrochen und es gibt keine Meldung, weil der Zustand cmd1 nicht mehr gilt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF