Community

Integration Hauslüftung (KWL)


#1

Mahlzeit Gemeinde!

Mein Häuschen hat eine wunderbare zentrale “kontrollierte Wohnraumlüftung” (KWL). Diese wird aufgrund katastrophaler Bedienlogik bisher mehr schlecht als recht über einen ZWAVE-Plug gesteuert, also nur an/aus. Das ganze immerhin schonmal Temperatur- und Luftfeuchteabhängig.

Nachdem ich jetzt schon mit dem Gedanken schwanger gegangen war, hier mittels Arduino & Co. die komplette Steuerung zu ersetzen und in die Homee zu verlagern, kam mir beim Studium der Bedienungsanweisung die Erleuchtung:

Okay, das geht also offensichtlich deutlich einfacher. Aber wo bekomme ich ein entsprechendes Spannungssignal her? Gibt’s da was von Ratiopharm?

Naja, nicht ganz, aber zumindest von Qubino. Und da sich da auch noch ein preiswerter Temperatursensor anschließen lässt, kann ich auch ganz dezent die Ansaugluft (= Außentemperatur) messen und für die Steuerung auswerten.

Bin gespannt, ob das wirklich so funktioniert und werde mich melden, wenn es das tut :wink:

Gruß aussm Rheinland, Martin


#2

Bitte unbedingt melden. :slight_smile:

Habe auch eine KWL von Viessmann und bin auch schon auf der Suche. Mein Steuergerät gibt auch 0 - 10Vdc aus.


#3

Dem schließe ich mich mal an. Ich baue aktuell und hab daran auch großes Interesse!


#4

Hallo zusammen,

Ich denke auch gerade über diese Lösung nach. Mein Problem ist, ich würde gerne aus dem CO2-Wert des Netatmo die Steuerspannung errechnen. So wäre die Lüftung immer genau so stark eingestellt, wie auch Luft verbraucht wird.

Wie habt ihr das gelöst?

Gruß,
Marc


#5

Mahlzeit!

Also ich habe jetzt den Qubino 0-10V Dimmer angeschlossen und die Anlage lässt sich einwandfrei steuern (wenn nicht grad andere Probleme auftreten).

In wie weit sich das mit der Netatmo koppeln lässt, kann ich aber nicht sagen. Ich habe das zum einen zeitgesteuert gemacht und zum anderen über die Dunstabzugshaube (wenn P>110W (also höher als Stufe 2 der Haube) dann Lüftung auf volle Pulle). Seitdem schockt es mich nicht mehr, wenn meine Göttergattin mal wieder ihre Knoblauch-Scampis bastelt :wink:

Entrauchte Grüße, Fritzmaddin


Lüftungssteuerung mit 4-Stufenschalter
#6

Hallo Fritzmaddin,

kannst du mir sagen, welches Netzteil du benutzt hast?

Danke Dir,
Marc


#7

Ja, wie gerade im anderen Thread geschrieben: Meine KWL stellt die 24V direkt zur Verfügung, muss halt dann an Klemme XYZ abgegriffen werden. Wo genau sollte Dir das Handbuch der Steuerung verraten.


#8

Welches Modell/ Hersteller hast du verbaut? Habe viessmann 300 w.

@Fritzmaddin


#9

Ich habe eine Helios EC 300W. Muss mal schauen, ob ich da auch 24V abgreifen kann…

Marc


#10

Hallo zusammen,
Ich konnte das mit einer Brink Renovent 400 ähnlich umsetzen. Es war lediglich notwendig, aus dem Standard-Modell eine Plus-Modell zu machen (Freilegen des Anschlussterminals und Änderung des Mäuseklaviers).
Die 24V-Versorgungsspannung liefert die Anlage, die Ansteuerung erfolgt über 0-10V mit dem genannten Qubino Dimmer.
Den freien Input des Dimmers möchte ich nutzen, um den Filterwechsel darüber zu melden. Da mir dafür kein Schaltplan vorliegt, muss ich bis zum Messen auf den nächsten Filterwechsel warten.

Die Verknüpfung mit der Netatmo ist noch nicht implementiert, sollte aber gehen.
Viele Grüße


#11

Hallo zusammen,

abe ein einfaches 24VDC Netzteil beorgt und angeschlossen. Funktioniert soweit, Inklusion auch.

An den Klemmen des Dimmerausgans liegen bei mir aber durchgehend 11 V an, unabhängig vom Dimmerzustand und Schaltzustand.

Hattet ihr das auch?

Wie konntet ihr das lösen?

