Fussbodenheizung mit PWM steuern

Begonnen von jamesgo, 24 September 2015, 08:28:49

Vorheriges Thema - Nächstes Thema

BOFH

#780
Hallo Andy,

ich hab ein Problem mit der maxofftime funktion. Die ist mir jetzt nach Jahren erst irgendwie aufgefallen *g* ....

Und zwar schaltet er das Relai nicht an.

Hier das Listning mal vom  pwmr

Internals:
   ACTOR      SZ_RELAI1_Sw_02
   CFGFN      ./config/02_Heizungssteuerung.cfg
   DEF        XX_fh 1,0.11 BZ_Thermostat:measured-temp SZ_RELAI1_Sw_02
   FUUID      5c44e226-f33f-ec08-f628-d31a07ef8dbaab44
   INTERVAL   300
   IODev      XX_fh
   NAME       pwm_BZ
   NR         379
   STATE      Calculating
   TEMPSENSOR BZ_Thermostat:measured-temp
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      SZ_RELAI1_Sw_02
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0.11
   c_frostProtect 0
   c_tempC    23
   c_tempD    22.5
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    22
   c_tempRule1 1-4 0400,D 1500,C 2000,N
   c_tempRule2 6-0 0800,C 2200,N
   c_tempRule3 5-5 0400,D 1200,C 2000,N
   c_tempRule4
   c_tempRule5
   c_tempRuleS C
   p_actor    SZ_RELAI1_Sw_02
   p_factor   1,0.11
   p_maxOffTime 240
   p_maxOffTimePeriod 30
   p_maxOffTimeSelector CD
   p_maxOffTimeTempLimit 5
   p_pid     
   p_tsensor  BZ_Thermostat:measured-temp
   p_window   
   t_reading  measured-temp
   t_regexp   ([\d\.]+)
   t_sensor   BZ_Thermostat
   w_regexp   .*[Oo]pen.*
   windows   
   READINGS:
     2020-09-19 13:46:30   PWMOnTime       00:00
     2020-09-19 13:46:30   PWMPulse        0
     2020-09-19 13:44:03   actorState      off
     2020-09-19 13:45:12   desired-temp    23.0
     2020-09-19 13:46:30   desired-temp-used 23.0
     2020-09-19 13:46:30   energyused      000000000000000000000000010000
     2020-09-19 13:46:30   energyusedp     3.3
     2020-09-19 13:44:44   lastswitch      1599987559.25891
     2020-09-19 13:46:30   oldpulse        0.11
     2020-09-19 13:45:12   state           Calculating
     2020-09-19 13:46:30   temperature     23.5
     2020-09-18 15:13:58   timer1_Mo       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer2_Di       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer3_Mi       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer4_Do       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer5_Fr       04:00-12:00,D,22.5 12:00-20:00,C,23
     2020-09-18 15:13:58   timer6_Sa       08:00-22:00,C,23
     2020-09-18 15:13:58   timer7_So       08:00-22:00,C,23
   helper:
Attributes:
   group      Heizung
   maxOffTime 4:00,CD,0:30,5
   room       Haus->Heizung
   tempCosy   23
   tempDay    22.5
   tempNight  22
   tempRule1  Mo-Do 4:00,D 15:00,C 20:00,N
   tempRule2  Sa-So 8:00,C 22:00,N
   tempRule3  Fr 4:00,D 12:00,C 20:00,N
   verbose    5



und vom PWM

Internals:
   CFGFN      ./config/02_Heizungssteuerung.cfg
   CYCLETIME  1200
   DEF        60 1200 180 1 99,99 0,0,0
   FUUID      5c44e226-f33f-ec08-0062-7c0ec53d1a35a74e
   INTERVAL   60
   MINONOFFTIME 180
   MaxPulse   1
   MaxSwitchOffPerCycle 99
   MaxSwitchOnPerCycle 99
   NAME       XX_fh
   NR         333
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      lastrun: 2020-09-19 13:47:33
   TYPE       PWM
   p_cycletime 1200
   p_interval 60
   p_maxPulse 1
   p_minOnOfftime 180
   p_overallHeatingSwitch
   p_roomsMinOnOffThreshold 0,0,0
   READINGS:
     2020-09-18 15:13:58   OverallHeatingSwitch
     2020-09-18 15:13:58   OverallHeatingSwitchWaitBeforeOn
     2020-09-18 15:13:58   OverallHeatingSwitchWaitUntilOff
     2020-09-19 13:47:33   avgPulseRoomsOff 0.11
     2020-09-19 13:47:33   avgPulseRoomsOn 0
     2020-09-19 13:47:33   lastrun         calculating
     2020-09-13 20:48:42   maxOffTimeCalculation on
     2020-09-19 13:47:33   pulseAvg        0.11
     2020-09-19 13:47:33   pulseAvg2       0.11
     2020-09-19 13:47:33   pulseAvg3       0.11
     2020-09-19 13:47:33   pulseMax        0.11
     2020-09-19 13:47:33   pulseSum        0.66
     2020-09-19 13:47:33   roomsActive     6
     2020-09-19 13:47:33   roomsOff        6
     2020-09-19 13:47:33   roomsOn         0
     2020-09-19 13:47:33   roomsToStayOn   0
     2020-09-19 13:47:33   roomsToStayOnList
     2020-09-19 13:47:33   state           lastrun: 2020-09-19 13:47:33
   helper:
     pulses:
       pwm_AZ     0.11 / 0
       pwm_BZ     0.11 / 0
       pwm_Flur_OG 0.11 / 0
       pwm_HWR    0.11 / 0
       pwm_KZ     0.11 / 0
       pwm_WZ     0.11 / 0
