Fussbodenheizung mit PWM steuern

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

Vorheriges Thema - Nächstes Thema

jamesgo

Hallo Sebastian,

dein Fix ist nicht optimal aber du liegst nicht ganz falsch.

Das Problem ist, dass du den P-Regler statt dem PID-Regler verwendest, denn dort ist newpulse nie 0. Das sieht man auch an deinem Reading. Der Offset (0.11) wird immer addiert - egal wie die Temperaturdifferenz ist.

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)


Bei dem PID Regler (verwende und empfehle ich) wird newpulse schon 0 und dann passt auch die Logik.

Ich muss mir das in Ruhe nochmal anschauen und mache einen Fix dafür. (entweder ($newpulse == $room->{c_foffset}) oder ($maxOffTimeApply > 0). Bei letzterem muss die Abfrage aber evtl. an eine andere Stelle)

Viele Grüße
Andy

jamesgo

Hallo Sebastian,

Versuche doch mal folgendes (wenn du den P-Regler behalten willst)

if ($newpulse == 0 or ($maxOffTimeApply > 0 and $room->{c_PID_useit} eq 0)) {


Die Entscheidung dass 0.11*cycletime < MINONOFFTIME wird erst viel später getroffen und eine kleine Temperaturdifferenz hat auch schon Einfluss auf $newpulse (0.1 Grad ändert den Wert von 0.11 auf 0.12).

Deshalb würde ich die Logik für den PID Regler gerne lassen wie sie ist (denn da steigt $newpulse schnell bis auf 1 wenn die Temperatur über einen längeren Zeitraum zu niedrig ist) und für den P-Regler (da spielt die Zeit kleine Rolle sondern nur die Temperaturdifferenz) eine Ausnahme definieren.

Wenn du das erfolgreich testen kannst dann würde ich das einchecken.

VG
Andy

BOFH

Hey Andy,

gerade eingepflegt und reloaded ... mal schauen

Zitat
Versuche doch mal folgendes (wenn du den P-Regler behalten willst)
alternative ? Nutzt das wenn ich mich recht entsinne aufgrund der Beispiele in der doku

Lieben Gruß
Sebastian
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)

jamesgo

Alternative: PID Regler
Häng einfach "dummy 1:0.8:0.3,22:0.5,10" hinter die Definition vom Raum.

BOFH

Zitat von: jamesgo am 19 Dezember 2020, 19:06:05
Alternative: PID Regler
Häng einfach "dummy 1:0.8:0.3,22:0.5,10" hinter die Definition vom Raum.

Guck ich mir bei Gelegenheit an. Erst mal Test ich das so.
Schaut soweit gut aus.
Was mir allerdings im svg auffällt, das er morgens um 7:30 neue soll Temperatur hat, allerdings geht die Heizung ca 30 min später an.
Muss ich genauer verfolgen....
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)

BonesDone

Zitat von: jamesgo am 15 Dezember 2020, 14:14:51
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.

Hallo Jamesgo,

Ich will eigentlich damit erreichen, dass bei mehr Sonneneinstrahlung oder wenn ich meinen Holzofen im Wohnzimmer anheize, der Fußboden nicht auskühlt. Im Optimalfall, bleibt der Fußboden immer so leicht warm, das mein Sohnemann auch bequem darauf spielen kann und nicht auf dem kalten Boden rumkrabbelt.

In meinem Wohnzimmer ist die Temperatur insgesammt sehr schwer einzustellen. Angefangen habe ich mit einem Versuch eines Hydraulischen Abgleichs. Aber mit 3 Heizzonen im Wohnzimmer und noch eine zusätlich in der Angeschlossenen Küche war das sehr schwierig. Wenn das Stellventil für den Durchfluss nur minimal geändert wurde, oder die Vorlauftemperatur über die Heizkuve des Kessels etwas geändet hat, so war sehr schnell viel Wärme im Raum bzw. fehlte diese dann. Darum habe ich erst überhaupt mit FHEM angefangen um über Stellantriebe dieses Temperaturproblem in den Griff zu bekommen.