Danke für eure Unterstützung!

Gruß,
Marc


#12

Ich ziehe die Frage zurück. Habe neu inkludiert und jetzt funktioniert es.

Danke euch trotzdem!

Marc


#13

Hat jemand den Mod schon mit einer Viessmann KWL durchgeführt?


#14

Danke für denn Tip mit dem Qubino 0-10v, hat mit meiner Helios KWL ohne zusätzliches Netzteil funktioniert. Die 10V die am 4-Stufenschalter ankommen reichen für den Betrieb, der Qubino braucht keine 12-24V. Und das beste, der alte schalte funktioniert auch noch zusätzlich.


#15

Ich hab unsere KWL (integriert in der Heizungsanlage Stiebel Eltron LWZ 304) auch in Homee integriert.

Allerdings nicht direkt sondern homee -> lokaler webhook --> lokaler webserver --> php-Script --> lokale Webseite der Stiebel Heizung (ISG-Modul).

Damit kann ich in homee die Lüftungsstufen (0-3) und die dazu gehörenden Ab-/Zuluft Volumenströme (80-300 m³) setzen. Ich bekomme zwar keine Rückmeldung in Richtung homee aber bisher hats noch immer funktioniert.
In der Heizungssoftware selbst kann man nur Tag/Nacht konfigurieren.
Mit homee bin ich da nun zeitlich und von den Regeln viel flexibler.
Sehr praktisch wenn man dann ad hoc im Sommer beim Schlafengehen Stufe 3 mit asymetrischen Volumenströmen (Unterdruck) aktivieren kann und einfach ein Fenster im Schlafzimmer klappt damit dort die kühle Nachluft einströmt ohne über den Wärmetauscher zu müssen.
Mit einer netatmo Sensorik könnte ich auch die Luftqualität hernehmen als Trigger aber ich bin nicht so der netatmo/cloud Freund hab da aber noch nichts aus dem Z-Wave Sortiment gefunden was mir in homee die Luftqualität anzeigen würde so wie es netatmo tut.

Wichtig war mir dass alles lokal im LAN abläuft.
Nur wenn der homee Proxy mal weg ist dann geht halt die Sprachsteuerung nicht.

Mit der gleichen Lösung kann ich auch noch vieles andere an der Heizung verstellen aber das ist ja hier nicht das Thema.


#16

Ich werfe mal eine andere (Software) Lösung in den Ring. Nachdem wir in unser Haus mit einer Helios KWL eingezogen sind, bestand Integrationsbedarf in homee :slight_smile: . Ist das Ergebnis von zwei Stunden scripten an einem verregneten Sonntag - daher auch noch nicht super hübsch :wink: .

Helios KWL bietet eine Modbus TCP Schnittstelle an. Diese erfordert, dass die KWL im Netzwerk verfügbar ist und die modbus Schnittstelle in der KWL Webkonfiguration aktiviert ist (Konfiguration -> Gerät -> Gebäudeleittechnik -> Modbus Aktiviert:). Mit meinem folgenden Python Script auf einem Raspberry kann man dann per homee Webhook Befehle an den KWL senden.

Nach dem Starten des scripts läuft dauerhaft ein Webserver auf dem Raspberry (bis das Script wieder gestoppt wird). Z.B. beim Aufruf von http://raspberry_ip:8087/partymodus_an sendet der Raspberry drei Befehle an die KWL per modbus TCP: Lüfterstufe = 4, Laufzeit = 180min, Partymodus = an. Damit schaltet die KWL dann für 3h in den Lüftermodus 4. Lässt sich auch alles schön im Webserver des KWL nachverfolgen.

Im Moment ist Ruhemodus an / aus, Partybetrieb an / aus und Zuluft Temperatur implementiert, wobei letzteres nur Ready-only ist und dem Testen des Scripts dient. Das Script kann anhand der guten Dokumentation des Herstellers “FUNKTIONS- UND SCHNITTSTELLENBESCHREIBUNG Modbus Gateway TCP/IP” beliebig erweitert werden.

Funktioniert für mich perfekt. So kann man z.B. per FT55 den Partymodus aktivieren und dadurch die Lüftungsanlage auf die höchste Stufe stellen. Zudem möchte ich darüber im Sommer gewisse Lüftungssteuerungszenarien abbilden (z.B. bei sinkender Aussentemperatur nachts das tagsüber erwärmte Haus durch gesteigerte Lüftungsleistung abkühlen). Es gilt lediglich zu beachten, dass lediglich ein Befehl zur gleichen Zeit an die KWL gesendet wird, da die Modbus Implementierung mit Registern arbeitet.

