Autor Thema: Helios KWL per ModbusTCP regeln/steuern  (Gelesen 518 mal)

Offline hugomckinley

  • Jr. Member
  • **
  • Beiträge: 65
Helios KWL per ModbusTCP regeln/steuern
« am: 27 Juli 2017, 22:48:40 »
Für alle Besitzer einer Helios Lüftung die per ModbusTCP erreichbar ist. (Sollte aber auch über Modbus per RS485 leicht anpassbar sein)

Mein Script hat einen funktionalen Stand erreicht, der auch für andere brauchbar sein sollte.
Ich werde diesen Artikel immer auf dem aktuellen Stand halten, damit jeder die aktuelle Version des Scripts herunterladen kann.   

Meine Anforderungen waren:
  • Ansteuerung per TCP
  • Regelungsbetrieb in Abhängigkeit der Zuluft- und Ablufttemperatur.
    Wenn es im Haus zu warm wird, versucht die Lüftung warme Luft(an heißen Tag) draußen zu lassen und kühle Luft (in der hoffentlich kühleren Nacht) herein zu bringen. (Wenn im Haus eine gewisse Ablufttemperatur überschritten ist.)
  • Sonderprogramme per Taster o.ä. wählbar (z.B. Toilettenlüftung, Kochen, Partybetrieb, ...)

Voraussetzungen:
  • Lüfterstufen der KWL anpassen. (1: Reduzierte Lüftung(-30% Luftmenge), 2: Nominelle Lüftmenge, 3: Intensivlüftung (+30% Luftmenge), 4: Ultralüftung (+60% Luftmenge)) (Feuchteschutz lt. Heliosauslegung existiert nicht mehr, da er nie verwendet wurde.)
  • Perlmodul Data::UUID wird benötigt (für das eindeutige Benennen von at (geht aber sicher einfacher)

Bedienungsanleitung:
  • {helios_define_kwl("KWL_EG_KG","192.168.0.20","Technik")}
    legt eine Lüftung mit dem Namen KWL_EG_KG mit der IP 192.168.0.20 an, verbindet sich gleich damit und weist ihr den Raum Technik zu. Im selben Raum gibt es dann auch noch diverse ATs für das Polling der Anlage. Das angelegte Device liest jetzt Daten der Anlage aus und füllt die entsprechenden Readings. Es findet noch keinerlei Beeinflussung der Anlage statt. Kann verwendet werden, um die Anlage zu visualisieren.
  • {helios_init_control("KWL_EG_KG","fhem")}
    aktiviert die Regelung per FHEM und schaltet dazu die Anlage auf Handbetrieb. Es wird ein at angelegt, welches die Regelung übernimmt.
    {helios_init_control("KWL_EG_KG","helios")}
    würde die Ansteuerung durch FHEM wieder deaktivieren.
  • {helios_req_level("KWL_EG_KG",4,15)}
    in einem notify, das auf einen Taster im WC triggert, fordert für 15 Minuten die Lüfterstufe 4 an.
    Wird genauso in der Küche für das Kochen verwendet. z.B. 180 Minuten Stufe 3. (Ist besonders dann relevant, wenn die Lüftung im Absenkbetrieb läuft, weil es draußen heiß ist, aber trotzdem gekocht wird ;-)
  • Das Attribut time_list legt die Umschaltzeiten für die Zeitsteuerung fest. Format ist HH:MM|Lüfterstufe. Der Umschaltzeitpunkt kann bis zu 10 Minuten später sein, je nachdem wann das at der Regelung läuft.

Update von bestehenden Anlagen:
Sollte es schon eine KWL geben, muss diese inkl. den at's gelöscht werden und die obige Installationsanleitung erneut mit den gleichen Namen durchgeführt werden. Das wars schon.


Im Betrieb sieht das dann wie unten im Bild aus.
Erklärung:
  • Es sind zwei Anlagen.
  • Oben jeweils die Temperaturen -> siehe Legende.
    Unten die Parameter der Anlage -> nur die Lüfterstufe (rosa Linie) ist hier relevant.
  • KWL_EG_KG läuft im Kühlbetrieb. Das Absenken bei steigenden Außenlufttemperaturen ist gut zu erkennen.
  • KWL_OG_DG läuft im Zeitbetrieb (kühl genug im Haus). Hier sind die diversen Toilettenbesuche der Bewohner und das Kochen erkennbar.

Im nächsten Screenshot sieht man zum besseren Verständnis, wie das bei mir aussieht. (Das Rollo gehört natürlich nicht zur Lüftung ;-)

Folgende Parameter sind als Attribute der Lüftungsdevices konfigurierbar:
  • control_mode_limit: legt fest, wann zwischen Kühlbetrieb und Zeitbetrieb gewechselt wird.
  • hysteresis: legt die Hysterese der Schaltvorgänge für die Lufttemperaturen fest.
  • max_cooling_diff: Temperaturdiffernz zw. Abluft und Zuluft für maximale Kühlung(Stufe 4).
  • std_cooling_diff: Temperaturdiffernz zw. Abluft und Zuluft für normale Kühlung(Stufe 3).
  • max_allowed_level: maximale Lüfterstufe die erlaubt ist. (Lärm/Stromverbrauch)

Das war es schon aus Endanwendersicht :-)

Das vorliegende Script ist noch nicht fertig. Folgende Punkte stehen auf meiner Wunschliste.
  • sprechende Namen für die Register (derzeit nur laut csv herauszufinden)
  • funktionale Readingsgroup (Pollenfilterwechsel inkl. Umsetzen der Kennlinie, Umschalten der Steuerung(Helios/Fhem), max. Level, evtl. Zeiten der Steuerung)
  • Beachrichtigungen (Filterwechsel, Fehler/Warnungen/Infos inkl. String, Verbindung zur Anlage(kann nicht über opened erkannt werden -> Zeitstempel Reading?))