Allerdings habe ich immer noch das Problem, dass wenn die einzelnen Zonen zu lange angesteuert werden, zu viel Energie im Fußboden steckt, und dann die Ventile ewig geschlossen bleiben. Bis dann nach Stunden der Boden wieder kälter wird bzw. die Fließen dann richtig kalt sind. Und genau das will ich eben mit der MaxOffTime vermeiden.

Zitat von: jamesgo am 15 Dezember 2020, 13:47:38
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

Hallo Andy

vielen Dank für deine Erklärung. Das umschalten auf PID hat schon etwas gebracht.
Sehe ich das allerdings dann richtig, dass wenn ich den ILookBackCnt=22 bei einer PWM Zeit von einer Minute, dann "nur" 22 Minuten der letzen Werte berüchsichtig werden?

Viele Grüße, BonesDone

jamesgo

Hallo BonesDone,
ja, das siehst du richtig.

Beim I-Teil geht es darum festzustellen ob die Temperatur steigt, fällt oder gleich bleibt.

Wenn der Zeitraum zu gross ist, wird die Berechnung der Steigung "verwischt".
Stell dir vor du hast: fällt, fällt, fällt, bleibt gleich, bleib gleich, bleibt gleich, steigt, steigt, steigt
Dann ist es besser die letzen 4 (besser 3) Werte zu verwenden als alle 9.
Wenn du alle 9 verwendest dann ist das Ergebnis: "die Temperatur ist konstant".

Übrigens genau für deinen Anwendungsfall habe ich die Parameter entwickelt. Ich habe auch einen Kachelofen und wenn der an war, dann hatte ich als Barfußgeher immer "Eisbeine".

Inzwischen haben wir (Dank Hilfe von Sebastian) festgestellt dass die maxOffTime beim P-Regler keine Funktion hatte. Er testet gerade einen Patch. Ich finde den PID Regler aber besser und damit funktioniert das auch bei mir seht gut.

Das "NDCE" brauchst du also nur wenn maxOffTime auch Nachts zuschlagen soll.

Viele Grüße
Andy

BOFH

Schön, dass wir alle gern warme Füße möchten :)

Sry für die "später" Rückmeldung. Die Fußbodenheizung ist ja etwas tr#ger :)

Grundlegend scheint er die Heizungsphasen anzusteuern. Allerdings gibts einpaar Probleme bei den Zeiten.
Ich dachte erst, dass das an einem neuen Timer Abschnitt liegt.
Ist es aber nicht.

timer2_Di
04:00-15:00,D,22.5 15:00-20:00,C,23

maxOffTime    2:00,CDN,01:00,1


1 - 2 Uhr -> dauer 1 stunde   OK
4 - 5 Uhr -> dauer 1 stunde, diff 2 stunden    OK

6:30 - 7:30 Uhr -> dauer 1 stunde, diff 1:30    NICHT ganz ok
8:45 - 10 Uhr -> dauert 1:15 Stunde, diff 1:15   NICHT ganz ok

12 - 13 Uhr -> Dauert 1 Stunde Diff 2   OK
15 - 16 Uhr -> Dauert 1 Stunde, diff 2    OK

In der Grafik stimmen Aktor Zeit mit Relai Zeit, versetzt mit ein paar minuten aufgrund der Trägheit des Relais, überein.


5 Uhr geht er aus  6:30 wieder an  - Die Temperatur liegt IMMER überm soll , was ja ok ist da ich theoretisch alle zwei stunden eine heize ....


Hast du eine Idee woran das liegt ? Hab den Verbose mal für das Zimmer auf 5 gestellt. ... wenn es heute nacht


P.s.  Ich weiß noch nicht wie die Relais geschaltet werden, wenn ist < soll wird.  Andersrum setzt er das Heizen aus, wie er soll.
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)

jamesgo

Das Logfile ist der einzige Weg um die Logik genau zu analysieren. Verbose 4 sollte reichen.

Zwei Faktoren die du nicht vergessen darfst:
- Du hast p_maxOffTimeTempLimit = 1, d.h. die Logik zieht nur wenn "ist <= soll +1Grad". Dadurch kann der Zeitraum länger werden. (skalierung im Graph ist leider nicht optimal um das zu beurteilen)
- Wenn du mehrere Räume hast, die maxOffTime gesetzt haben, wird versucht diese zu synchronisieren (gleichzeitig "on").  Das bedeutet wenn bei einem Raum die Zeit um ist und bei einem zweiten die Hälfte der Zeit dann wird der zweite mit dem ersten geschalten (die Zeit kann dadurch kürzer werden). Verwendet man unterschiedliche p_maxOffTime dann zieht der Raum mit dem kürzeren den anderen immer mit. Ist das Zeitintervall und die Dauer gleich dann laufen die Räume nach dem ersten Mal synchron (solange die Temperatur das nicht verhindert).

Den Unterschied zwischen Aktor und Relais (sowie den Zeitversatz) verstehe ich nicht. Das Modul kennt den Parameter p_actor, da wird definiert was geschalten werden soll - normalerweise ein Relais. Das bekommt die Zustandsänderung aber nicht verzögert. Wenn an dem Relais ein Thermischer Stellantrieb hängt kann es ein bisschen dauern bis tatsächlich warmes Wasser fließt, aber der Graph sieht nicht so aus als ob eine (Vorlauf-) Temperatur angezeigt wird.

BOFH

#804
Hey Andy,

hab den Verbose vom PWMR nun auf 4 gestellt.
[edit]
... - cut - ...

habe gesehen, dass das Log vom gplot auf basis eines dummys erstellt wird, der mittels cron seine daten aufbereitet.
Ungünstig für "fehler" suche.  Habe jetzt eigenes log file für das Relai angelegt.... 

sorry mein fehler.
[/edit]

Die Bedingung ist <= soll + 1 grad stimmt ja für den kompletten Zeitraum laut graph und log ... also er fällt immer in die maxOffTime
Ich habe für alle räume eine maxOfftime definiert. Ich wusste nicht, dass das Modul diese zu synchronisieren versucht.


Mal gucken was nun mit echten daten passiert.....
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)

BOFH

Hey Andy,

hoffe hattest besinnliche Weihnachtstage.

Habe die beiden Logs nun vergleicht. Sieht soweit gut und richtig aus.
er heizt in den Gewünschten Zeiten bzw setzt es auch aus, wenn der Aktor an war(lastswitch). Bzw. heizt weiter, wenn die Soll Temperatur noch weit weg ist vim ist.
Bei einem kleineren alpha geht er dann in kleinere Impulse.

Hier noch mal eine Frage. Ich hatte irgendwo mal einen Zeitfaktor im PWM gelesen, der die minimale Zeitdauer fürs einschalten angibt, so dass das Relai auch tatsächlich an geht und wasser befördert. War das die minonofftime ?

Lieben Gruß
Sebastian
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)

jamesgo

Hallo Sebastian,

freut mich dass soweit alles funktioniert.

Ja, die minonofftime verhindert dass nur ganz kurz Aus- bzw. Angeschalten wird. Sie sollte so groß sein wie die Stellantriebe für einen Weg brauchen. Bei den thermischen Stellantrieben ist es so, dass die Zeit von "geschlossen" bis "voll offen" nur geringfügigig länger ist als umgekehrt. Daraus resultiert eine Zeitverzögerung aber die berechnete Pulszeit für "on" wird eingehalten.

Viele Grüße
Andy

dft606

Hallo zusammen,

ich verwende FHEM und PWM/PWMR auf einem RPI bereits seit über einem Jahr ohne Probleme.
Jetzt habe ich nach etwas mehr als einem Jahr die SD Karte am RPI ausgetauscht und FHEM neu installiert und das Backup eingespielt.

