Heizkreispumpe nach Bedarf steuern

Begonnen von bacanol, 28 Oktober 2013, 20:55:19

Vorheriges Thema - Nächstes Thema

bacanol

Hallo Leute,

da ich nun schon einige Themen angegangen bin, würde ich gern nun etwas komplizierteren Stoff anfangen. Meine Idee, die Heizkreispumpe in Abhängigkeit von Raumanforderungen steuern. Wenn nun ein Raum meldet, dass er geheizt werden möchte, dann soll die Heizkreispumpe eingeschaltet werden. Kommt nun noch ein 2. Raum mit "Heiz-mich-wunsch" bleibt die Pumpe natürlich an. Nun ist beispielsweise der erste Raum auf Temperatur und schaltet sein Ventil zu. Es sollte geprüft werden, ob noch ein anderer Raum geheizt wird, so dass die Pumpe weiter läuft wenn ja. Raum 2 braucht noch ein wenig Wärme und prüft, wenn er seine Solltemperatur erreicht hat nun ebenfalls, ob noch ein weiterer Raum eine Anforderung hat. In diesem Beispiel nein, was dazu führt, dass die Heizkreispumpe abgeschaltet wird.

Ist das Szenario denkbar? Wenn ja, wie gehe ich am sinnvollsten vor? Ich habe überlegt, dass es am besten mit einer generischen if-then-else oder switch funktion gehen könnte. Allerdings fehlt mich etwas die Inspiration dazu... Als gegeben könnte man ja einfach sagen, dass jeder Raum, der eine Anforderung feststellt erstmal die Pumpe einschaltet (auch wenn vielleicht schon ein anderer oder mehrere andere Räume dieses durch eine Anforderung vorher getan haben). On bleibt ja dann On. Jedoch für den Off Fall müsste halt geprüft werden, ob nicht vielleicht noch ein anderer Raum eine aktive Anforderung hat, um diesem nicht die Pumpe zu "klauen".

Was meint Ihr?!

Viele Grüße

bacanol ;)

cwagner

Schau Dir doch mal das Modul HCS an, mit dem habe ich so eine von dem Bedarf von 7 verschiedenen Räumen abhängige Pumpensteuerung seit einem halben Jahr im Einsatz.

Herzliche Grüße
Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Damian

Das kannst du auch über structure regeln:

Falls du mit on/off-Aktoren hantierst z. B. für 230V-Stellantriebe (das hast du nicht genau spezifiziert).

Dann machst du:

define alle_raeume structure CUL_HM Raum1 Raum2 ...

attr alle_raeume clientstate_behavior relativeKnown

attr alle_raeume clientstate_priority on off

attr alle_raeume event-on-Change-reading state

define Trigger notify alle_raeume:o.* set Pumpe %

Hier wird auch nur geschaltet, wenn der Zustand sich wirklich ändert, doppelte on, on gibt es nicht.

Gruß

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

bacanol

Hallo!

Vielen Dank für die Antworten, das hört sich wikrlich gut an! Ich habe in der Tat On/Off Schalter für die Einzelraumsteuerung. Ich werde das am Wochenende mal probieren und meine Erfahrungen hier teilen!

Viele Grüße

bacanol

bacanol

Zitat von: Damian am 28 Oktober 2013, 23:15:10
Das kannst du auch über structure regeln:

Falls du mit on/off-Aktoren hantierst z. B. für 230V-Stellantriebe (das hast du nicht genau spezifiziert).

Dann machst du:

define alle_raeume structure CUL_HM Raum1 Raum2 ...

attr alle_raeume clientstate_behavior relativeKnown

attr alle_raeume clientstate_priority on off

attr alle_raeume event-on-Change-reading state

define Trigger notify alle_raeume:o.* set Pumpe %

Hier wird auch nur geschaltet, wenn der Zustand sich wirklich ändert, doppelte on, on gibt es nicht.

Gruß

Damian

Hi Damian,

ich habe das nun so umgesetzt und irgendwie funktioniert das nicht 100% zuverlässig. Mal schaltet er, mal nicht. Ich habe zum Testen mal eine E-Mail senden lassen bei jedem Schaltvorgang und habe teilweise eine oder zwei oder drei oder noch mehr E-Mails bekommen, bei einem Schaltvorgang. Wie kann ich das am besten Debuggen?

Viele Grüße

Nico

Damian

Hallo Nico,

für die Analyse musst du genaue Info´s posten, am besten mit list <deine structure> und List <deine Schalter> ausgeben.
Dann über Event Monitor die Schaltvorgänge ausgeben.

Dann kann man weiter schauen.

Gruß

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

bacanol

Alles klaro, hier kommt die Structure:
Internals:
   ATTR       CUL_HM
   DEF        CUL_HM az_Fussbodenheizung bo_Fussbodenheizung bu_Fussbodenheizung ko_Fussbodenheizung ku_Fussbodenheizung kz_Fussbodenheizung sz_Fussbodenheizung wr_Fussbodenheizung
   NAME       alle_Fussbodenheizung
   NR         191
   NTFY_ORDER 50-alle_Fussbodenheizung
   STATE      on
   TYPE       structure
   CHANGED:
     on
   Content:
     az_Fussbodenheizung 1
     bo_Fussbodenheizung 1
     bu_Fussbodenheizung 1
     ko_Fussbodenheizung 1
     ku_Fussbodenheizung 1
     kz_Fussbodenheizung 1
     sz_Fussbodenheizung 1
     wr_Fussbodenheizung 1
   Readings:
     2013-10-31 21:21:06   LastDevice      wr_Fussbodenheizung
     2013-10-31 21:21:06   LastDevice_Abs  wr_Fussbodenheizung
     2013-10-31 21:21:06   state           on
Attributes:
   clientstate_behavior relativeKnown
   clientstate_priority on off
   devStateIcon on:general_an off:general_aus
   event-on-change-reading state
   group      Fussbodenheizung
   icon       sani_earth_source_heat_pump
   room       Heizungsraum
   verbose    1


und hier das Notify
Internals:
   DEF        alle_Fussbodenheizung:o.* set hr_Pumpe_Heizung %
   NAME       hr_Notify_Heizung
   NR         192
   NTFY_ORDER 50-hr_Notify_Heizung
   REGEXP     alle_Fussbodenheizung:o.*
   STATE      active
   TYPE       notify
Attributes:
   room       Heizungsraum
   verbose    1


Leider sehe ich Event Monitor nichts konkretes, allerdings scheint irgendwas zig mal zu schalten für einen kurzen Moment.

Irgendwelche Ideen?

Nico

Damian

Zitat von: bacanol am 31 Oktober 2013, 21:29:08
Leider sehe ich Event Monitor nichts konkretes, allerdings scheint irgendwas zig mal zu schalten für einen kurzen Momen
Nico

Du kannst erst mal nur einen Aktor z. B. az_Fussbodenheizung in der structure definieren und dein notify disablen oder löschen. Dann az_Fussbodenheizung on, off schalten und schauen, ob structure den Zustand übernimmt, wenn das klappt dann zwei Aktoren angeben und schauen was passiert, wenn man die Aktoren on, off schaltet. Wenn structure die richtigen Zustände übernimmt (alle Aktoren off -> structure off, ein Aktor on -> structure on), dann würde ich erst mit dem notify als nächstes experimentieren.

Gruß

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