Heizungssteuerung: RequestAction - selbstregelende Aktoren & geschaltete Aktoren

Guten Morgen,
ich arbeite gerade an meinem zweiten Modul, einer Heizungssteuerung.

Diese benutzt zum schalten der Aktoren die RequestAction-Funtion, da das Modul Unabhängig von der verwendeten Hardware funktionieren soll.

Aktuell komme ich gerade nicht weiter beim Aufbau der Logik für den Schaltvorgang.
Eigenglich wäre das simpel, wäre da nicht der Unterschied zwischen selbstregelenden Aktoren & geschaltete Aktoren, wo ich nicht weiß wie ich die Logik hier am besten gestalte.

Selbstregelende Aktoren:
z.B. Homematic IP Heizungsthermostate, hier übergibt man die gewünschte Temperatur an das Heizkörper Stellantriebe und dieser hält regelst sich selbständig, damit diese Temperatur erreicht / gehalten wird.

Geschaltene Aktoren:
Z.B. ganz normale Stellventile, die über z.B. ein Bus-System, je nach aktueller Temperatur, An- oder aus zum Schließen oder Öffnen geschalten werden. (Ich simuliere das aktuell im Test bei mir mit einer schaltbaren Steckdose)

Variablen:
$heating_phase = aktuelle Heizphase
$aktor_buffer = ID des zuschaltenden Aktors

Heizphasen:
0 = Ausgeschalten
1 = Frostschutz
2 = Grundwärme / Normal
3 = Heizwärme / Abgesenkt

Aktuell sieht mein Skript wie folgt aus, was auch aktuell funktioniert für selbstgeregelde Aktoren:

if ($heating_phase == 0)
                {
                    RequestAction($aktor_buffer, 0);                        
                }
                elseif ($heating_phase == 1)
                {
                        RequestAction($aktor_buffer, $frost_protection);
                }
                elseif ($heating_phase == 2)
                {
                    RequestAction($aktor_buffer, $normal_temperature);
                }
                elseif ($heating_phase == 3)
                {
                    RequestAction($aktor_buffer, $heating_temperature);
                }

Hier übergebe ich die Temperatur, die über das Webfrontend eingestellt wird, an den Homematic Aktor. Dieser regelt sich dann quasi selbst auf dies Temperatur.

Das funktioniert jetzt nicht mit geschalteten Aktoren, da ich diese je nach aktueller Ist-Temperatur und Wunschtemperatur quasi anfassen muss um diese zu starten (öffnen) oder zu stoppen (schließen).

Hier müsste das Skript quasi so aussehen:

if ($heating_phase == 0)
                {
                    RequestAction($aktor_buffer, 0);                        
                }
                elseif ($heating_phase == 1)

                {
                    if ($is_temperature < $frost_protection)
                    {
                        RequestAction($aktor_buffer, 1);
                    }
                    else
                    {
                        RequestAction($aktor_buffer, 0);
                    }

                }
                elseif ($heating_phase == 2)
                {
                    if ($is_temperature < $normal_temperature)
                    {
                        RequestAction($aktor_buffer, 1);
                    }
                    else
                    {
                        RequestAction($aktor_buffer, 0);
                    }
                }
                elseif ($heating_phase == 3)
                {
                    if ($is_temperature < $heating_temperature)
                    {
                        RequestAction($aktor_buffer, 1);
                    }
                    else
                    {
                        RequestAction($aktor_buffer, 0);
                    }
                }

Was ich jetzt möchte, ich möchte beide Kombinieren so dass ich beiden Arten von Aktoren mit einem Modul steuern kann.

Unschöne Lösungen, die ich im Kopf hatte aber nicht realisieren möchte:

  1. z.B. am Homematic Thermostat die Boost-Funktion mit 1 aktiviere, bis die gewünschte Temperatur erreicht ist und diese dann abschalte.

  2. Man könnte auch einfach die Set_Temperatur am Homematic Thermostat, sobald die gewünschte Temperatur erreicht ist auch wieder auf 0 setzen. (Hier aber dann statt 1 im 2ten Skript den Werte der gewünschten Temperatur z.B. RequestAction($aktor_buffer, 16))

Diese beiden Ideen, könnte ich auch einfach mit dem zweiten Skript realisieren, ist aber nicht schon. Hier hätte ich dann einen erhöhten Funkkontakt zwischen CCU und Homematic-Aktor, was zu lasten der Batterie geht.

Hat jemand einen Anstoß für mich, wie ich die beiden Varianten der Aktoren in einem Skript vereinen kann? Einmal quasi das regeln mit an und aus und / oder das setzten der Wunschtemperatur.

Oder sollte ich noch eine Auswahl in meinem Konfigurationsformular für das Modul hinzufügen, um auszuwählen um was es sich für einen „Art“ von Aktor handelt? Ohne wäre natürlich schöner, aktuell habe ich aber leider keine Idee.

Hmm, das wäre doch straight forward. Warum gefällt es dir nicht ?
Evtl. könntets ja auch aus dem Variablenprofil rauslesen um welche Art von Aktor es sich handelt.
Einmal müßte es Boolen sein, der andere eine Integer/Float.
Ähnlich wie es Niels bei der Gerätesuche für Alexa macht.-

gruß
bb

Hi bbernhard,
so habe ich es jetzt letztendlich umgesetzt, weil es anders nicht geht, mit einer Auswahl:
Selbstregelnd oder Fremredregelnd

Die beiden Ansätze sind ja grundverschieden. Wenn der Aktor die Regelungsfunktionalität zur Verfügung stellt, dann sollte die auf jeden Fall auch genutzt werden.

Im anderen Fall, wenn du selber die Regelung übernimmst, dann musst du ja eine eigene Regelung implementieren und die ist sicherlich komplexer, als einen Aktor bei Erreichen der Solltemperatur einfach auszuschalten und bei Unterschreiten einer Grenze wieder einzuschalten. Verschiedene Heizsysteme sind verschieden träge. Ohne Verfahren aus der Regelungstechniken wie PID und Pulsweitenmodulation wirst du keine stabile Temperatur erreichen können.

bumaas, das stimmt allerdings.

Aktuell ist meine Steuerung, wenn man „Fremdegelend“ nutzt, ausgelegt wie eine 2-Punkt Regelung. Sprich An- oder Ausschalten bei erreichen oder unterschreiten der gewünschten Temperatur. Eine Hysterese oder ähnliches ist jetzt aktuell noch nicht mit einprogrammiert in der ersten Grundversion.

Guter Hinweis, ich werde das Modul von Zeit zu Zeit erweitern und auch diese Möglichkeiten zusätzlicher Einstellungen mit einbauen so das es praktikabel ist.

Man kann Anfangs aufjedenfall beides Steuern, also sprich selbstregelnd der Aktor übernimmt das selbständig oder über IP-Symcon allerdings ohne irgendwelche Zusatzeinflüsse zu beachten.

Ich denke in der ersten Grundversion, wird es den Leuten helfen, die z.B. Homematic Heizungsventile im Einsatz haben um diese zu Steuern. Für eine direkte Steuerung mit weiteren Einflussfaktoren wie z.B. Trägheit fehlen noch weitere Einstellungen. Hier hole ich mir dann aber gerne euer Feedback ein, wie es am sinnvollsten wäre bzw. was verbessert werden könnte. :slight_smile:

Mal als Beispiel, ein Mischer der mit IPS gesteuert wird. Vorlauf von einem 50kW Kessel ins Haus :