Fussbodenheizung mit PWM steuern

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

Vorheriges Thema - Nächstes Thema

phys1

Hallo,

das Verhalten mit dem Ausbleiben des On-Impulses beim Raum Wohnzimmer über Nacht war reproduzierbar. Anbei der neue Plot und Auszug aus der Log-Datei. Es könnte daran liegen, dass "Heizung_Wohnz" als letztes in der Schleife aufgerufen wird und "Heizung_Gartenz" als erstes (first come - first served) ohne zu berücksichtigen, dass andere schon viel länger warten...

Viele Grüße
phys1

jamesgo

habe gerade einen fix dafür eingecheckt.

phys1

Hallo,

danke für den schnellen fix.
Das Verhalten ist nun besser, s. Plot und Log-Datei, aber immer noch nicht perfekt. Es werden zwei Räume gleichzeitig mit maxOffTime Pulsen versorgt, obwohl maxOffTimeMode = 1 eingestellt war.

Viele Grüße
phys1

jamesgo

... das war die letzte "Optimierung" die das Problem verursacht hat.
Anbei der fix dazu.

Danke für's testen

phys1

Hallo,

mit der letzten PWM Version vom 18.3.21 funktioniert maxOffTimeMode = 1 nun korrekt.

Viele Grüße
phys1

Skusi

Hallo zusammen, und "Frohe Ostern"

Ich fahre ja nun meine 3 Wohnzimmer Heitkreise über einen separates PWM Modul:
   
Def: 600 1200 300 0.95 1,3 0,2,0.6 Waermebedarf_WZ,0.2,0,,180

Das funktioniert sehr gut, und ich habe damit mein Ziel erreicht das immer nur ein Kreis zur Zeit auf ist.

Nun habe ich die desired Temp der 3 Heizkreise für 2 Tage auf einen niedrigeren Wert gestellt um den Raum reduziert zu heizen. Das hat auch super funktioniert.
Aber als ich wieder zum normal Betrieb zurückkehren wollte und die Soll Temperatur wieder auf den alten Wert gesetzt habe zeigte sich ein mir nicht nachvollziehbares Verhalten.

Nur ein Heizkreis hat weit über die Pulsetime hinweg über Stunden versucht alleine den Raum aufzuheizen. Die anderen Kreise kamen nicht zum Zug. Ich hätte erwartet das nach Ablauf der 0,98 * 1200 Pulsetime auf einen anderen Heizkreis umgeschaltet wird und dann nach der selben Zeit auf den dritten usw.

In dem Plot kann man gut sehen was ich meine.

Um ca 11 Uhr habe ich die NoRoomsToStayOff von 2 auf 1 geändert. Und weil das immer noch nicht den gewünschten Effekt hatte habe ich dann nochmal um ca 16 Uhr den Wert auf 0 herab gesetzt. Danach lief auch alles so wie ich es erwartet hatte.

Nach dem der Raum seinen Sollwert erreicht hatte habe ich den NoRoomsToStayOff wieder auf die gewohnten 2 gesetzt und solange ich nicht absenke wird die Temperatur sauber durch reihum Heizen der einzelnen Kreise gehalten.

Wo liegt der Fehler ???


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

jamesgo

Hallo Skusi,

du hast maxPulse = 0.95 und cycletime = 1200. Dh. 0.95 * 1200 = 1140 was bedeutet dass nach 1140 Sekunden für 60 Sekunden "off" angesagt ist. Gleichzeitig ist deine minonofftime = 300. Das heisst aber alles unter 300 Sekunden führt zu keinem Schalten.

Grüße
Andy

Skusi

::) Oh mann, peinlich, natürlich !!!
Danke jamesgo das Du  mir das nochmal vorgerechnet hast.

Das kommt daher das ich die Cycletime für diesen PWM kürzlich auf die 1200 gekürzt habe, aber nicht an minonofftime gedacht habe.

Gruß Skusi
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

dft606

Hallo zusammen,

ich habe nun in der Übergangszeit folgendes festgestellt.
Über "overallHeatingSwitchThresholdTemp OWX_28_FF93176F1801:temperature:(\d+).*,18" habe ich im PWM Modul definiert, dass ab 18°C Aussentemperatur die Heizkreispumpe ausgeschaltet wird.
Das Ausschalten funktioniert wunderbar.
Jedoch laufen die Räume (PWMR) trotzdem weiter, wenn die Solltemperatur noch nicht erreicht ist.