Attributes:
   group      Heizung
   room       Haus->Heizung,System->Dienste
   verbose    0



Erwarten würde ich,dass das schalten nach 4 Stunden für 30 Minuten durchgeführt wird

im Log sieht das ganze recht "komisch"/flasch aus



2020.09.19 13:45:27 4 : PWMR_ReadRoom pwm_BZ: desT(23.0), actT(23.5 von(2020-09-19 13:37:35)), state(off)
2020.09.19 13:45:27 4 : PWMR_ReadRoom pwm_BZ: newpulse(0.11/00:00), oldpulse(0.11), lastSW(1599987559.25891 = 2020-09-19 13:44:44), window(0)
...
2020.09.19 13:45:27 4 : PWMR_ReadRoom pwm_BZ: candidate for maxOffTime actor(off) since 02:26:46 (23.5 <= 23.0 + 5)


der timestamp 1599987559.25891 = 2020-09-19 13:44:44   ist ja nicht richtig ?!
Ansonsten erkennt er a ber ja das er schon ein paar Tage nicht an ist/war.

Ist das ein Einstellungsproblem?  Danke dir.


[EDIT]
das Problemm scheint der Puls(new) zu sein, der IMMER 0.11 ist. Somit kommt man nie in die if Abfrage mit dem == 0 ... habs mal in <1 geändert... mal gucken. Vielleicht kannst hier noch was fixen. Wäre super!

[/EDIT]
RasPi 4
ZWave.me ZME_UZB (Fibaro Auge Gen.2)/ HM-USB2 (Thermostat | Hutschienen Relais | 1-/2fach Schalter) / Enigma2 / PhilipsTV / Philips HUE (GO|Bulb|Stripe (plus)) / Somfy IO Rollos / BOSCH HSG636XS6 / SONOS (P1, P3, P5 2.Gen, SUB, Bar)

MarcoE

Hallo,
geht es nur mir so oder ist bei anderen PWM (genauer PWMR) extrem geschwätzig im Logfile? Ich habe verbose für die PWMR Elemente auf 0 aber da erscheint recht viel. Kann man das ändern?
Danke und viele Grüße
Marco

Skusi

Also ich hab Verbose auch auf 0 und bei mir steht nix im Log. Läuft seit langer Zeit alles reibungslos. Bin zufrieden und begeistert !
RPI3B, SIGNALduino, NanoCul868 (a-culfw), JeeLink Clone (LaCrosse), Firmata  für FB Heizung,Wasser+Gas+Klingel+Lux, Somfy Rolladen, Pollin Steckd.,TX29DTH,ESPEasy an S0 Stromz., MAX Fensterkontakte, IButton, SonOff Tasmota, ESP LED Controler

MarcoE

Ich habe jetzt testweise verbose auf 3 und dann zurück auf 0 und nun ist auch Ruhe. Verstehe ich zwar nicht aber jetzt sieht das besser aus.
Damit Problem gelöst  :)

Punisher

#784
Halli Hallo,

erstmal vielen Dank für das tolle Modul, es funktioniert hervorragend. Allerdings habe ich festgestellt gibt es anscheinend ein "Sprachproblem"
Folgende Situation:
Mit einem Dummy-Thermostat (Threshold) gebe ich die Temperatur für die Heizungssteuerung in einem Raum vor.
Ein Thermostat-Widget (TabletUI) steuert die desiredTemp in dem Dummy-Thermostat.
Sobald die Temperatur nun unter 10 grad eingestellt wird, fällt die Steuerung auf die FrostProtect Temperatur.

Das Problem konnte ich nun wie folgt eingrenzen.
Gebe ich dem Dummy-Thermostat per set Befehl die Temperatur von "08" vor, wird es übernommen, schreibe ich wieder per set nur "8" fällt die Temperatur auf die frostprotect.
Die Heizungssteuerung erwartet also eine "null" oder eine "zweistellige" Zahl
Kann das sein?
Wie umgehe ich das?

Wenn ich allerdings "7.5" eingebe funktioniert es, mit "7" allerdings nicht.

!!!ERLEDIGT!!!

Fehler sitzt vor dem Bildschirm  ;)

jamesgo

#785
Hallo,
da passt der default regular expression nicht


Format is <device>[:<reading>[:<regexp>]]
device defines the reference to the other object.
reading defines the reading that contains the value for desired-temp. Default is 'desired-temp'.
regexp defines a regular expression to extract the value used for 'desired-temp'. Default is '(\d[\d\.]+)'. If regexp does not match (e.g. reading is 'off') then tempFrostProtect is used.


In deinem Fall wäre '(\d[\d\.]*)' besser. ('+' ist ein- oder mehrmals; '*' ist kein- oder mehrmals)
7.0 sollte aber funktionieren.

Grüße
Andy

jamesgo

Hallo,

irgendwie ist mir die Benachrichtigung über neue Posts verlorengegangene - deshalb die verspätete Antwort.

Was dir fehlt ist beim PWM das Reading "maxOffTimeCalculation". Du bekommst es mit "set maxOffTimeCalculation on".

Die maxOffTime wird getrennt von den Pulsen über separate Returnwerte abgehandelt.

VG
Andy

Zitat von: BOFH am 19 September 2020, 13:50:10
Hallo Andy,

ich hab ein Problem mit der maxofftime funktion. Die ist mir jetzt nach Jahren erst irgendwie aufgefallen *g* ....

Und zwar schaltet er das Relai nicht an.

Hier das Listning mal vom  pwmr

Internals:
   ACTOR      SZ_RELAI1_Sw_02
   CFGFN      ./config/02_Heizungssteuerung.cfg
   DEF        XX_fh 1,0.11 BZ_Thermostat:measured-temp SZ_RELAI1_Sw_02
   FUUID      5c44e226-f33f-ec08-f628-d31a07ef8dbaab44
   INTERVAL   300
   IODev      XX_fh
   NAME       pwm_BZ
   NR         379
   STATE      Calculating
   TEMPSENSOR BZ_Thermostat:measured-temp
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      SZ_RELAI1_Sw_02
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0.11
   c_frostProtect 0
   c_tempC    23
   c_tempD    22.5
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    22
   c_tempRule1 1-4 0400,D 1500,C 2000,N
   c_tempRule2 6-0 0800,C 2200,N
   c_tempRule3 5-5 0400,D 1200,C 2000,N
   c_tempRule4
   c_tempRule5
   c_tempRuleS C
   p_actor    SZ_RELAI1_Sw_02
   p_factor   1,0.11
   p_maxOffTime 240
   p_maxOffTimePeriod 30
   p_maxOffTimeSelector CD
   p_maxOffTimeTempLimit 5
   p_pid     
   p_tsensor  BZ_Thermostat:measured-temp
   p_window   
   t_reading  measured-temp
   t_regexp   ([\d\.]+)
   t_sensor   BZ_Thermostat
   w_regexp   .*[Oo]pen.*
   windows   
   READINGS:
     2020-09-19 13:46:30   PWMOnTime       00:00
     2020-09-19 13:46:30   PWMPulse        0
     2020-09-19 13:44:03   actorState      off
     2020-09-19 13:45:12   desired-temp    23.0
     2020-09-19 13:46:30   desired-temp-used 23.0
     2020-09-19 13:46:30   energyused      000000000000000000000000010000
     2020-09-19 13:46:30   energyusedp     3.3
     2020-09-19 13:44:44   lastswitch      1599987559.25891
     2020-09-19 13:46:30   oldpulse        0.11
     2020-09-19 13:45:12   state           Calculating
     2020-09-19 13:46:30   temperature     23.5
     2020-09-18 15:13:58   timer1_Mo       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer2_Di       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer3_Mi       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer4_Do       04:00-15:00,D,22.5 15:00-20:00,C,23
     2020-09-18 15:13:58   timer5_Fr       04:00-12:00,D,22.5 12:00-20:00,C,23
     2020-09-18 15:13:58   timer6_Sa       08:00-22:00,C,23
     2020-09-18 15:13:58   timer7_So       08:00-22:00,C,23
   helper:
Attributes:
   group      Heizung
   maxOffTime 4:00,CD,0:30,5
   room       Haus->Heizung
   tempCosy   23
   tempDay    22.5
   tempNight  22
   tempRule1  Mo-Do 4:00,D 15:00,C 20:00,N
   tempRule2  Sa-So 8:00,C 22:00,N
   tempRule3  Fr 4:00,D 12:00,C 20:00,N
   verbose    5



und vom PWM

Internals:
   CFGFN      ./config/02_Heizungssteuerung.cfg
   CYCLETIME  1200
   DEF        60 1200 180 1 99,99 0,0,0
   FUUID      5c44e226-f33f-ec08-0062-7c0ec53d1a35a74e
   INTERVAL   60
   MINONOFFTIME 180
   MaxPulse   1
   MaxSwitchOffPerCycle 99
   MaxSwitchOnPerCycle 99
   NAME       XX_fh
   NR         333
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      lastrun: 2020-09-19 13:47:33
   TYPE       PWM
   p_cycletime 1200
   p_interval 60
   p_maxPulse 1
   p_minOnOfftime 180
   p_overallHeatingSwitch
   p_roomsMinOnOffThreshold 0,0,0
   READINGS:
     2020-09-18 15:13:58   OverallHeatingSwitch
     2020-09-18 15:13:58   OverallHeatingSwitchWaitBeforeOn
     2020-09-18 15:13:58   OverallHeatingSwitchWaitUntilOff
     2020-09-19 13:47:33   avgPulseRoomsOff 0.11
     2020-09-19 13:47:33   avgPulseRoomsOn 0
     2020-09-19 13:47:33   lastrun         calculating
     2020-09-13 20:48:42   maxOffTimeCalculation on
     2020-09-19 13:47:33   pulseAvg        0.11
     2020-09-19 13:47:33   pulseAvg2       0.11
     2020-09-19 13:47:33   pulseAvg3       0.11
     2020-09-19 13:47:33   pulseMax        0.11
     2020-09-19 13:47:33   pulseSum        0.66
     2020-09-19 13:47:33   roomsActive     6
     2020-09-19 13:47:33   roomsOff        6
     2020-09-19 13:47:33   roomsOn         0
     2020-09-19 13:47:33   roomsToStayOn   0
     2020-09-19 13:47:33   roomsToStayOnList
     2020-09-19 13:47:33   state           lastrun: 2020-09-19 13:47:33
   helper:
     pulses:
       pwm_AZ     0.11 / 0
       pwm_BZ     0.11 / 0
       pwm_Flur_OG 0.11 / 0
       pwm_HWR    0.11 / 0
       pwm_KZ     0.11 / 0
       pwm_WZ     0.11 / 0
Attributes:
   group      Heizung
   room       Haus->Heizung,System->Dienste
   verbose    0



Erwarten würde ich,dass das schalten nach 4 Stunden für 30 Minuten durchgeführt wird

im Log sieht das ganze recht "komisch"/flasch aus



