Fussbodenheizung mit PWM steuern

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

Vorheriges Thema - Nächstes Thema

Reinhart

FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Reinhart

Hallo Andy!

Ich bin fest am Testen und komme mit deinen letzten Tipps jetzt ganz gut klar.
Der Regler funktioniert sehr gut aber es gibt noch einiges an Feintuning (die richtigen Zeitprogramme und die Temperaturen einjustieren).

Das einzige was mir noch aufgefallen ist, das Modul 94_PWM ist nicht für Eventmaps ausgelegt.

attr Kueche eventMap on:Ein off:Aus
Wir das attr eventMap verwendet, findet das Modul den "current state" nicht mehr und ich laufe bei FS20 Komponenten schnell außerhalb des "duty cycle" (1% Regel) der maximalen Frequenzbelegungsdauer weil dann alle Minuten der gleiche Befehl gesendet wird.

zB:hier in Zeile 427
if ($actorV eq "on")                   # current state is "on"

ich habe den eventMap entfernt, dann funktioniert auch alles wie es soll.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

jamesgo

Hallo Reinhart,

ich muss mir mal anschauen wo und wie die eventMap greift und wie ich das im Modul berücksichten sollte.
Für "on-for-timer" gibt es eine entsprechende Routine die man verwenden muss um das zu unterstützten.

Verstehe ich richtig, dass dein Aktor "Ein" und "Aus" kennt und das PWM Modul "on" und "off" erwartet?

Ich bin mir nicht sicher ob die eventMap an dieser Stelle das Richtige ist, da es bei "Kueche" kein "set on" gibt.
Im Moment glaube ich, dass du entweder bei deinem Aktor mappen musst oder das PWMR Modul einen regular expression für den "on" Status benötigt. (analog zum Status des Fensters)
Allerdings passiert dann auch irgendwann ein "set <actor> off". Würde die eventMap das in ein "set <actor> on" umwandeln?

Grüße
Andy

Reinhart

#18
Hallo Andy!

eigentlich geht es um diese Definiton:

define roomKitchen PWMR fh 1 FHT_Kueche Kueche
hier ist "Kueche" ein ganz normaler FS20 Schalter (der schaltet die Pumpe der FB), die FHT_Kueche dagegen ein FHT80b (die regelt zusätzlich das Ventil FHT8V). Das Mapping sitzt hier auf "Kueche".
Ich habe festgestellt, das trotz eventMap die Befehle "set Kueche on" genau so wie "set Kueche Ein" funktionieren, aber der STATE ist dann der Wert des eventMap, also dann statt "on" nur "Ein". Diesen state wertet das Modul dann aus.

Ich kann mir vorstellen, dass es möglich sein müsste auszulesen ob auf dem "Relais" Kueche ein eventMap existiert und wenn ja dann die Variable einlesen. Somit hast du den Text für den Vergleich. Der könnte ja auch "läuft" oder sonst irgendwas sein.

