Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Allgemeines

Es geht um die Einbindung der Helios KWL Lüftungsgeräte mit integrierter "easycontrols" Webschnittstelle in Loxone. Mittlerweile liegt die Version 5.1 des Pico-C Programmes vor und läuft stabil.

Hintergrund zur Entstehung des Pico-C Programmes

Direkt die Webschnittstelle anzusprechen funktioniert leider nicht, da die virtuellen HTTP Eingangsverbinder der Loxone nur ein HTTP GET unterstützen, aber die Helios Schnittstelle ein HTTP POST auch für das Auslesen verlangt. Diese in der HTTP Programmierung eher unübliche Variante wird leider von Loxone nicht unterstützt und wird es wohl in absehbarer Zeit auch nicht werden. Ein Ticket bei Loxone zu einem Feature Request für "HTTP POST für den virtuellen HTTP Eingangsverbinder" wurde leider abgelehnt (Ticket 861929) - sehr Schade. Zwei weitere Probleme bestehen noch beim Verwenden der Webschnittstelle: zum Einen erfordert "easycontrols" immer eine Anmeldung und diese muss regelmäßig aufgefrischt werden. Der zweite Nachteil ist der, dass die Variablen nicht einzeln gelesen bzw. geschrieben werden können, sondern nur als "Paket" über XML Dateien zurückgeliefert werden, die dann aufwändig durchsucht werden müssen. Das Webinterface der Helios ist zwar ordentlich strukturiert, aber etwas nervend, weil nach einer kurzen Zeit die Anmeldung gelöscht wird und dann ein Fehler kommt, dass die XML Daten nicht gelesen werden können. Eine zwangsweise Anmeldung im eigenen Einfamilienhaus macht die Überwachung des Status oder Änderung der Lüfterstufe über das Helios-Webinterface umständlich. 

Zum Glück unterstützen die Helios Lüftungsgeräte mit "easycontrols" auch die Modbus TCP Schnittstelle. Hinweise zu dieser Schnittstelle gibt es von Helios hierMittlerweile unterstützt Loxone ebenfalls Modbus TCP, allerdings nur "einfache" Abfragen bzw. Setzen einzelner Register. Helios macht es aber durch die Verwendung von Variablennamen und Werten, die als Strings kodiert werden sehr kompliziert. Für das Auslesen eines Wertes ist zunächst die entsprechende Variable zu schreiben - so etwas wird derzeit nicht auf der Loxone mit der Modbus TCP Funktion unterstützt. Da Helios hier eine sehr unübliche und komplizierte Einbindung gewählt hat, ist die Wahrscheinlichkeit der Unterstützung von Loxone für diese Einbindung sehr gering. 

Die Lösung besteht darin, die modbus TCP Schnittstelle über die TCP "Streams" Funktionen auf der Loxone direkt anzusprechen und Funktionen zum Auslesen bzw. Schreiben von Variablen passend für die Helios Lüftungsgeräte neu zu programmieren. 

Aktuelle Version

Helios-modbusTCP-v5.1.picoc.txt

Download

Helios-modbusTCP-v5.1.picoc.txt

Vorherige Versionen (falls Probleme mit v5.1 auftreten):

Helios-modbusTCP-v5.picoc.txt

Helios-modbusTCP-v4.picoc.txt

Helios-modbusTCP-v3.picoc.txt

Helios-modbusTCP-v2.picoc.txt

Changelog

Helios-modbusTCP-v5.1.changelog.txt

Bekannte Probleme

  • keine - bitte melden, falls es welche gibt

 

Erläuterungen zum Pico-C Skript

Das Skript enthält viele Kommentare, um die Funktion zu verstehen und ggf. Anpassungen vornehmen zu können. Das Auslesen bzw. Setzen von Werten funktioniert problemlos, die CPU Belastung der Loxone ist auch nur minimal gestiegen (wenige %) und Version 2-5 liefen über viele Monate sehr stabil. 

Die Reihenfolge der Parameter (alphabetisch) in der Visu ist nicht unbedingt so, wie man es gerne hätte. Dieser Wunsch ist ja schon mehrfach an Loxone herangetragen worden, allerdings derzeit nur indirekt unterstützt. Ab Loxconfig v8 soll dies jetzt möglich sein, allerdings habe ich es noch nicht getestet.