2020.09.19 13:45:27 4 : PWMR_ReadRoom pwm_BZ: desT(23.0), actT(23.5 von(2020-09-19 13:37:35)), state(off)
2020.09.19 13:45:27 4 : PWMR_ReadRoom pwm_BZ: newpulse(0.11/00:00), oldpulse(0.11), lastSW(1599987559.25891 = 2020-09-19 13:44:44), window(0)
...
2020.09.19 13:45:27 4 : PWMR_ReadRoom pwm_BZ: candidate for maxOffTime actor(off) since 02:26:46 (23.5 <= 23.0 + 5)


der timestamp 1599987559.25891 = 2020-09-19 13:44:44   ist ja nicht richtig ?!
Ansonsten erkennt er a ber ja das er schon ein paar Tage nicht an ist/war.

Ist das ein Einstellungsproblem?  Danke dir.


[EDIT]
das Problemm scheint der Puls(new) zu sein, der IMMER 0.11 ist. Somit kommt man nie in die if Abfrage mit dem == 0 ... habs mal in <1 geändert... mal gucken. Vielleicht kannst hier noch was fixen. Wäre super!

[/EDIT]




BonesDone

Hallo,

Ich habe leider ein ähnliches Problem. Obwohl ich im PWM Modul die MaxOffTimeCalculation auf on gestellt habe, wirken in den jeweiligen PWMR Moudlen die MaxOffTimer nicht.

Wie kann ich feststellen was ich hier falsch mache?
Kann ich im LOG File etwas aussagekräftiges finden?

Danke!

BonesDone

jamesgo

Hallo BonesDone,

setze mal verbose auf 4

Hast du dann die "candidate for maxOffTime" Einträge im Log?

Besser ist du postest die Konfiguration von PWM und dem PWMR.

Grüße
Andreas

BonesDone

#789
Hallo Andreas

Das PWMR sieht so aus:
defmod FBH_Wohnzimmer_Links PWMR FBH 1,0.11 ESPEasy_Wohnzimmer_Wohnzimmer:Temperatur Relais_Wohnzimmer_Links
attr FBH_Wohnzimmer_Links alias FBH Wohnzimmer Kamin
attr FBH_Wohnzimmer_Links maxOffTime 4:00
attr FBH_Wohnzimmer_Links room 11 Wohnzimmer
attr FBH_Wohnzimmer_Links tempDay 24.0
attr FBH_Wohnzimmer_Links tempNight 23.0

setstate FBH_Wohnzimmer_Links Calculating
setstate FBH_Wohnzimmer_Links 2020-12-08 21:37:47 PWMOnTime 00:00
setstate FBH_Wohnzimmer_Links 2020-12-08 21:37:47 PWMPulse 0
setstate FBH_Wohnzimmer_Links 2020-12-08 19:52:47 actorState off
setstate FBH_Wohnzimmer_Links 2020-12-08 21:35:48 desired-temp 24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 21:37:47 desired-temp-used 24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 21:37:47 energyused 000000000000000000000000000000
setstate FBH_Wohnzimmer_Links 2020-12-08 21:37:47 energyusedp 0.0
setstate FBH_Wohnzimmer_Links 2020-12-08 19:52:47 lastswitch 1607453567
setstate FBH_Wohnzimmer_Links 2020-12-08 21:37:47 oldpulse 0.11
setstate FBH_Wohnzimmer_Links 2020-12-08 21:35:48 state Calculating
setstate FBH_Wohnzimmer_Links 2020-12-08 21:37:47 temperature 24.00
setstate FBH_Wohnzimmer_Links 2020-12-08 07:36:19 timer1_Mo 06:00-22:00,D,24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 07:36:19 timer2_Di 06:00-22:00,D,24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 07:36:19 timer3_Mi 06:00-22:00,D,24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 07:36:19 timer4_Do 06:00-22:00,D,24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 07:36:19 timer5_Fr 06:00-22:00,D,24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 07:36:19 timer6_Sa 08:00-22:00,D,24.0
setstate FBH_Wohnzimmer_Links 2020-12-08 07:36:19 timer7_So 08:00-22:00,D,24.0


Das PWM Modul sieht so aus:
defmod FBH PWM
attr FBH verbose 4

setstate FBH lastrun: 2020-12-08 21:38:47
setstate FBH 2020-12-07 20:07:33 OverallHeatingSwitch
setstate FBH 2020-12-07 20:07:33 OverallHeatingSwitchWaitBeforeOn
setstate FBH 2020-12-07 20:07:33 OverallHeatingSwitchWaitUntilOff
setstate FBH 2020-12-08 21:38:47 avgPulseRoomsOff 0.11
setstate FBH 2020-12-08 21:38:47 avgPulseRoomsOn 0
setstate FBH 2020-12-08 21:38:47 lastrun calculating
setstate FBH 2020-12-08 06:12:22 maxOffTimeCalculation on
setstate FBH 2020-12-08 21:38:47 pulseAvg 0.11
setstate FBH 2020-12-08 21:38:47 pulseAvg2 0.11
setstate FBH 2020-12-08 21:38:47 pulseAvg3 0.11
setstate FBH 2020-12-08 21:38:47 pulseMax 0.12
setstate FBH 2020-12-08 21:38:47 pulseSum 0.45
setstate FBH 2020-12-08 21:38:47 roomsActive 4
setstate FBH 2020-12-08 21:38:47 roomsOff 4
setstate FBH 2020-12-08 21:38:47 roomsOn 0
setstate FBH 2020-12-08 21:38:47 roomsToStayOn 0
setstate FBH 2020-12-08 21:38:47 roomsToStayOnList
setstate FBH 2020-12-08 21:38:47 state lastrun: 2020-12-08 21:38:47
setstate FBH 2020-12-08 06:12:12 timer1_Mo 06:00-22:00
setstate FBH 2020-12-08 06:12:12 timer2_Di 06:00-22:00
setstate FBH 2020-12-08 06:12:12 timer3_Mi 06:00-22:00
setstate FBH 2020-12-08 06:12:12 timer4_Do 06:00-22:00
setstate FBH 2020-12-08 06:12:12 timer5_Fr 06:00-22:00
setstate FBH 2020-12-08 06:12:12 timer6_Sa 08:00-22:00
setstate FBH 2020-12-08 06:12:12 timer7_So 08:00-22:00