Jetzt habe ich das Problem, dass nicht mehr alle Räume korrekt geregelt werden. Der Aktor bleibt aus obwohl ein Puls von ca. 60% im PWMR steht, dieser ist korrekt, da die Temperatur kleiner Soll ist.

Hier das PWMR Modul:

Internals:
   CYCLETIME  900
   DEF        60 900 120 1 99,99 0,0,0 GPIO_23,0,900,on,0
   FUUID      5fe8420b-f33f-e90d-dde2-1f2facb1e7d6aea4
   INTERVAL   60
   MINONOFFTIME 120
   MaxPulse   1
   MaxSwitchOffPerCycle 99
   MaxSwitchOnPerCycle 99
   NAME       FBH_PWM
   NR         448
   NoRoomsToStayOff 0
   NoRoomsToStayOn 0
   NoRoomsToStayOnThreshold 0
   OverallHeatingSwitch GPIO_23
   OverallHeatingSwitchTT_maxTemp 25
   OverallHeatingSwitchTT_reading temperature
   OverallHeatingSwitchTT_t_regexp (\d+).*
   OverallHeatingSwitchTT_tsensor OWX_28_FF93176F1801
   OverallHeatingSwitch_delayTimeOn 0
   OverallHeatingSwitch_followUpTime 900
   OverallHeatingSwitch_regexp_on on
   OverallHeatingSwitch_roomBased on
   OverallHeatingSwitch_threshold 0
   STATE      lastrun: 2020-12-27 19:36:45
   TYPE       PWM
   p_cycletime 900
   p_interval 60
   p_maxPulse 1
   p_minOnOfftime 120
   p_overallHeatingSwitch GPIO_23,0,900,on,0
   p_roomsMinOnOffThreshold 0,0,0
   READINGS:
     2020-12-27 18:20:41   OverallHeatingSwitch on
     2020-12-27 09:15:53   OverallHeatingSwitchTT_Off 0
     2020-12-27 18:20:31   OverallHeatingSwitchWaitBeforeOn
     2020-12-27 19:36:45   OverallHeatingSwitchWaitUntilOff
     2020-12-27 19:36:45   avgPulseRoomsOff 0.15
     2020-12-27 19:36:45   avgPulseRoomsOn 1.00
     2020-12-27 19:36:45   lastrun         calculating
     2020-12-27 19:36:45   pulseAvg        0.25
     2020-12-27 19:36:45   pulseAvg2       1.00
     2020-12-27 19:36:45   pulseAvg3       0.89
     2020-12-27 19:36:45   pulseMax        1
     2020-12-27 19:36:45   pulseSum        4.31
     2020-12-27 19:36:45   roomsActive     17
     2020-12-27 19:36:45   roomsOff        15
     2020-12-27 19:36:45   roomsOn         2
     2020-12-27 19:36:45   roomsToStayOn   0
     2020-12-27 19:36:45   roomsToStayOnList
     2020-12-27 19:36:45   state           lastrun: 2020-12-27 19:36:45
   helper:
     pulses:
       EG_Bad_GPIO_07 1.00 / 0
       EG_Flur_GPIO_08 0.00 / 0
       EG_Kueche_GPIO_06 0.00 / 0
       EG_Naehzimmer_GPIO_04 0.56 / 0
       EG_WC_GPIO_09 0.00 / 0
       EG_Wohn_Esszimmer_GPIO_05 0.00 / 0
       KG_Arbeitszimmer_GPIO_13 0.00 / 0
       KG_Flur_GPIO_11 0.00 / 0
       KG_Hobbyraum_GPIO_15 0.00 / 0
       KG_Kellerraum_GPIO_20 0.00 / 0
       KG_Spielzimmer_GPIO_12 0.00 / 0
       OG_Bad_GPIO_10 0.47 / 0
       OG_Flur_GPIO_16 0.00 / 0
       OG_Kizi_1_GPIO_17 0.66 / 0
       OG_Kizi_2_GPIO_18 0.56 / 0
       OG_Kizi_3_GPIO_19 0.06 / 0
       OG_Schalfzimmer_GPIO_14 1.00 / 0