Achtung: Die Lüftungsanlage sollte auf manuellen Betrieb eingestellt sein, um ungewollte automatische Änderungen durch ein Wochenprogramm zu vermeiden. Eine automatische Logik zur Einstellung von Lüfterstufen oder Partybetrieb (hier Stoßlüften genannt) sollte ausschließlich über Loxone erfolgen. Seit Version 3 werden Änderungen der Lüfterstufe durch eine andere Quelle z.B. das "easycontrols" Webinterface berücksichtigt und aktuelle Werte ausgelesen. Die Einstellung "Modbus Aktiviert:" muss im Menü "Konfiguration, Gerät" unter easyControls natürlich aktiviert sein.

Es sollte ohne große Probleme möglich sein, das Skript anzupassen und andere Variablen zu lesen oder zu schreiben. Die IP-Adresse im Pico-C muss natürlich noch an die IP-Adresse der eigenen Helios KWL Lüftungsanlage angepasst werden. Der Modbusserver in der Loxone wird nicht verwendet.

 Ein paar Hintergrundinformationen für Interessierte: Die Implementierung des Modbus-Servers in der Loxone ist leider nicht kompatibel mit Helios, da der Baustein in der Loxone nur einfache Werte auslesen oder schreiben kann. Helios macht es aber sehr kompliziert und man muss z.B. eine auszulesende Variable zuerst als String schreiben, um den Wert anschließend als String wieder auslesen zu können. Dieser String muss dann noch in einen analogen Wert z.B. die Temperatur umgerechnet werden. 

Andere Hersteller verwenden einfach ein "Read Register X", um Variable X als 16- oder 32-Bit Integer Wert mit oder ohne Vorzeichen oder als 32-Bit Float auszulesen. Mit 65535 Registern gibt es sicherlich genügend Register, um alle Variablen eines Gerätes zu definieren. Dann würde ein Pico-C Skript nicht notwendig sein und man könnte mit den modbusTCP Sensoren bzw. Aktoren alle Variablen auslesen bzw. diese ändern. Einen Vorteil durch die Verwendung von Strings bei Helios ist nicht erkennbar, nur Nachteile. 

Warum Helios die modbus TCP Kommunikation so kompliziert gemacht hat, dass wissen wahrscheinlich nur deren Entwickler. Nach meiner Ansicht ist hier das Problem eindeutig von Helios verursacht worden und man kann nicht von Loxone erwarten, dass so eine umständliche Kommunikation in einem modbusTCP Baustein unterstützt wird. 

Anhand der Anleitung von Helios zum modbus TCP Interface hatte ich mit dem Tool "modpoll" einen Parameter ausgelesen und geschrieben und die Kommunikation per Wireshark mitgeschnitten. So konnte ich den den genauen modbusTCP Header mitlesen. Zwei Punkte fehlen allerdings in der Doku von Helios: auf Seite 17 in der PDF wird auf eine Tabelle "Codierung" (Beschreibung der Fehler mit Nummern) verwiesen, die es gar nicht gibt. Der Parameter für die Abfrage des Bypass (offen oder zu) mit der Variablen "v02119" fehlt auch. Den habe ich beim Mitlesen der Kommunikation des Webinterfaces per Wireshark gefunden.

Integration in Loxone

Eine Intelligenz, d.h. welche Lüfterstufe unter welchen Bedingungen eingestellt wird, kann am Besten in der Loxone Config realisiert werden und nicht "fest verdrahtet" in Pico C. Auf diese Weise können Anpassungen viel einfacher vorgenommen werden. 

für Helios-modbusTCP v5.1

In der Version 5.1 ist ein Fehler in der Loxone Logik behoben, denn für die "Sommerfunktion" muss der Parameter Abluft verwendet werden. Seit Version 5 gibt es eine "Sommerfunktion", die die Kühlung des Gebäudes im Sommer unterstützt. Siehe auch Abschnitt "passive Kühlfunktion" für weitere Hinweise.

Für diese Funktion wird die "gemischte Innentemperatur" mit der Aussentemperatur verglichen. Wenn draußen wärmer ist als innen, dann soll die "Sommerfunktion" verhindern, dass das Haus noch mehr aufgeheizt wird. Zum einen soll die Lüfterstufe reduziert werden und zum anderen soll der Bypass geschlossen werden, damit die heiße Aussenluft etwas heruntergekühlt wird. Dies geschieht über Trigger, so dass weiterhin eine manuelle Anpassung möglich ist. In der Version 5 wurde fälschlicherweise der Parameter Fortluft verwendet. In der Loxconfig muss die Ablufttemperatur zusammen mit der Aussentemperatur als Eingänge für den Analogkomparater verwendet werden.

Sommerfunktion - Haus im Sommer möglichst kühl halten

Wenn Aussentemperatur > ABlufttemperatur (heißer Sommertag) und Sommerbetrieb angeschaltet ist
dann Lüfterstufe = 1 triggern und Bypass schließen,
sonst (kühlere Sommernacht) Lüfterstufe = 3 triggern und Bypass öffnen.

