matsab.de

ComfoAir 500 BFB Web-Interface

Diese Seite beschreibt ein Projekt, bei dem Daten des Lüftungsgeräts Zehnder ComfoAir 500 (CA-500) auf einer Webseite dargestellt werden können. Das CA-500 ist über eine RS-485 Schnittstelle mit der Bedieneinheit ComfoControl Avignon verbunden. Diese Kombination ist scheinbar nicht so häufig anzutreffen, jedenfalls befassen sich andere Projekte entweder mit einem anderen Lüftungsgerät (CA-550 bzw. CA-350) oder einer anderen Bedieneinheit (ComfoControl Ease bzw. Luxe).

 

Technik

Da die Lüftungsdaten für Statistik-Zwecke in einem festen Raster erfasst und gleichzeitig für die Webseite permanent abrufbar sein sollen, ist ein ständig laufender Rechner notwendig. Wegen des geringen Stromverbrauchs, fiel die Wahl auf einen Raspberry Pi:

Der Raspberry Pi hat eine serielle Schnittstelle (RX/TX) onboard, diese ist jedoch für 3,3 Volt ausgelegt und somit nicht kompatibel mit Standard RS-232 Signalpegeln. Um die Standard Pegel zu bekommen, wird ein Pegel Shifter benötigt, erst dann kann nachfolgend ein RS-232 zu RS-485 Konverter zur Erfassung der Daten zwischen Lüftungsgerät und Bedieneinheit benutzt werden. RS-485 ist eine serielle Schnittstelle, welche mindestens ein Leitungspaar für differentielle Signalübertragung verwendet. Die beiden Adern sind mit A und B im Handbuch des Lüftungsgeräts gekennzeichnet. RS-484 ist ein Bussystem, welches mehrere Teilnehmer erlaubt (im Gegensatz zur Punkt-zu-Punkt Verbindung von RS-232). Der vorhandene Enthalpie-Sensor ist ebenfalls RS-485 Teilnehmer, weshalb im Normalzustand schon 3 Busteilnehmer vorhanden sind. Der Raspberry Pi wird als vierter Teilnehmer angeschlossen: 

Fertig aufgebaut sieht das ganze so aus:

Die Daten, die zwischen diesen Geräten ausgetauscht werden, sind herstellerspezifisch und je nach Lüftungsgerät und Bedieneinheit unterschiedlich. Die verfügbare Protokollbeschreibung von see-solutions ist für Geräte mit RS-232 Schnittstelle entstanden und nicht kompatibel mit CA-500 auf RS-485 Basis. Deshalb war eine Neuanalyse des verwendeten Protokolls nötig.

Ausschnitt der empfangenen Daten:

07 F0 00 85 00 32 07 0F  
ACK  
07 F0 00 84 0A 00 12 00 4D 53 4B F9 F9 01 00 2B 07 0F  
ACK  
07 F0 00 A0 02 01 0C 5C 07 0F  
ACK  
07 F0 00 87 00 34 07 0F  
ACK  
07 F0 00 86 0B 19 19 67 67 01 00 18 00 00 00 00 57 07 0F  
ACK  
07 F0 00 C1 00 6E 07 0F  
07 F0 00 C0 02 19 51 D9 07 0F  
...

Software

Die Software zum Erfassen der Daten ist in C++ umgesetzt. Es werden mehrere Schnittstellen überwacht: die serielle RS-485 Schnittstelle, der Unix Domain Socket zum Abfragen der aktuellen Daten und mehrere GPIO Pins zur freien Verfügung. Das ganze soll objektorientiert erfolgen und über Kanäle (Channels) abstrahiert werden: die empfangenen seriellen Daten werden von einem “FrameBuilder” zu Telegrammen (Frames) zusammengefasst und in einem Prozessabbild (ProcessImage) gehalten. Der Zugriff auf die Frames geschieht über spezialisierte “Frame” Klassen. Auf der anderen Seite greift der Apache Webserver per PHP auf den Unix Domain Socket zu und bekommt die aktuellen Lüftungsdaten übermittelt. Für spätere statistische Auswertung läuft ein Cron Job alle 15 Minuten und speichert die aktuellen Daten in eine CSV Datei.    

Web-Interface

Die Darstellung der ermittelten Lüftungsdaten erfolgt auf einer Webseite sodas ein normaler Internet-Browser verwendet werden kann. Auf dem Raspberry Pi wird dazu der Webserver “Apache2” mit PHP installiert. Die Webseite zeigt eine skalierbare Vektorgrafik (SVG) an, in die per JavaScript die aktuellen Lüftungsdaten eingebracht werden:

Um die gespeicherten Lüftungsdaten in Kurven darzustellen werden zwei “Widgets” von wijmo.com benutzt:

Steuerung der Lüftungsanlage

Um vom Raspberry aus die Lüftungsanlage zu steuern, muss das vorhandene Bediengerät vom RS-485 Bus abgekoppelt werden. Dies ist nötig damit sich die beiden Teilnehmer Avignon und Raspberry nicht gegenseitig beeinflussen.