Ich schau mal nach den "candidate for maxOffTime" ob ich einen Eintrag im Log finde.

Danke fürs Helfen!

Gruß BonesDone

Edit: Leider lässt sich im Log auch kein "candidate for maxOffTime" finden

jamesgo

Hallo,

poste doch bitte einen "list FBH_Wohnzimmer_links" bzw. "list FBH" das ist aussagekräftiger.

So wie es aussieht verwendest du nicht den PID Regler - das würde ich empfehlen

Häng doch noch "dummy 1:0.8:0.3,22:0.5,10" hinter die Definition vom Raum.

Grüße
Andreas

BonesDone

Hallo Andreas,

das list FBH_Wohnzimmer_Links:
Internals:
   ACTOR      Relais_Wohnzimmer_Links
   DEF        FBH 1,0.11 ESPEasy_Wohnzimmer_Wohnzimmer:Temperatur Relais_Wohnzimmer_Links dummy 1:0.8:0.3,22:0.5,10
   FUUID      5fce7076-f33f-37e0-330a-01a0d81bb335842c
   INTERVAL   300
   IODev      FBH
   NAME       FBH_Wohnzimmer_Links
   NR         41
   STATE      Calculating
   TEMPSENSOR ESPEasy_Wohnzimmer_Wohnzimmer:Temperatur
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      Relais_Wohnzimmer_Links
   c_PID_DFactor 0.5
   c_PID_DLookBackCnt 10
   c_PID_IFactor 0.3
   c_PID_ILookBackCnt 22
   c_PID_PFactor 0.8
   c_PID_useit 1
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_frostProtect 0
   c_tempC    22
   c_tempD    23.5
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    24
   c_tempRule1 1-5 0600,D 2200,N
   c_tempRule2 6-0 0800,D 2200,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   c_tempRuleS D
   h_deltaTemp -0.2
   h_deltaTemp_D -0.3
   p_actor    Relais_Wohnzimmer_Links
   p_factor   1,0.11
   p_maxOffTime 240
   p_maxOffTimePeriod 30
   p_maxOffTimeSelector DEC
   p_maxOffTimeTempLimit 0
   p_pid      1:0.8:0.3,22:0.5,10
   p_tsensor  ESPEasy_Wohnzimmer_Wohnzimmer:Temperatur
   p_window   dummy
   t_reading  Temperatur
   t_regexp   ([\d\.]+)
   t_sensor   ESPEasy_Wohnzimmer_Wohnzimmer
   w_regexp   .*[Oo]pen.*
   windows    dummy
   Helper:
     DBLOG:
       PID_DVal:
         logdb:
           TIME       1607796545.53611
           VALUE      -0.05
       PID_IVal:
         logdb:
           TIME       1607796545.53611
           VALUE      0.27
       PID_PVal:
         logdb:
           TIME       1607796545.53611
           VALUE      0.16
       PID_PWMOnTime:
         logdb:
           TIME       1607796545.53611
           VALUE      05:42
       PID_PWMPulse:
         logdb:
           TIME       1607796545.53611
           VALUE      38
       PWMOnTime:
         logdb:
           TIME       1607796305.51288
           VALUE      03:00
       PWMPulse:
         logdb:
           TIME       1607796305.51288
           VALUE      20
       actorState:
         logdb:
           TIME       1607796305.59036
           VALUE      on
       desired-temp:
         logdb:
           TIME       1607789405.26975
           VALUE      23.5
       desired-temp-used:
         logdb:
           TIME       1607796545.53611
           VALUE      23.5
       energyused:
         logdb:
           TIME       1607796545.5837
           VALUE      000000000011100000000000011111
       energyusedp:
         logdb:
           TIME       1607796545.5837
           VALUE      26.7
       lastswitch:
         logdb:
           TIME       1607796305.59036
           VALUE      1607796305
       state:
         logdb:
           TIME       1607796365.90725
           VALUE      Calculating
       temperature:
         logdb:
           TIME       1607796545.53611
           VALUE      23.30
   READINGS:
     2020-12-12 19:09:05   PID_DVal        -0.05
     2020-12-12 19:09:05   PID_IVal        0.27
     2020-12-12 19:09:05   PID_PVal        0.16
     2020-12-12 19:09:05   PID_PWMOnTime   05:42
     2020-12-12 19:09:05   PID_PWMPulse    38
     2020-12-12 19:05:55   actorState      on
     2020-12-12 19:06:05   desired-temp    23.5
     2020-12-12 19:09:05   desired-temp-used 23.5
     2020-12-12 19:09:05   energyused      000000000011100000000000011111
     2020-12-12 19:09:05   energyusedp     26.7
     2020-12-12 19:05:05   lastswitch      1607796305
     2020-12-12 19:09:05   oldpulse        0.38
     2020-12-12 19:06:05   state           Calculating
     2020-12-12 19:09:05   temperature     23.30
     2020-12-12 19:05:55   timer1_Mo       06:00-22:00,D,23.5
     2020-12-12 19:05:55   timer2_Di       06:00-22:00,D,23.5
     2020-12-12 19:05:55   timer3_Mi       06:00-22:00,D,23.5
     2020-12-12 19:05:55   timer4_Do       06:00-22:00,D,23.5
     2020-12-12 19:05:55   timer5_Fr       06:00-22:00,D,23.5
     2020-12-12 19:05:55   timer6_Sa       08:00-22:00,D,23.5
     2020-12-12 19:05:55   timer7_So       08:00-22:00,D,23.5
   helper:
     PID_D_previousTemps:
       23.20
       23.30
       23.30
       23.30
     PID_I_previousTemps:
       23.20
       23.30
       23.30
       23.30