Auf Wunsch habe ich auch die minimale Außentemperatur, bei der der Bypass geöffnet wird,(bei Helios "Min. Außenlufttemperatur" genannt) für die Sommerfunktion als Eingabeparameter ergänzt. Sinkt die Außentemperatur unter diese Wert, dann wird der Bypass auf jeden Fall geschlossen. Hierdurch soll verhindert werden, dass im Haus kalte Zugluft entsteht, auch wenn es im Haus noch warm genug ist, um den Bypass zu öffnen, d.h. die Innentemperatur (gemessen über den Parameter Ablufttemperatur) höher als der eingestellte Wert im Bereich Bypass für "Raum/Ablufttemperatur" ist. 
Je nach geografischer Lage und Bewölkung sind die Temperaturunterschiede zwischen Tag und Nacht sehr groß, so dass man die min. Bypasstemperatur heruntersetzen kann, damit das Haus nachts länger mit offenem Bypass gekühlt wird. Im Frühjahr oder Herbst ist "man" (bzw. Frau) vielleicht kälteempfindlicher und eine Kühlung steht nicht mehr im Vordergrund. Ob man hier eine unterschiedliche Temperatur für Sommer- und Frühjahrs- / Herbst- / Winterbetrieb haben möchte, kann jeder selbst entscheiden. Wer die Unterscheidung nicht benötigt, der kann einfach einen konstanten Wert als Input verwenden - ich habe nicht getestet, was passiert, wenn der Eingang unbeschaltet bleibt.

Nachfolgend sind Screenshots der Loxone Config und des Webinterfaces vorhanden, um zu zeigen, wie das Pico C Programm in die Loxone Config eingebunden werden kann.

     


Hier noch Screenshots der Version 5 für alle, die noch nicht Loxone v8 verwenden. Bitte den Parameter Fortluft durch Abluft ersetzten!

    

Im Gegensatz zu v4 ist in der Version 5 die Funktion "Stoßlüften" (in der Loxone Config) deutlich komfortabler geworden und ähnlich wie die Helios Funktion "Partybetrieb" realisiert worden. Für eine festgelegte Zeit wird die Lüfterstufe auf 4 erhöht und danach wieder auf den vorherigen Wert zurückgestellt.

Um die Arbeit zu vereinfachen, die Musterkonfiguration in die eigene Anlage zu übernehmen, gibt es die o.a. Einbindung als Datei für Loxone Version 8:

Musterconfig Helios-modbusTCP v5.1.Loxone

Hier die Vorgängerversion, die mit Loxone Version 7 erstellt wurde:

Musterconfig Helios-modbusTCP v5.Loxone

Ein kleiner Fehler ist noch in der Config v5: Um das Stoßlüften manuell zu beenden, muss noch der Ausgang Q des Tasters mit dem Eingang R des Monoflops verbunden werden und der Eingang negiert werden (roter Punkt auf dem Eingang).

Am Einfachsten ist es, die Datei zu laden, dann die Konstanten in der eigenen Konfiguration anzulegen (Copy & Paste der Konstanten, nicht der Verwendung der Konstanten auf der Seite!), ggf. einen virtuellen Eingang für die Dauer des Stoßlüftens anlegen und einen Cloud-Mailer für die Benachrichtigung, falls die Anlage ausfällt (Umdrehungen = 0). Hier habe ich noch keine Möglichkeit gefunden, die Einstellungen aus der Musterkonfiguration direkt zu übernehmen. Das manuelle Übertragen sollte aber nicht viel Aufwand sein. Eine Benachrichtigung per Cloud-Mailer erfordert kostenlose Registrierung! Hinweise zur Registrierung gibt es von Loxone.

für Helios-modbusTCP v3 und v4

Falls jemand mit der o.a. Version 5 Probleme hat, sind nachfolgend noch Screenshots der älteren Versionen abgebildet. Die Einbindung ist sehr einfach und eine Intelligenz ist noch nicht vorhanden - lediglich die manuelle Auswahl der Lüfterstufe über den Baustein "Radiotasten" und die Anzeige einiger Werte sind realisiert worden. Wer die Stufe 0 z.B. für den manuellen Wechsel des Vorfilters praktisch findet, muss den vorgeschalteten Baustein "Subtrahierer" einfügen. Wer nur Stufe 1-4 steuern möchte, kann die Logik noch etwas vereinfachen und den Baustein "Subtrahierer" weglassen.