Attributes:
   overallHeatingSwitchThresholdTemp OWX_28_FF93176F1801:temperature:(\d+).*,25
   room       00_Heizung
   valveProtectIdlePeriod 30
   verbose    3


Hier der Auszug aus der LOG zur selben Zeit:

2020.12.27 19:36:45 3: PWM_Calculate FBH_PWM
2020.12.27 19:36:45 4: PWMR_ReadRoom EG_Bad_GPIO_07: desT(23.5), actT(22.4375 von(2020-12-27 19:36:28)), state(on)
2020.12.27 19:36:45 4: PWMR_ReadRoom EG_Bad_GPIO_07: newpulse(1.00/15:00), oldpulse(1), lastSW(1609074792 = 2020-12-27 14:13:12), window(0)
2020.12.27 19:36:45 3: PWM_CalcRoom EG_Bad_GPIO_07: F10 stay on
2020.12.27 19:36:45 4: PWMR_ReadRoom EG_Flur_GPIO_08: desT(22.0), actT(22.25 von(2020-12-27 19:36:26)), state(off)
2020.12.27 19:36:45 4: PWMR_ReadRoom EG_Flur_GPIO_08: newpulse(0.00/00:00), oldpulse(0), lastSW(1609065809 = 2020-12-27 11:43:29), window(0)
2020.12.27 19:36:45 4: PWMR_ReadRoom EG_Flur_GPIO_08: candidate for maxOffTime actor(off) since 00:07:53
2020.12.27 19:36:45 3: PWM_CalcRoom EG_Flur_GPIO_08: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom EG_Kueche_GPIO_06: F11 stay off (0)
2020.12.27 19:36:46 4: PWMR_ReadRoom EG_Naehzimmer_GPIO_04: desT(21.0), actT(20.25 von(2020-12-27 19:36:36)), state(off)
2020.12.27 19:36:46 4: PWMR_ReadRoom EG_Naehzimmer_GPIO_04: newpulse(0.56/08:24), oldpulse(0.67), lastSW(1609089643 = 2020-12-27 18:20:43), window(0)
2020.12.27 19:36:46 4: PWMR_ReadRoom EG_Naehzimmer_GPIO_04: candidate for maxOffTime actor(off) since 00:01:16
2020.12.27 19:36:46 3: PWM_CalcRoom EG_Naehzimmer_GPIO_04: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom EG_WC_GPIO_09: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom EG_Wohn_Esszimmer_GPIO_05: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom KG_Arbeitszimmer_GPIO_13: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom KG_Flur_GPIO_11: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom KG_Hobbyraum_GPIO_15: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom KG_Kellerraum_GPIO_20: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom KG_Spielzimmer_GPIO_12: F11 stay off (0)
2020.12.27 19:36:46 4: PWMR_ReadRoom OG_Bad_GPIO_10: desT(22.5), actT(21.8125 von(2020-12-27 19:35:58)), state(off)
2020.12.27 19:36:46 4: PWMR_ReadRoom OG_Bad_GPIO_10: newpulse(0.47/07:03), oldpulse(0.39), lastSW(1609093847 = 2020-12-27 19:30:47), window(0)
2020.12.27 19:36:46 3: PWM_CalcRoom OG_Bad_GPIO_10: F5 stay off
2020.12.27 19:36:46 3: PWM_CalcRoom OG_Flur_GPIO_16: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom OG_Kizi_1_GPIO_17: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom OG_Kizi_2_GPIO_18: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom OG_Kizi_3_GPIO_19: F11 stay off (0)
2020.12.27 19:36:46 3: PWM_CalcRoom OG_Schalfzimmer_GPIO_14: F10 stay on
2020.12.27 19:36:46 4: PWMR_SetRoom EG_Flur_GPIO_08 <>
2020.12.27 19:36:46 4: PWMR_SetRoom EG_Naehzimmer_GPIO_04 <>
2020.12.27 19:36:46 4: PWMR_SetRoom OG_Bad_GPIO_10 <>
2020.12.27 19:36:47 4: PWMR_SetRoom EG_Bad_GPIO_07 <>
2020.12.27 19:36:47 3: PWM_Calculate FBH_PWM done