Gibt es einen Parameter der gesetzt werden kann um auch die PWMR's auszuschalten?


Gruß
Johannes

jamesgo

Hallo Johannes,

wenn das PWM weiter rechnet wird der overallHeatingSwitch immer wieder neu gesetzt.

Du hast mehrere Möglichkeiten:
- Attribut "disable" bei jedem Raum setzen (finde ich nicht so gut)
- Attribut "disable" bei dem PWM - ich glaub das hört sofort auf zu rechnen und alle Räume bleiben wie sie sind inclusive overallHeatingSwitch - bin mir aber nicht 100% sicher
- besser finde ich "set roomX frostProtect on" für jeden Raum.

Dann wird die Solltemperatur auf 6° reduziert und alle Räume bleiben aus ... somit bleibt auch der overallHeatingSwitch auf off.
Das hat den Vorteil, dass man in der Übergangszeit relativ einfach einzelne Räume wieder beheizen kann. Bei mir werden als erstes die Flure nicht mehr beheizt und Esszimmer/Wohnzimmer bleibt an.

- ausgefallener, aber auch möglich wäre es bei jedem Raum ein dummy als Fenstersensor mit zu definieren den man dann auf "open" setzt. Dann sinkt die Solltemperatur auch auf 6 Grad.

Grüße
Andreas


Kornelius777

Hallo zusammen!

Ich habe am Wochenende viele, viele Stunden mit PWM und PWMR verbracht.
Wow! DANKE für diese tolle Programmier-Arbeit!

Ein kleiner Hinweis:

Heute morgen habe ich fhem neu gestartet und musste feststellen, dass anschließend jeder einzelne PWMR auf "actorState=off" stand.
Tatsächlich war allerdings zu dem Zeitpunkt ein Relais auf "an".

Wäre es möglich, beim Neustart eine Abfrage zu machen, die den momentanen Schaltzustand der Aktoren feststellt?

Grüße in die Runde!

Kornelius

Kornelius777

#866
Ah - noch zwei Dinge, die mir nicht ganz klar sind:

1. Wie schalte ich die tempRules komplett ab? Ich möchte keine Nachttemperatur/Nachtabsenkung benutzen.

2. Ich habe "maxOffTime=4:00" eingestellt. Leider tut sich da nix. Muss ich sonst noch etwas tun, damit das aktiv wird? (Siehe: EDIT3)

Grüße!

Kornelius


EDIT: die tempRules habe ich nun gelöscht, indem ich eine tempRule1 vergeben und anschließend wieder gelöscht habe.
Ich hoffe, das führt nicht irgendwie zu ungewolltem Verhalten?

EDIT2: Wie bekomme ich denn eigentlich den OverallHeatingSwitch nachträglich eingefügt?
Über setreading?

EDIT3: zu maxOffTime: Ich hatte maxOffTimeCalculation nicht aktiviert  :-X
So kann das ja nix werden...

jamesgo

Hallo Kornelius,
es freut mich wenn dir die Module gefallen.

tempRule2: wenn du eine tempRule1 hast, aber keine tempRule2 dann wird der Default für tempRule2 deaktiviert. Also z.B tempRule1 auf "Mo-So 0:00,d" setzten.

EDIT2: im GUI auf "DEF" klicken und die Definition lt. commandref anpassen. Danach speichern und evtl. "shutdown restart" ausführen

Viele Grüße
Andreas

Zitat von: Kornelius777 am 08 November 2021, 11:20:49
Ah - noch zwei Dinge, die mir nicht ganz klar sind:

1. Wie schalte ich die tempRules komplett ab? Ich möchte keine Nachttemperatur/Nachtabsenkung benutzen.

2. Ich habe "maxOffTime=4:00" eingestellt. Leider tut sich da nix. Muss ich sonst noch etwas tun, damit das aktiv wird? (Siehe: EDIT3)

Grüße!

Kornelius


EDIT: die tempRules habe ich nun gelöscht, indem ich eine tempRule1 vergeben und anschließend wieder gelöscht habe.
Ich hoffe, das führt nicht irgendwie zu ungewolltem Verhalten?

EDIT2: Wie bekomme ich denn eigentlich den OverallHeatingSwitch nachträglich eingefügt?
Über setreading?