Diese Liste ist sicher nicht vollständig und deckt nur meine Wünsche ab.
Weitere Details findet ihr im Changelog im Scriptfile.
Ich möchte euch bitten, diese Liste per Post in diesem Thread mit euren Wünschen zu erweitern und ich schaue was ich realisieren kann.

Technische Details für die, die es genauer wissen wollen.
  • Das Script basiert auf dem ModbusAttr-Modul von Stefan Strobel. Dieser hat es extra für Helios-User modifiziert um asynchron lesen zu können. Nochmals herzlichen Dank dafür.
  • Ich habe versuchsweise eine Lüfterstufe probiert die 100% der Anlagenleistung entspricht. Dabei hatte man aber das Gefühl, dass man akustisch im Windkanal schläft! Meine Stufe 4 mit +60% ist absolut schlafzimmertauglich, wobei ich aber sagen muss, dass unsere Anlage sehr leise ist.
  • Es gibt ein userReading WBG, das den Wärmebereitstellungsgrad des Wärmetauschers errechent (stimmt derzeit nur für Winterbetrieb)
  • Das Umschalten zwischen Kühl- und Zeitbetrieb erfolgt mit der Hälfte der eingestellten Hysterese, da sich die Ablufttemperatur sehr träge verändert.
  • Es ist mir sehr wohl bewusst, dass man mit einer KWL nicht klimatisieren kann, jedoch ist es subjektiv jetzt um einiges angenehmer und in der (kühlen( Nacht ist die große Luftmenge sehr angenehm
Zur Regelung:
  • Die Regelung hat Töpfe für die jeweiligen Lüfterstufen und es zieht der höchste Topf der nicht leer ist. Diese Töpfe werden durch die Automatik und Sonderprogramme befüllt und wieder geleert. Somit ist es egal, woher die Anforderung einer Stufe kommt.
  • Für Sonderprogramme werden ATs erzeugt, welche nach Ablauf der gewünschten Zeit den Topf wieder um eins verringern.
Technische Wunschliste:
  • longpoll beim Anlegen der Anlage wird nicht ausgeführt! (queue too long)
  • Attribut pollenfilter sollte dazu dienen, die Lüfterkennlinien umzuschalten

Für jegliche Anregung und Kritik/gefunden Fehler bin ich dankbar. Ansonsten bastle ich im stillen Kämmerlein weiter und melde mich bei Neuigkeiten.

Grüße,
Hugo
« Letzte Änderung: 24 Oktober 2017, 08:41:58 von hugomckinley »
----------------------------------------------------
OW-SERVER-ENET-2
div. 1-wire Sensoren
HMLAN + HM-Komponenten
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline hugomckinley

  • Jr. Member
  • **
  • Beiträge: 65
Antw:Helios KWL per ModbusTCP regeln/steuern
« Antwort #1 am: 21 September 2017, 20:21:15 »
# Changelog:
#
#   V0.95:
#      - timeautomatic implemented
#   V0.94:
#      - consider the max_allowed_level attribute
#   V0.93:
#      - consider the summerbypass setting; allow cooling mode only if summerbypass/passive cooling is allowed (uses v021020 v02121 v02128 and v02129)
#   V0.92:
#      - changed switching value for control_mode from hysteresis/3 to hysteresis/2 (hystersis/3 lead to fast switching of mode)
#   V0.91:
#      - correct generation of ATs to avoid concurrent time of polls (alignTime)
#    V0.9:
#       -initial release


#Known Bugs:
#
#2017-10-07: times in time_list MUST be hh:mm (05:45)! h:mm (5:45) is not allowed because of the key sort of the hash
#2017-10-07: max_allowed_level ignores level instead of remapping to the allowed maximum
#2017-07-19: Manual Poll generates "queue too long"
#2017-07-19: long_poll isn't executed at the generation of the Device (other polls too?)

#ToDo:
#    - sprechende Namen für die Register
#    - funktionale Readingsgroup (Pollenfilterwechsel inkl. Umsetzen der Kennlinie, Umschalten der Steuerung(Helios/Fhem), max. Level, evtl. Zeiten der Steuerung)
#    - Benachrichtigungen (Filterwechsel, Fehler/Warnungen/Infos inkl. String, Verbindung zur Anlage(kann nicht über opend erkannt werden -> Zeitstempel Reading?))
« Letzte Änderung: 14 Oktober 2017, 19:31:57 von hugomckinley »
----------------------------------------------------
OW-SERVER-ENET-2
div. 1-wire Sensoren
HMLAN + HM-Komponenten

Offline amthenia

  • New Member
  • *
  • Beiträge: 44
Antw:Helios KWL per ModbusTCP regeln/steuern
« Antwort #2 am: 25 September 2017, 18:15:30 »
 8) Super!

Offline hugomckinley

  • Jr. Member
  • **
  • Beiträge: 65
Antw:Helios KWL per ModbusTCP regeln/steuern
« Antwort #3 am: 14 Oktober 2017, 19:35:23 »
V0.95 ist online

Hier ist jetzt auch die Zeitsteuerung außerhalb des Kühlbetriebs implementiert. Derzeit macht das Ding schon genau das, was ich möchte und somit werde ich in nächster Zeit nicht aktiv daran weiter arbeiten. Sollte jemand eine Funktion benötigen, einfach kurz melden, vielleicht kann ich das dann kurzfristig einbauen.
----------------------------------------------------
OW-SERVER-ENET-2
div. 1-wire Sensoren
HMLAN + HM-Komponenten

 

decade-submarginal