Hier der aktuelle Stand des Scripts für Interessierte (Verwendung auf eigene Gefahr - hier geht’s immerhin um die frische Luft im Haus :wink: ):

#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from pymodbus.client.sync import ModbusTcpClient as ModbusClient
from pymodbus.constants import Endian
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.payload import BinaryPayloadBuilder
import logging
import argparse
import fcntl, sys, os
import re
import time

# Starts a web server and serve as webhook interface to steer the helios KWL
# E.g. homee -> webhook via HTTP -> raspberry running this script -> modbus TCP -> helios KWL
# Based on the work published here: https://github.com/home-assistant/home-assistant/issues/5185
# Call the webserver via: http://IP_WEBSERVER:PORT/BEFEHL
# Supported commands: zuluft, partymodus_an, partymodus_aus, ruhebetrieb_an, ruhebetrieb_aus
# More details on commands in document: FUNKTIONS- UND SCHNITTSTELLENBESCHREIBUNG FUNCTIONAL AND INTERFACE DESCRIPTION Modbus Gateway TCP/IP

SLAVE_ID = 180
FIRST_REGISTER_ADDR = 0x01
KWL_IP = 'helios'					# IP of KWL system
WEB_SERVER_PORT_NUMBER = 8087		# port number for webserver


def kwl_comm_start(ip, variable, rtr):
	try:
		kwl_com = kwl_comm(ip, variable, rtr)
		return kwl_com
	except:
		print "Error in communication"
		return "Error in communication"

def kwl_comm(ip, variable, rtr):
    logging.basicConfig()
    log = logging.getLogger()
    log.setLevel(logging.ERROR)

    rtr = rtr + 3
    if rtr < 8:
	rtr = 8

    client = ModbusClient(ip, 502)
    client.connect()

    builder = BinaryPayloadBuilder(byteorder=Endian.Little,
                 wordorder=Endian.Big)
    builder.add_string(variable + '\0')

    payload = builder.build()
    client.write_registers(FIRST_REGISTER_ADDR, payload,
                           skip_encode=True, unit=SLAVE_ID)

    result = client.read_holding_registers(
        FIRST_REGISTER_ADDR, rtr, unit=SLAVE_ID)

    output = BinaryPayloadDecoder.fromRegisters(result.registers,
                                             byteorder=Endian.Little,
                 wordorder=Endian.Big).decode_string(rtr)

    output = re.sub(u'([\u0000])', "", output)
    client.close()
    return(output)


class webHandler(BaseHTTPRequestHandler):
	
	#Handler for the GET requests
	def do_GET(self):
		print self.path.lower()
		self.send_response(200)
		self.send_header('Content-type','text/html')
		self.end_headers()
		
		if self.path.lower()=="/zuluft":
			kwl_comm_out = kwl_comm_start(KWL_IP, 'v00105', 8)
		elif self.path.lower()=="/partymodus_an":
			kwl_comm_out = kwl_comm_start(KWL_IP, 'v00091=180', 6)
			kwl_comm_out = kwl_comm_out + " " + kwl_comm_start(KWL_IP, 'v00092=4', 5)
			kwl_comm_out = kwl_comm_out + " " + kwl_comm_start(KWL_IP, 'v00094=1', 5)
		elif self.path.lower()=="/partymodus_aus":
			kwl_comm_out = kwl_comm_start(KWL_IP, 'v00094=0', 5)
		elif self.path.lower()=="/ruhebetrieb_an":
			kwl_comm_out = kwl_comm_start(KWL_IP, 'v00096=180', 6)
			kwl_comm_out = kwl_comm_out + " " + kwl_comm_start(KWL_IP, 'v00097=0', 5)
			kwl_comm_out = kwl_comm_out + " " + kwl_comm_start(KWL_IP, 'v00099=1', 5)
		elif self.path.lower()=="/ruhebetrieb_aus":
			kwl_comm_out = kwl_comm_start(KWL_IP, 'v00099=0', 5)
		else:
			kwl_comm_out = "No valid request"
		return self.wfile.write(kwl_comm_out)

try:
	server = HTTPServer(('', WEB_SERVER_PORT_NUMBER), webHandler)
	print 'Started KWL server on port ' , WEB_SERVER_PORT_NUMBER
	server.serve_forever()

except KeyboardInterrupt:
	print 'Shutting down the KWL web server'
	server.socket.close()

Und so sieht der Webhook aus (läuft bei mir auf dem homeean Raspberry mit):