Dies ist ein Raum von 17 der so regelt wie es sein soll:

Internals:
   ACTOR      GPIO_10
   DEF        FBH_PWM 1,0 OWX_28_4FF1711E1901 GPIO_10
   FUUID      5fe84260-f33f-e90d-2118-bb5ffa77650d5b2e
   INTERVAL   300
   IODev      FBH_PWM
   NAME       OG_Bad_GPIO_10
   NR         458
   STATE      Calculating
   TEMPSENSOR OWX_28_4FF1711E1901
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      GPIO_10
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0
   c_frostProtect 0
   c_tempC    22
   c_tempD    22.5
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    21.5
   c_tempRule1 1-5 0400,D 2000,N
   c_tempRule2 6-0 0400,D 2000,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   c_tempRuleS D
   p_actor    GPIO_10
   p_factor   1,0
   p_pid     
   p_tsensor  OWX_28_4FF1711E1901
   p_window   
   t_reading  temperature
   t_regexp   ([\d\.]+)
   t_sensor   OWX_28_4FF1711E1901
   w_regexp   .*[Oo]pen.*
   windows   
   READINGS:
     2020-12-27 19:36:46   PWMOnTime       07:03
     2020-12-27 19:36:46   PWMPulse        47
     2020-12-27 19:30:47   actorState      off
     2020-12-27 19:35:45   desired-temp    22.5
     2020-12-27 19:36:46   desired-temp-used 22.5
     2020-12-27 19:36:46   energyused      111111000000001111111110000000
     2020-12-27 19:36:46   energyusedp     50.0
     2020-12-27 19:30:47   lastswitch      1609093847
     2020-12-27 19:36:46   oldpulse        0.47
     2020-12-27 19:35:45   state           Calculating
     2020-12-27 19:36:46   temperature     21.8125
     2020-12-27 18:20:31   timer1_Mo       04:00-20:00,D,22.5
     2020-12-27 18:20:31   timer2_Di       04:00-20:00,D,22.5
     2020-12-27 18:20:31   timer3_Mi       04:00-20:00,D,22.5
     2020-12-27 18:20:31   timer4_Do       04:00-20:00,D,22.5
     2020-12-27 18:20:31   timer5_Fr       04:00-20:00,D,22.5
     2020-12-27 18:20:31   timer6_Sa       04:00-20:00,D,22.5
     2020-12-27 18:20:31   timer7_So       04:00-20:00,D,22.5
   helper:
Attributes:
   event-on-change-reading .*
   frostProtect 0
   room       00_Heizung
   tempDay    22.5
   tempFrostProtect 6
   tempNight  21.5
   tempRule1  Mo-Fr 4:00,D 20:00,N
   tempRule2  Sa-So 4:00,D 20:00,N
   verbose    5



Die ist ein Raum von denen die nicht richtig regeln:
(hier bleibt der Aktor auf OFF trotz Puls von 56)