Attributes:
   alias      FBH Wohnzimmer Kamin
   maxOffTime 4:00
   room       11 Wohnzimmer
   tempDay    23.5
   tempNight  24


Und das list FBH
Internals:
   CYCLETIME  900
   FUUID      5fcc027e-f33f-37e0-516d-2ff93f7c2ce9694d
   INTERVAL   60
   MINONOFFTIME 120
   MaxPulse   1
   MaxSwitchOffPerCycle 99
   MaxSwitchOnPerCycle 99
   NAME       FBH
   NR         32
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      lastrun: 2020-12-12 19:19:05
   TYPE       PWM
   p_cycletime 900
   p_interval 60
   p_maxPulse 1
   p_minOnOffThreshold
   p_minOnOfftime 120
   p_overallHeatingSwitch
   Helper:
     DBLOG:
       avgPulseRoomsOff:
         logdb:
           TIME       1607797145.66398
           VALUE      0.13
       avgPulseRoomsOn:
         logdb:
           TIME       1607797145.66398
           VALUE      0.75
       lastrun:
         logdb:
           TIME       1607797145.66398
           VALUE      calculating
       maxOffTimeCalculation:
         logdb:
           TIME       1607404342.62579
           VALUE      on
       pulseAvg:
         logdb:
           TIME       1607797145.66398
           VALUE      0.44
       pulseAvg2:
         logdb:
           TIME       1607797145.66398
           VALUE      0.75
       pulseAvg3:
         logdb:
           TIME       1607797145.66398
           VALUE      0.55
       pulseMax:
         logdb:
           TIME       1607797145.66398
           VALUE      1
       pulseSum:
         logdb:
           TIME       1607797145.66398
           VALUE      1.76
       roomsActive:
         logdb:
           TIME       1607797145.66398
           VALUE      4
       roomsOff:
         logdb:
           TIME       1607797145.66398
           VALUE      2
       roomsOn:
         logdb:
           TIME       1607797145.66398
           VALUE      2
       roomsToStayOn:
         logdb:
           TIME       1607797145.66398
           VALUE      0
       roomsToStayOnList:
         logdb:
           TIME       1607797145.66398
           VALUE     
       state:
         logdb:
           TIME       1607797145.66398
           VALUE      lastrun
       timer1_Mo:
         logdb:
           TIME       1607404332.3338
           VALUE      06:00-22:00
       timer2_Di:
         logdb:
           TIME       1607404332.3338
           VALUE      06:00-22:00
       timer3_Mi:
         logdb:
           TIME       1607404332.3338
           VALUE      06:00-22:00
       timer4_Do:
         logdb:
           TIME       1607404332.3338
           VALUE      06:00-22:00
       timer5_Fr:
         logdb:
           TIME       1607404332.3338
           VALUE      06:00-22:00
       timer6_Sa:
         logdb:
           TIME       1607404332.3338
           VALUE      08:00-22:00
       timer7_So:
         logdb:
           TIME       1607404332.3338
           VALUE      08:00-22:00
   READINGS:
     2020-12-07 20:07:33   OverallHeatingSwitch
     2020-12-07 20:07:33   OverallHeatingSwitchWaitBeforeOn
     2020-12-07 20:07:33   OverallHeatingSwitchWaitUntilOff
     2020-12-12 19:19:05   avgPulseRoomsOff 0.13
     2020-12-12 19:19:05   avgPulseRoomsOn 0.75
     2020-12-12 19:19:05   lastrun         calculating
     2020-12-08 06:12:22   maxOffTimeCalculation on
     2020-12-12 19:19:05   pulseAvg        0.44
     2020-12-12 19:19:05   pulseAvg2       0.75
     2020-12-12 19:19:05   pulseAvg3       0.55
     2020-12-12 19:19:05   pulseMax        1
     2020-12-12 19:19:05   pulseSum        1.76
     2020-12-12 19:19:05   roomsActive     4
     2020-12-12 19:19:05   roomsOff        2
     2020-12-12 19:19:05   roomsOn         2
     2020-12-12 19:19:05   roomsToStayOn   0
     2020-12-12 19:19:05   roomsToStayOnList
     2020-12-12 19:19:05   state           lastrun: 2020-12-12 19:19:05
     2020-12-08 06:12:12   timer1_Mo       06:00-22:00
     2020-12-08 06:12:12   timer2_Di       06:00-22:00
     2020-12-08 06:12:12   timer3_Mi       06:00-22:00
     2020-12-08 06:12:12   timer4_Do       06:00-22:00
     2020-12-08 06:12:12   timer5_Fr       06:00-22:00
     2020-12-08 06:12:12   timer6_Sa       08:00-22:00
     2020-12-08 06:12:12   timer7_So       08:00-22:00
   helper:
     pulses:
       FBH_WC_Gast 0.50 / 0
       FBH_Wohnzimmer_Links 1.00 / 0
       FBH_Wohnzimmer_Mitte 0.15 / 0
       FBH_Wohnzimmer_Rechts 0.11 / 0
Attributes:
   verbose    1