In der Version 3 wird die Lüfterstufe sowohl gelesen als auch geschrieben, wenn diese über die Radiotasten geändert wurde. Dies erlaubt einen parallelen Betrieb z.B. mit dem easycontrols Webinterface. Hierfür ist die Verdrahtung in Loxone entsprechend dem Bildschirmfoto für v3 vorzunehmen. In dem Beispiel wird noch eine Benachrichtigung gesendet, wenn der Lüfter 10 Minuten nicht arbeitet (0 rpm entweder für Zu- oder Abluftventilator).

                     

 

passive Kühlfunktion

Unter der passiven Kühlfunktion versteht man die Kühlung der warmen Außenluft an heißen Sommertagen durch die (hoffentlich noch) moderate Innentemperatur. Die Funktion des Wärmetauschers funktioniert in diesem Fall umgekehrt und sorgt dafür, dass die Zuluft durch die Fortluft etwas heruntergekühlt wird. Das macht natürlich Sinn, denn man möchte es ja im Haus im Sommer nicht zu warm haben. Zusätzlich ist es i.d.R. sinnvoll, die Lüfterstufe auf ein Minimum zu reduzieren, denn die Zuluft ist in dem o.a. Fall immer noch wärmer, als die Fortluft. Da man sich im Sommer tagsüber viel draußen aufhält, ist eine minimale Lüftung sicherlich ausreichend.

Nachts, wenn die Außenluft/Zuluft kälter ist, als die Fortluft, dann sorgt die Öffnung des Bypass dafür, dass die Zuluft nicht durch die Fortluft aufgewärmt wird, sondern direkt in das Haus gelangt. Unter diesen Bedingungen macht eine höhere Lüfterstufe Sinn, damit möglichst viel kältere Außenluft nach innen gelangt und damit die Innentemperatur während der Nacht etwas reduziert wird.

Insgesamt kann man durch die o.a. Maßnahmen keine Wunder erwarten, aber durchaus etwas die Innentemperatur beeinflussen. Ein effektiver Hitzeschutz z.B. durch Raffstores und gute Dämmung sind unerläßlich. Zumindest in Norddeutschland ist es nachts i.d.R. auch im Sommer draußen kühler als drinnen, so dass der Effekt durchaus bemerkbar ist. 

Nun wäre es ja nur logisch, wenn die Helios Lüftungsanlagen auch eine passive Kühlung unterstützen würden. Leider gibt es aber ein technisches Problem: beim Abkühlen von Luft entsteht Kondenswasser und bei der passiven Kühlung entsteht dies auf der Zuluftseite. Bei einigen Anlagen (z.b. KWL EC 270 W, KWL EC 370 W) ist leider kein Kondenswasserablauf auf dieser Seite vorgesehen. Andere Anlagen (z.B. KWL EC 200 W, KWL EC 300 W und KWL EC 500 W) können durch das Entfernen eines Stopfens für diese Funktion vorbereitet werden, siehe Helios Anwender Handbuch Nr. 82 200 - KWL-Steuerung mit easyControls, Seite 27. 

Leider ist bei den erstgenannten Anlagen die Funktion "passive Kühlung" im easyControls Webinterface deaktiviert. In dem verlinkten Handbuch ist der Hinweis "Bei den restlichen KWL-Geräten kann die Kombination aus Klimaanlage und extremer Luftfeutigkeit in der Außenluft zu Wasserschäden führen. Die Verwendung der passiven Außenluftkühlung ohne Klimaanlage ist hingegen unkritisch."

Unter diesem Gesichtspunkt ist die Implementierung der Bypassfunktion bei diesen Anlagen allerdings nicht nachvollziehbar. Wenn die passive Außenluftkühlung ohne Klimaanlage unkritisch ist, dann sollte diese Funktion auch auswählbar sein, sinnvollerweise vielleicht nicht mit den Werkseinstellungen. Leider ist sie das aber nicht. Insbesondere bei Anlagen mit Entalphiewärmetauscher fällt i.d.R. gar kein Kondensat an, denn die Membran überträgt die anfallende Feuchtigkeit von der einen auf die andere Seite. Mehrere Kontrollen an der eigenen Anlage haben dies bestätigt. Da der Typ des Wärmetauschers (Entalphie) in easyControls eingetragen ist, könnte man ggf. eine passive Kühlung bei diesem Typ zulassen.

Der ebenfalls in dem Abschnitt aufgeführte Hinweis von Helios sollte allerdings nicht unerwähnt bleiben: "Jedoch sollte bei den KWL-Geräten eine Wanne unter dem Gerät angebracht werden, um Wasserschäden am Gebäude zu vermeiden. In Extremsituationen kann Kondensatwasser anfallen". 