Internals:
   ACTOR      GPIO_04
   DEF        FBH_PWM 1,0 OWX_28_FF832F331703 GPIO_04
   FUUID      5fe8931c-f33f-e90d-7362-881b2801901dbe17
   INTERVAL   300
   IODev      FBH_PWM
   NAME       EG_Naehzimmer_GPIO_04
   NR         466
   STATE      Calculating
   TEMPSENSOR OWX_28_FF832F331703
   TYPE       PWMR
   WINDOW     
   a_regexp_on on
   actor      GPIO_04
   c_PID_useit 0
   c_autoCalcTemp 1
   c_desiredTempFrom
   c_factor   1
   c_foffset  0
   c_frostProtect 0
   c_tempC    22
   c_tempD    21
   c_tempE    19
   c_tempFrostProtect 6
   c_tempN    20
   c_tempRule1 1-5 0400,D 2000,N
   c_tempRule2 6-0 0400,D 2000,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   c_tempRuleS D
   p_actor    GPIO_04
   p_factor   1,0
   p_maxOffTime 240
   p_maxOffTimePeriod 15
   p_maxOffTimeSelector D
   p_maxOffTimeTempLimit 0
   p_pid     
   p_tsensor  OWX_28_FF832F331703
   p_window   
   t_reading  temperature
   t_regexp   ([\d\.]+)
   t_sensor   OWX_28_FF832F331703
   w_regexp   .*[Oo]pen.*
   windows   
   READINGS:
     2020-12-27 19:37:45   PWMOnTime       08:24
     2020-12-27 19:37:45   PWMPulse        56
     2020-12-27 19:36:37   actorState      off
     2020-12-27 19:36:48   desired-temp    21.0
     2020-12-27 19:37:45   desired-temp-used 21.0
     2020-12-27 19:37:46   energyused      000000000000000000000000000000
     2020-12-27 19:37:46   energyusedp     0.0
     2020-12-27 18:20:43   lastswitch      1609089643
     2020-12-27 19:37:46   oldpulse        0.56
     2020-12-27 19:36:48   state           Calculating
     2020-12-27 19:37:45   temperature     20.25
     2020-12-27 19:36:37   timer1_Mo       04:00-20:00,D,21
     2020-12-27 19:36:37   timer2_Di       04:00-20:00,D,21
     2020-12-27 19:36:37   timer3_Mi       04:00-20:00,D,21
     2020-12-27 19:36:37   timer4_Do       04:00-20:00,D,21
     2020-12-27 19:36:37   timer5_Fr       04:00-20:00,D,21
     2020-12-27 19:36:37   timer6_Sa       04:00-20:00,D,21
     2020-12-27 19:36:37   timer7_So       04:00-20:00,D,21
   helper:
Attributes:
   frostProtect 0
   maxOffTime 4:00,D,0:15
   room       00_Heizung
   tempDay    21
   tempFrostProtect 6
   tempNight  20
   tempRule1  Mo-Fr 4:00,D 20:00,N
   tempRule2  Sa-So 4:00,D 20:00,N
   verbose    5



Ich bin jetzt nach 3 Tagen mit meinem Latein am Ende angelangt.
Bisher habe ich mehrmals alle PWM/PWMR gelöscht und mittels defmod neu angelegt.
Zum Test ein neues PWM Modul mit einem PWMR angelegt.
Ich habe alle "statistic" Definitionen gelöscht, da ich im Forum über einen Einfluss vom statistics Modul gelesen habe .
Alles ohne Erfolg.


Gibt es eine bestimmte Regel wo die Definition der PWM / PWMR in der fhem.cfg stehen muss.
Dürfen bestimmte andere Module (GPIO,...) nur vor oder nach der PWM/PWMR Definition stehen?


Über hilfreiche Tipps würde ich mich sehr freuen. Die Bude wird langsam kalt....


Gruß
Johannes

jamesgo

Hallo Johannes,

sieht so aus als ob du ein Opfer des letzten Fixes geworden bist. Du hast vermutlich die neueste Version von 94_PWM.pm und das scheint nicht so zu funktionieren wie gedacht.

Änder doch mal in dem Modul 94_PWM.pm die Zeile 905 von
if ($newpulse == 0 or ($maxOffTimeApply > 0 and $room->{c_PID_useit} eq 0)) {
in
if ($newpulse == 0) {

Ich muss mir noch genau anschauen was da passiert aber an der Stelle kommst du in das "F11 stay off (0)".

Grüße
Andy

dft606

Hallo Andy,

habe es eben geändert.
Werde berichten was es macht.

Gruß
Johannes