Den dummy 1:0.8:0.3,22:0.5,10 hab ich mal angehängt.
Was bewirkt dieser Dummy?

Welchen Einfluss haben die PID=0,1,2 Einstellungen auf die MaxOffTime?
Generell hab ich nicht ganz verstanden was PID=1 oder PID=2 macht.
Sehe ich das richtig, das der PID Regelalgorythmus Anhand des Stellwertes die Impuls/Pausezeit beeinflusst?

Vielen Dank nochmal für die Hilfe :) Generell ein sehr Starkes Modul!

Gruß, BonesDone

jamesgo

Hallo,
erst mal die Fragen:
nach dem Relais kommt der Parameter für einen Fenster Sensor ... dummy ist der Platzhalter wenn du keinen hast.
PID und MaxOffTime haben nichts miteinander zu tun.
Die Werte für PID beeinflussen die Berechnung des Impulses
PID=0 -> ein P Regler, er hat die Eigenschaft dass er den Sollwert normalerweise nicht erreicht. Da die FB Heizung träge ist wird die Solltemperatur meistens schon erreicht.
PID=1 oder 2 sind PID Regler die im Detail ein bisschen anders funktionieren. Ich bevorzuge 1, da der Einfluss der I Komponente begrenzt und er bei mir sehr gut funktioniert.
Ganz allgemein kann man sagen:
P - rechnet aufgrund der Temperaturdifferenz.
I - basiert auf der Steigung der Änderungskurve in der Vergangenheit. Dh. Temperatur steigt langsam (=länger "on") oder schnell (=früher "off"). Die PID=2 Variante errechnet die Steigung aus allen Änderungen. Die PID=1 Variante verwendet nur eine definierte Anzahl von Werten. Wenn man z.B. jede Minute rechnet und 20 Werte verwendet hat man also die Steigung der letzten 20 Minuten.
D - hat nicht viel Einfluss und dämpft das Schwingen (wenn ich mich richtig erinnere)

Der P-Regler alleine würde bei einen kleinen Differenz immer weiter vom "gas" gehen (pulsen). Der I Anteil sagt praktisch "ich heize schon lange und es wird nur ganz langsam warm ... also bleibe ich bei 100% bis ich das Soll erreicht habe oder der Temperaturanstieg signifikant wird".

Deine Parameter schaue ich gleich an.

Grüße
Andy

jamesgo

Ich vermute mal dass du dir wünscht dass die maxOffTime nachts zuschlägt.
Der Default ist "DCE", dh. Wenn die Temperatur tempD, tempC oder tempE per Zeitregel ausgewählt ist.

Du hast z.B Montags 6:00-22:00,D,23.5 definiert; d.h zwischen 22:00 und 6:00 wird tempN gewählt (ist bei dir 24 - willst du das wirklich?).

Falls ich richtig liege solltest du maxOffTime als "4:00,NDCE" definieren.


BOFH

#794
Zitat von: jamesgo am 02 Dezember 2020, 15:41:27
Hallo,

irgendwie ist mir die Benachrichtigung über neue Posts verlorengegangene - deshalb die verspätete Antwort.

Was dir fehlt ist beim PWM das Reading "maxOffTimeCalculation". Du bekommst es mit "set maxOffTimeCalculation on".

Die maxOffTime wird getrennt von den Pulsen über separate Returnwerte abgehandelt.

VG
Andy

Hey Andy,
super das du noch reagierst :) Denke das galt mir? 
In meinem List sieht man, dass das eingeschaltet ist.

--- 94_PWM.pm 2020-12-18 12:46:02.065376905 +0100
+++ ../94_PWM.pm 2020-10-06 19:41:49.996935950 +0200
@@ -901,7 +901,8 @@
        return ("on", $newpulse, $cycletime, $actorV);
     }