EDIT3: zu maxOffTime: Ich hatte maxOffTimeCalculation nicht aktiviert  :-X
So kann das ja nix werden...

jamesgo

Hallo Kornelius,

eigentlich wird der actorState beim starten gesetzt.

Es hängt aber davon ab wie dein Aktor definiert ist. Hier der Code. Wenn du deinen Aktor postest kann ich das weiter analysieren.

Viele Grüße
Andreas


     if ($defs{$room->{actor}}->{TYPE} eq "RBRelais") {
      $actorV = ($defs{$room->{actor}}->{STATE} =~ /^$a_regexp_on$/) ? "on" : "off";
      $room->{READINGS}{actorState}{VAL} = $actorV;
    } elsif (defined($defs{$room->{actor}}->{STATE})) {
      $actorV = ($defs{$room->{actor}}->{STATE} =~ /^$a_regexp_on$/) ? "on" : "off";
      $room->{READINGS}{actorState}{VAL} = $actorV if ($room->{READINGS}{actorState}{VAL} eq "unknown");
    } elsif (defined($defs{$room->{actor}}->{READINGS}{state}{VAL})) {
      $actorV = ($defs{$room->{actor}}->{STATE} =~ /^$a_regexp_on$/) ? "on" : "off";
      $room->{READINGS}{actorState}{VAL} = $actorV if ($room->{READINGS}{actorState}{VAL} eq "unknown");
    } else {
      $actorV = $room->{READINGS}{actorState}{VAL};
    }


Zitat von: Kornelius777 am 08 November 2021, 11:04:29
Hallo zusammen!

Ich habe am Wochenende viele, viele Stunden mit PWM und PWMR verbracht.
Wow! DANKE für diese tolle Programmier-Arbeit!

Ein kleiner Hinweis:

Heute morgen habe ich fhem neu gestartet und musste feststellen, dass anschließend jeder einzelne PWMR auf "actorState=off" stand.
Tatsächlich war allerdings zu dem Zeitpunkt ein Relais auf "an".

Wäre es möglich, beim Neustart eine Abfrage zu machen, die den momentanen Schaltzustand der Aktoren feststellt?

Grüße in die Runde!

Kornelius

Kornelius777

Mein Aktor ist jeweils ein Sonoff-Switch (modifiziert mit ESPEasy)
Die sehen alle gleich aus - bis auf die verschiedenen GPIOs
Hier z.B. der Schalter vom Wohnzimmer:

defmod ESPEasy_ESP_Easy_SW3_WoZi ESPEasy 192.168.150.220 80 espbridge ESP_Easy_SW3_WoZi
attr ESPEasy_ESP_Easy_SW3_WoZi DbLogExclude .*
attr ESPEasy_ESP_Easy_SW3_WoZi DbLogInclude Relay,RelayPlot
attr ESPEasy_ESP_Easy_SW3_WoZi Interval 300
attr ESPEasy_ESP_Easy_SW3_WoZi eventMap /gpio 12 on:on/gpio 12 off:off/gpio 12 gpio:off/gpio 12 output:off/
attr ESPEasy_ESP_Easy_SW3_WoZi group ESPEasy Device
attr ESPEasy_ESP_Easy_SW3_WoZi presenceCheck 1
attr ESPEasy_ESP_Easy_SW3_WoZi readingSwitchText 1
attr ESPEasy_ESP_Easy_SW3_WoZi room ESPEasy,Wohnzimmer
attr ESPEasy_ESP_Easy_SW3_WoZi setState 3
attr ESPEasy_ESP_Easy_SW3_WoZi userReadings RelayPlot {ReadingsVal("ESPEasy_ESP_Easy_SW3_WoZi","Relay",0) eq "on"?1:0}

setstate ESPEasy_ESP_Easy_SW3_WoZi Rel: on
setstate ESPEasy_ESP_Easy_SW3_WoZi 2021-11-08 05:12:01 IODev espbridge
setstate ESPEasy_ESP_Easy_SW3_WoZi 2021-11-08 17:12:09 Relay on
setstate ESPEasy_ESP_Easy_SW3_WoZi 2021-11-08 17:12:48 RelayPlot 1
setstate ESPEasy_ESP_Easy_SW3_WoZi 2021-11-08 17:12:48 presence present
setstate ESPEasy_ESP_Easy_SW3_WoZi 2021-11-08 17:12:48 state Rel: on