Wenn man sich die Implementierung der Bypassfunktion genauer ansieht, dann stellt man fest, dass der o.a. Schutz gegen Wasserschäden gar nicht gegeben ist! Lediglich in dem o.a. als "unkritisch" eingestuften Fall wird der Bypass bei hohen Außenlufttemperaturen nicht geschlossen, sondern bleibt offen. Die von Helios eingebaute Logik hat nach meiner Ansicht aber einen groben Fehler: ist es innen kühl, z.B. durch eine Klimaanlage, dann ist die Bedingung "Bypasstemperatur" > "Fortlufttemperatur" NICHT erfüllt und der Bypass bleibt geschlossen. Die Bedingung soll eigentlich dafür sorgen, dass der Bypass nur dann öffnet, wenn auch innen eine Kühlung gewünscht ist, also die eingestellte "Bypasstemperatur" erreicht ist. Diese Bedingung sorgt aber auch dafür, dass der Bypass geschlossen bleibt, wenn es draußen heiß ist und innen z.B. durch eine Klimaanlage oder eine plötzliche Hitzewelle, (noch) sehr kühl ist. Genau in diesem Fall fällt lt. Helios viel Kondenswasser an und es könnte zu einem Wasserschaden kommen. Da die Luft durch den Wärmetauscher heruntergekühlt wird, erwärmt sich das Haus nur langsam (wenn man keine Klimaanlage hat). Wenn es drinnen wärmer wird und die Bypasstemperatur erreicht ist, dann wird der Bypass geöffnet. In diesem - lt. Helios unkritischen - Fall wird die warme Außenluft direkt nach innen geführt und das Haus dadurch zusätzlich aufgewärmt. 

Die Logik ist für mich nicht nachvollziehbar. Vielleicht liest ja jemand von Helios mit und sorgt dafür, dass das Verhalten geändert wird. Hoffentlich wird die Logik dann nicht "verschlimmbessert", so dass der Bypass in dem Fall "Zulufttemperatur" > "Fortlufttemperatur" immer offen ist, sondern es wird dem Kunden überlassen, die passive Kühlung zu aktivieren. Insbesondere bei Wärmetauschern mit Entalphie sollte das kein Problem darstellen. Eine Steuerung des Bypass über einen externen Kontakt ist ja von Helios auch vorgesehen.

Bei der von mir verwendeten Anlage KWL EC 370 W ET ist die passive Kühlfuntktion leider im Menü deaktiviert. Eine indirekte Ein- bzw. Ausschaltung des Bypass ist aber durch die Änderung der Bypasstemperatur (Variable v01035 in Modbus/TCP) möglich:

  • Bypasstempertur = 35 Grad - Bypass ist i.d.R. geschlossen, da die Innentemperatur kleiner ist.
  • Bypasstempertur = 22 Grad - Bypass ist geöffnet, wenn es drinnen wärmer ist, als diese Temperatur. 

Durch den o.a. "Fehler" in der Logik ist es dadurch möglich, den Bypass aus der Loxone Config zu steuern. Alternativ wäre noch eine Steuerung über einen externen Kontakt möglich, allerdings wird dann noch eine zusätzliche Leitung und ein Relaiskontakt im MS oder Extension benötigt. 

  • Keine Stichwörter

3 Kommentare

  1. Erstmals Danke für das tolle Programm !!!!!

    Eine Frage hätte ich zum Stoßlüften und zwar wieviele Minuten ist das Stoßlüften aktiv, sobald man dieses aktiviert ?

     

    Danke !

     

  2. Der Eingang Stoßlüften AL3 setzt die Lüfterstufe auf 4 und blockiert den normalen Stufeneingang AL2.

    Entsprechend ist Stoßlüften solange aktiv wie du auf AL3 1 lieferst.

    Hierr musst du also ein Ablauftimer selber in Loxone einbauen.

     

    Gruß Henrik

  3. Erik Görres sagt:

    Hab es in meine Config übernommen und es funktioniert wunderbar!(Daumen hoch)

    Was mich noch interessieren würde wäre eine Ansteuerung für die Vorheizung. Just in den letzten Tagen friert ständig der Wärmetauscher zu bei den Außentemperaturen. Leider ist auch hier die Logik von Helios nicht die smarteste und ich habe keine Lust, dass der 1000W Heizstab aktiv wird, sobald die Außentemperatur unter 5°C fällt.

    Kann man die Vorheizung theoretisch auch über ModBus beeinflussen? Ich meine eine Adresse dafür in der Tabelle bei Helios gesehen zu haben.