-    if ($newpulse == 0) {
+ #if ($newpulse == 0) {
+    if ($newpulse < 1) {

       # ----------------
       # check if maxOffTime protection is activated (attribute maxOffTimeIdlePeriod is set)


Das ist meine patch file. Soweit ging es damit auch... aber sicher nicht der Sinn dahinter ....
Ich hab die Änderungen noch mal rückgängig gemacht und prüfe noch mal.

Hab den Befehl einfach noch mal an das PWM geschickt und nutze keine float werte mehr.
Normal sollte 22.5 < 23 sein aber vl liegt hier noch ein Fehler ?

Werd es testen und berichten :)

Lieben Gruß
Sebastian



[EDIT]

Also funzt iwi nicht... :(


maxOffTime 2:00,CDN,0:30,1

Tagtemp 22°
MinOff 2 Std. 
Alpha 1°

Ist 22.4

22.4° < 22° + 1 ° => Muss heißen für 30 minuten  da

     2020-12-17 19:31:38   lastswitch      1608229898
     2020-12-18 13:14:17   lastswitch_human 19:31 - 17.12

er seit gestern aus ist.
oder hab ich ein Gedanken Fehler ?

Liegts am pulsfactor  1,0.11   ?


Hier einmal das PWMR
Internals:
   ACTOR      SZ_RELAI2_Sw_01
   DEF        XX_fh_new 1,0.11 AZ_Thermostat:measured-temp SZ_RELAI2_Sw_01
   FUUID      5fb6d6bb-f33f-ec08-56e3-5aed6c7b2e870b05
   INTERVAL   300
   IODev      XX_fh_new
   NAME       pwm_AZ2
   NR         3036
   STATE      Calculating
   TEMPSENSOR AZ_Thermostat:measured-temp
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      SZ_RELAI2_Sw_01
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0.11
   c_frostProtect 0
   c_tempC    23
   c_tempD    22
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    21
   c_tempRule1 1-5 0400,D 1500,C 2000,N
   c_tempRule2 6-0 0800,C 2200,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   c_tempRuleS D
   p_actor    SZ_RELAI2_Sw_01
   p_factor   1,0.11
   p_maxOffTime 120
   p_maxOffTimePeriod 30
   p_maxOffTimeSelector CDN
   p_maxOffTimeTempLimit 1
   p_pid     
   p_tsensor  AZ_Thermostat:measured-temp
   p_window   
   t_reading  measured-temp
   t_regexp   ([\d\.]+)
   t_sensor   AZ_Thermostat
   w_regexp   .*[Oo]pen.*
   windows   
   READINGS:
     2020-12-18 13:14:17   PWMOnTime       00:00
     2020-12-18 13:14:17   PWMPulse        0
     2020-12-18 12:47:10   actorState      off
     2020-12-18 13:10:23   desired-temp    22.0
     2020-12-18 13:14:17   desired-temp-used 22.0
     2020-12-18 13:14:17   energyused      000000000000000000000000000000
     2020-12-18 13:14:17   energyusedp     0.0
     2020-12-17 19:31:38   lastswitch      1608229898
     2020-12-18 13:14:17   lastswitch_human 19:31 - 17.12
     2020-12-18 13:14:17   oldpulse        0.11
     2020-12-18 13:10:23   state           Calculating
     2020-12-18 13:14:17   temperature     22.4
     2020-12-18 12:47:10   timer1_Mo       04:00-15:00,D,22 15:00-20:00,C,23
     2020-12-18 12:47:10   timer2_Di       04:00-15:00,D,22 15:00-20:00,C,23
     2020-12-18 12:47:10   timer3_Mi       04:00-15:00,D,22 15:00-20:00,C,23
     2020-12-18 12:47:10   timer4_Do       04:00-15:00,D,22 15:00-20:00,C,23
     2020-12-18 12:47:10   timer5_Fr       04:00-15:00,D,22 15:00-20:00,C,23
     2020-12-18 12:47:10   timer6_Sa       08:00-22:00,C,23
     2020-12-18 12:47:10   timer7_So       08:00-22:00,C,23
   helper:
Attributes:
   group      Heizung
   icon       sani_floor_heating
   maxOffTime 2:00,CDN,0:30,1
   room       Haus->Heizung
   tempCosy   23
   tempDay    22
   tempNight  21
   tempRule1  Mo-Fr 4:00,D 15:00,C 20:00,N
   tempRule2  Sa-So 8:00,C 22:00,N
   userReadings lastswitch_human {
my ($S, $M, $H, $d, $m, $Y) = localtime(ssGetReading($NAME, "lastswitch"));
$m += 1;
$Y += 1900;
sprintf("%d:%d - %d.%d", $H, $M, $d, $m);
}
   verbose    5


und das PWM


Internals:
   CYCLETIME  900
   DEF        60 900 180 1 99,99 0,0,0
   FUUID      5fb6d4c5-f33f-ec08-efd6-7535dbdb26c94d44
   INTERVAL   60
   MINONOFFTIME 180
   MaxPulse   1
   MaxSwitchOffPerCycle 99
   MaxSwitchOnPerCycle 99
   NAME       XX_fh_new
   NR         3035
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0
   OverallHeatingSwitch
   OverallHeatingSwitch_delayTimeOn
   OverallHeatingSwitch_followUpTime
   OverallHeatingSwitch_regexp_on
   OverallHeatingSwitch_roomBased
   OverallHeatingSwitch_threshold
   STATE      lastrun: 2020-12-18 13:17:26
   TYPE       PWM
   p_cycletime 900
   p_interval 60
   p_maxPulse 1
   p_minOnOfftime 180
   p_overallHeatingSwitch
   p_roomsMinOnOffThreshold 0,0,0
   READINGS:
     2020-12-18 12:47:10   OverallHeatingSwitch
     2020-12-18 12:47:10   OverallHeatingSwitchWaitBeforeOn
     2020-12-18 12:47:10   OverallHeatingSwitchWaitUntilOff
     2020-12-18 13:17:26   avgPulseRoomsOff 0.11
     2020-12-18 13:17:26   avgPulseRoomsOn 0
     2020-12-18 13:17:26   lastrun         calculating
     2020-12-18 13:09:03   maxOffTimeCalculation on
     2020-12-18 13:17:26   pulseAvg        0.11
     2020-12-18 13:17:26   pulseAvg2       0.11
     2020-12-18 13:17:26   pulseAvg3       0.11
     2020-12-18 13:17:26   pulseMax        0.11
     2020-12-18 13:17:26   pulseSum        0.11
     2020-12-18 13:17:26   roomsActive     1
     2020-12-18 13:17:26   roomsOff        1
     2020-12-18 13:17:26   roomsOn         0
     2020-12-18 13:17:26   roomsToStayOn   0
     2020-12-18 13:17:26   roomsToStayOnList
     2020-12-18 13:17:26   state           lastrun: 2020-12-18 13:17:26
   helper:
     pulses:
       pwm_AZ2    0.11 / 0
Attributes:
   room       Haus->Heizung
   verbose    5
RasPi 4
ZWave.me ZME_UZB (Fibaro Auge Gen.2)/ HM-USB2 (Thermostat | Hutschienen Relais | 1-/2fach Schalter) / Enigma2 / PhilipsTV / Philips HUE (GO|Bulb|Stripe (plus)) / Somfy IO Rollos / BOSCH HSG636XS6 / SONOS (P1, P3, P5 2.Gen, SUB, Bar)