# state changed and it is worth to move the device

            if ($newstate eq "on") {
              $RoomsToSwitchOn{$d}   = $newpulse;

            } elsif ($newstate eq "off") {
              $RoomsToSwitchOff{$d}  = $newpulse;

hier ist so eine Stelle im Source wo du die Entscheidung eines Befehles triffst.
Ich kenne jetzt die Syntax nicht genau, aber könnte es mir sinngemäß so vorstellen:

if ($newstate eq "on|$mappingname")
wobei $mappingname dem eingelesenen Mappingnamen für "on"  entspricht.
Mit dieser Lösung funktionieren dann alle nur denkbar gesetzten Mappingnamen.

Wenn das zuviel Aufwand ist, kann man es auch lassen, es genügt ja schon wenn man weiß das Mappings in der Definition des "Schalters" (egal ob Schalter oder Actor) nicht gemacht werden dürfen! Mir war es nur wichtig, das nicht andere auf das eventMap hereinfallen.

Ich hänge dir hier 2 Bilder an, die eine (ku) ist ohne Mapping, die andere (wz) mit! Hier sieht man schön, wie sich der Text von "STATE" ändert.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

jamesgo

Hallo Reinhart,

ich hatte es anders herum verstanden. :(

Du hast also einen Aktor, der ursprünglich "on" und "off" kennt und ihn über die eventMap auf "Ein"/"Aus" umgestellt (sieht vermutlich besser aus). Dh. es funktionieren "set x on" und "set x Ein".

Da es die eventMap sowohl als "ein:on" als auch "on:ein" gibt (mit unterschiedlichen Auswirkungen) möchte ich ungern im Modul automatisch darauf reagieren.

Ich würde folgendes implemtieren:


alt:
define <name> PWMR <IODev> <factor[,offset]> <tsensor[:reading:t_regexp]> <actor> [<window>[,<window>:w_regexp]

neu:
define <name> PWMR <IODev> <factor[,offset]> <tsensor[:reading:t_regexp]> <actor>[:a_regexp] [<window>[,<window>:w_regexp]


a_regexp defines a regular expression to be applied to the STATE of the actor to evaluate if it is on. Default is '.*on.*'.

Dann sieht deine Definition so aus:

define roomKitchen PWMR fh 1 FHT_Kueche Kueche:Ein

D.h. PWMR wird "Ein" als "on" und alles andere als "off" interpretieren. Beim Setzten wird weiterhin "set xx on" bzw. "set xx off" verwendet. Das ganze wird im commandref wie oben dokumentiert.

Ok?

Grüße
Andy

Reinhart

sehr gut, das ist dann noch einfacher als ich es mir vorgestellt habe.
Alles was nicht "Ein" ist, das ist "off" ist auch richtig interpretiert.

Das mit den eventMaps habe ich im ganzen Fhem so umgesetzt, ist reine Geschmacksache löst aber im Nachhinein betrachtet doch einigen Aufwand aus.

Mit "on/off" ohne eventMap sieht es jetzt so wie im Bild aus. Die Küche ist ohnehin ein Sonderfall, denn da gibt es zwischen 10:30 -12:00 andere zusätzliche Wärmequellen (Dampfgarer, Induktionsfeld, Personen etc.). Man sieht auch schön, das kurz vor 12:00 Uhr nochmals die Temperatur steigt obwohl die Fussbodenheizung der Regler schon lange abgeschaltet hat.  Die Reststrahlung der Bodenfliesen verursacht immer noch steigende Temperaturen. Diese Eigenschaft läßt sich aber mit der c_tempE gut in den Griff bekommenda die Kochzeiten ja bekannt sind und kann somit vorzeitig entgegenwirken.
Im Winter wenn es wirklich kalt ist, wird die Kurve sicher besser ausschauen.

LG
Reinhart


LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Skusi

Das ließt sich alles sehr interessant,

Ich bin gerade dabei sowa für mine FB Heizung zu planen. Da meine vorhandene Funk Einzelraumregelung von Uponor scheinbar nicht mit Fhem abgreifbar ist, habe ich den Plan meine LaCrosse Sensoren zusammen mit einem Arduino Nano und Firmata über ein Relaismodul an meinen FB Verteiler zu bringen.

Da meine FB Heizung extrem träge ist, weil mein Haus Vorbesitzer gemeint hat über die alten Fliesen noch eine Schicht zu fliesen, kommt mir PWM gerade recht.

Ich frage mich nur wie lange wohl die Relais helten würden wenn sie per PWM angesteuert werden. Ok, die Ventilantribe haben nur 2W, aber ich mach mir tritzdem Sorgen.

@jamesgo

Wie genau sieht die Hardware zum steuern der Ventile bei dir aus ?
Und wenn es Relais sind... schon Ausfälle gehabt ?

....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

jamesgo

Die Version mit der oben besprochen Erweiterung ist nun hochgeladen. Neue Syntax:


define <name> PWMR <IODev> <factor[,offset]> <tsensor[:reading:t_regexp]> <actor>[:a_regexp_on] [<window>[,<window>:w_regexp]


@Skusi: Auf meinem Relaisboard sind 11 Relais in Verwendung, sie werden mit 12V geschalten und können jeweils 16A ab. Nach 3 Jahren gibt es keine Ausfälle.

jamesgo

Hallo Reinhart,

Entsteht das Diagramm von deinem vorherigen Post tatsächlich aus einer aktiven Steuerung?

Irgendwie passt es nicht, dass die Pulse nach 8:00 länger werden, die Temperatur aber gleichzeitig steigt.

Um das Überheizen zu verhindern hast du folgende Möglichkeiten:

- Vorlauftemperatur verringern
- Volumenstrom reduzieren
- Den Factor bei der Definition des Raumes reduzieren. Dadurch werden die Pulse geringer.

Grüße
Andy

Reinhart

Hallo Andy!

Besten Dank für die Änderung, regexp habe ich gestern gleich noch eingebaut und es funktioniert so wie gewünscht jetzt auch mit eventMap auf "Aus/Ein".
Das mit der Pulsbreite ist mir gestern auch aufgefallen, wenn ich die mit heute vergleiche ist es jetzt ok. Bei steigender Temperatur wird die Pulsbreite schmäler. Dieser Plot ist echt und kein Dummy, aber die Außentemperatur beträgt noch 5 Grad und der Vorlauf bewegt sich daher nur um die 40 Grad. Für die FB ist das aber leicht ausreichend, weil der Mischer ist auf etwa 27 Grad eingestellt.

Dein Modul funktioniert aber sehr gut und läßt viel Spielraum für Extras und Anpassungen. Das Beste daran, ich spare jetzt auch noch Strom für die Pumpe, speziell in der Übergangszeit.

(https://catalog.uponor.com/picture/online_big/1059835.jpg)
so sieht mein Mini-Mischer aus, statt des Magnetventils (Actuator) habe ich ein FHT8V montiert und die Pumpe wird jetzt mit dem PWM gesteuert.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

jamesgo

Interessante Kombination (Pumpe und Temperaturregler in einem). Das ist optimal wenn die Heizkörper als 1-Kreis System angeschlossen sind und zusätzlich ein Fussbodenkreis angeflanscht werden soll. So stell man sicher dass auch auch dort noch Wasser fliest. Das hätte mir mein Heizungsbauer für mein Bad auch vorschlagen können.

Wenn du in dem Chart die Temperatur mit "steps" statt mit "lines" anzeigst wird sich vermutlich herausstellen dass die Temperatur um 0.1 °C schwankt und dass verursacht dann die kleinen Differenzen bei den Pulsen.

Wie regelst du das FHT8V?

Ich könnte mir auch vorstellen, dass im Zustand "aus" der Pumpe immer noch Wasser von der Zirkulationspumpe der Heizung (Keller?) durch den Strang der Fussbodenheizung gedrückt wird.

Reinhart

Die Kombination habe ich gewählt weil ich die FB nachträglich eingebaut habe und die Einbauhöhe von nur 1cm optimal war, der Preis war daher Nebensache. Auch konnte ich die FB durch den Mischer direkt in den Vorlauf hängen, welcher in der Küche nur 1 Meter von der Therme angeschlossen ist.

Den FHT8V steuere ich über ein FHT80b, weil das einfach sehr praktisch ist wenn in jedem Raum ein Thermostat ist wo man die Temperatur individuell einstellen kann. Da wirst du schon recht haben, das selbst bei Pumpenstillstand noch etwas Wärme in die FB gedrückt wird. Wenn ich die Plastikleitung bei Ventilstellung 0% angreife, fühlt sie sich zwar relativ kalt an, aber bei der FB genügen ja schon sehr niedere Temperaturen um eine Heizwirkung zu erzielen.

Obwohl ich ja technisch sehr begeistert bin, habe ich versucht das ganze Heizsystem System so auszulegen, das bei einem eventuellen Ausfall von Fhem auch noch eine gewisse Regelung vorhanden ist. Ich bin zwar von den FS20 Reglern nicht so begeistert, weil es mit den Temperaturmessungen ständig Probleme (melden sich lange nicht) gibt obwohl die Kommunikation zwischen Ventil und Aktuator ja funktioniert. Habe daher gestern mit dem ersten HM Regler begonnen zu testen, aber auch der hat Nachteile wie ich gesehen habe.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Reinhart

@Andy

Kann es sein, das mit der neuen Version sich der Output jetzt negiert?
Ich habe jetzt eine zweite FB dazu gehängt und wenn du das Bild betrachtest so sieht man das hier genau verkehrt gesteuert wird. Hier ist noch kein eventMap gesetzt, also es wird normal mit "on/off" geschaltet. Die Ausgabe erfolgt noch auf einem Dummy, weil sonst würde es nicht warm.

Steigt die Temperatur im Raum, schaltet die Steuerung ein, wird es kalt, stellt sie sich ab.

define fh PWM 120 900 320
attr fh room FB_Regler

define roomWZ PWMR fh 1 FHT_Wz_Fussb relaisWZ
attr roomWZ autoCalcTemp 1
attr roomWZ room FB_Regler
attr roomWZ tempDay 22.5
attr roomWZ tempEnergy 21.5
attr roomWZ tempNight 19
attr roomWZ tempRule1 Mo-Fr 4:00,d 10:30,e 14:30,d 18:00,n
attr roomWZ tempRule2 Sa-So 5:00,d 20:00,n
#set roomWZ desired-temp 22.5

hier die Definition

Auch die Küche habe ich vorübergehend wieder abgestellt, wenn es warm wird und tempE aktiv wird beginnt die Steuerung zu schwingen (ständig aus/ein im 2 Minuten Takt).

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

jamesgo

#28
Hallo Reinhart,

das kann ich mir nicht vorstellen. Die Wesentliche Änderung ist:

<     my $a_regexp_on = $room->{a_regexp_on};
<     if ($actorV =~ /^$a_regexp_on$/) {
<       $actorV = "on";
<     } else {
<       $actorV = "off";
<     }


D.h. das Schalten selbst habe ich nicht verändert.

Ich schau mir das an und melde mich später.

Kannst du noch eine "list roomWZ" posten?

VG Andy

Reinhart

hier bitte das list roomWZ.

Internals:
   ACTOR      relaisWZ
   DEF        fh 1 FHT_Wz_Fussb relaisWZ
   FACTOR     1
   FOFFSET    0.11
   INTERVAL   300
   IODev      fh
   NAME       roomWZ
   NR         1338
   STATE      Calculating
   TEMPSENSOR FHT_Wz_Fussb
   TYPE       PWMR
   WINDOW
   a_regexp_on on
   actor      relaisWZ
   actorState unknown
   c_autoCalcTemp 1
   c_frostProtect 0
   c_tempC    22
   c_tempD    22.5
   c_tempE    21.5
   c_tempFrostProtect 6
   c_tempN    19
   c_tempRule1 1-5 0400,D 1030,E 1430,D 1800,N
   c_tempRule2 6-0 0500,D 2000,N
   c_tempRule3
   c_tempRule4
   c_tempRule5
   t_reading  temperature
   t_regexp   ([\d\.]*)
   t_sensor   FHT_Wz_Fussb
   w_regexp   .*Open.*
   windows
   Readings:
     2015-10-17 19:29:25   PWMOnTime       01:39
     2015-10-17 19:29:25   PWMPulse        0.11
     2015-10-17 19:30:25   desired-temp    22.5
     2015-10-17 19:29:25   energyused      000000000000000000000000000000
     2015-10-17 19:29:25   energyusedp     0.00
     2015-10-17 16:09:37   lastswitch      1445090977.29817
     2015-10-13 18:47:47   manualTempDuration 0
     2015-10-17 19:29:25   oldpulse        0.11
Attributes:
   autoCalcTemp 1
   room       FB_Regler
   tempDay    22.5
   tempEnergy 21.5
   tempNight  19
   tempRule1  Mo-Fr 4:00,d 10:30,e 14:30,d 18:00,n
   tempRule2  Sa-So 5:00,d 20:00,n


LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa