Neues Modul für ComfoAir, Paul Santos und Lüftungen mit kompatibler Steuerung

Begonnen von StefanStrobel, 08 Mai 2014, 20:22:06

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo,

anbei ein neues Modul für für ComfoAir Lüftungsanlagen von Zehnder mit serieller Schnittstelle (RS232) sowie dazu kompatible Anlagen wie Storkair WHR 930, Storkair 950, Paul Santos 370 DC, Paul Santos 570 DC, Wernig G90-380 oder Wernig G90-550.
Es gibt bereits zwei andere Module für den gleichen Zweck (http://forum.fhem.de/index.php/topic,14697.0.html), die jedoch nicht so weit weiter entwickelt wurden, dass man sie einchecken könnte.
Ich hatte ursprünglich angefangen, das Modul von danhauck zu erweitern, habe dann aber so viel umgebaut / dazu gebaut, dass man inzwischen kaum noch Ähnlichkeiten im Code findet.

Dem neuen Modul kann man beim define ein Intervall mitgeben, so dass es aktiv die Werte von der Lüftung abfragt, so ähnlich wie das im Modul von danhauck der Fall ist. Man kann das Intervall aber auch auf 0 setzen, dann liest das Modul nur passiv mit und man könnte es parallel zu einer externen Fernsteuerung betreiben, wie das beim Modul von Joachim der Fall ist. In diesem Fall sollte man jedoch von Set-Befehlen absehen, da die RS232-Schnittstelle nicht dafür gedacht ist, mehr als zwei Geräte miteinander zu verbinden.

Bei der aktiven Abfrage kann man über Attribute bestimmen, welche Abfragen gesendet werden. Damit kann man kontrollieren, welche Readings man haben möchte und welche nicht.

Die einzelnen Parameter kann man auch per Get abfragen und ein paar kann man per Set auch schreiben. Für FhemWeb werden bei Get und Set passende Optionen angegeben, so dass man passende Werte auswählen kann. Beispiele und weitere Details stehen wie üblich in der Doku am Ende des Modul-Codes.

Ich habe das Protokoll etwas detaillierter umgesetzt, als es in den beiden früheren Modulen der Fall ist (auch das Senden von Ack und die Kodierung / Dekodierung von x07-Werten), ein paar zusätzliche Protokoll-Befehle implementiert und die Definition des Protokolls erfolgt am Anfang des Modus in einer Datenstruktur, so dass man auch weitere Protokollbefehle und Readings einfach ergänzen kann, ohne den eigentlichen Code anfassen zu müssen.

Wenn noch jemand beim Testen helfen könnte, würde ich mich um das Einchecken (zumindest nach contrib) bemühen.

Gruss
   Stefan

StefanStrobel

#1
Und hier noch das Modul ...

Edit: 18.5.14 - neue Version angehängt - weniger Logging bei unbekannten Protokollbefehlen, Fehlerbehebungen beu Betrieb an CC-Ease o.ä., Protokollunterstützung ergänzt (EWT, Sensordaten)

Edit: die aktuelle Version des Moduls ist eingecheckt.

Joachim

Moin Stefan,

super, dann Du da weitergemacht hast, sowie ich Zeit habe, werd ich es mal testen, und Rückmeldung erstatten.
Es hat mich eigentlich schon länger gewurmt, dass ich in dem begonnenen Modul nicht weitergemacht habe. (Es lief ja).

Melde mich die Tage.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Joachim

Moin Stefan,
habe Dein Modul jetzt mal bei mir eingespielt, und schon mal flüchtig in den Code gesehen.
1. Rückmeldung
eingestellt als nur lesen, die Anlage wird sauber mitgeloggt, sieht gut aus, leider fehlt das Reading meines Erdwärmetauschers.

Kommando: 0x00 0xD1 Temperaturen abrufen
Antwort: 0x00 0xD2
Daten:   Byte[1]   Komfort Temperatur (°C*)
         Byte[2]   T1 / Außenluft (°C*)
         Byte[3]   T2 / Zuluft (°C*)
         Byte[4]   T3 / Abluft (°C*)
         Byte[5]   T4 / Fortluft (°C*)
         Byte[6]   Fühler anwesend: (1 = anwesend / 0 = abwesend)
                   0x01 = T1 / Außenluft
                   0x02 = T2 / Zuluft
                   0x04 = T3 / Abluft
                   0x08 = T4 / Fortluft
                   0x10 = EWT
                   0x20 = Nachheizung
                   0x40 = Küchenhaube
         Byte[7]   Temperatur EWT (°C*)  <--------------------------------------------------------------- Dieses Byte

Ich werde heute in meiner Nachtschicht versuchen zu verstehen, was Du da programmiert hast, und dann mal weitersehen.

Außerdem flutet es mein Log mit:

2014.05.15 14:39:05.533 3: WHR960: read got unknown cmd 0098, len 20, data 0000000000000000000000000000000000000000, chk 89
2014.05.15 14:39:05.701 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:05.813 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:06.023 3: WHR960: read got unknown cmd 003e, len 4, data 80b57613, chk 173
2014.05.15 14:39:06.211 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:06.719 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:06.823 3: WHR960: read got unknown cmd 00aa, len 8, data 0000000000000000, chk 95
2014.05.15 14:39:07.227 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:07.735 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:08.241 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:08.565 3: WHR960: read got unknown cmd 00ec, len 7, data 040c0001000012, chk 195
2014.05.15 14:39:08.748 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:08.846 3: WHR960: read got unknown cmd 003e, len 4, data 80b57613, chk 173
2014.05.15 14:39:09.087 3: WHR960: read got unknown cmd 0098, len 20, data 0000000000000000000000000000000000000000, chk 89
2014.05.15 14:39:09.256 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:09.766 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:09.875 3: WHR960: read got unknown cmd 00aa, len 8, data 0000000000000000, chk 95
2014.05.15 14:39:10.348 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:10.896 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43
2014.05.15 14:39:11.288 3: WHR960: read got unknown cmd 003c, len 10, data a016cf5b7f77800000e2, chk 43


ansonsten sieht es schon mal sehr gut aus.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

StefanStrobel

Hallo Joachim,

Vielen Dank für's Testen. Offenbar verwendet Deine Fernsteuereinheit ein paar weitere Protokollbefehle, die ich noch nicht definiert habe. Da ich das recht generisch über die Datenstrukturen am Anfang des Moduls gemacht habe, muss ich jetzt nur noch für die zusätzlichen Protokollbefehle den passenden unpack-String und die Namen der Readings hinzufügen.
Das gleiche gilt für die Abfrage der EWT-Daten.
Das sollte ich am Wochenende hinbekommen. Dann sind auch die Log-Meldungen weg. Ich werde bei der Gelegenheit auch das Loglevel für Meldungen zu unbekannten Nachrichten von 3 auf 4 erhöhen, dann stört das in solchen Fällen weniger.

Gruß
    Stefan

Joachim

Moin Stefan,

hört sich gut an, sowie der EWT drinnen ist werde ich wieder auf Dein Modul umsteigen, und weiter testen.
Bis dahin werde ich erst einmal versuchen, zu verstehen, wie Dein Modul arbeitet.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

MichaelH

Hi,

ich würde es auch nutzen, aber wie sind den genau die Defines?
Grüße

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

MichaelH

Hi Joachim,

Und wie bekomme ich die von dir angesprochene aktive abfrage der Anlage hin? Ich hab nämlich keine bedieneinheit :)

Grüße

Joachim

Wie wäre es mit lesen!
ZitatDem neuen Modul kann man beim define ein Intervall mitgeben, so dass es aktiv die Werte von der Lüftung abfragt, so ähnlich wie das im Modul von danhauck der Fall ist. Man kann das Intervall aber auch auf 0 setzen, dann liest das Modul nur passiv mit und man könnte es parallel zu einer externen Fernsteuerung betreiben, wie das beim Modul von Joachim der Fall ist.
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

StefanStrobel

Hallo,

ich habe oben eine neue Version angehängt. Der EWT sollte jetzt unterstützt werden, ich kann es jedoch leider nicht selbst testen, da ich keinen habe.  Zudem habe ich noch den Protokollbefehl zum Auslesen der Sensordaten hinzugefügt und bei passivem Betrieb einen Fehler korrigiert (das Modul hatte versucht ACK zu senden).

Für den EWT war die Definition der Protokollnachricht "00d2" noch unvollständig. Die "unpack" Zeile habe ich auf
unpack   => "CCCCCxC" geändert und eine weitere Zeile für das Reading hinzugefügt:
                                { name => "Temp_EWT",      expr => '$val / 2 - 20'}]},

Für den Protokollbefehl "Sensordaten" habe ich folgende Zeilen hinzugefügt:

   "0098"  =>  { unpack   => "CCCCCCxCCCCCCCCCC",
                  name     => "Sensordaten",
                  request  => "0097",
                  readings => [ { name => "Temp_Enthalpie",  expr => '$val / 2 - 20'},
                                { name => "Feucht_Enthalpie"},
                                { name => "Analog1_Proz"},
                                { name => "Analog2_Proz"},
                                { name => "Koeff_Enthalpie"},
                                { name => "Timer_Enthalpie", expr => '$val * 12'},
                                { name => "Analog1_Zu_Wunsch"},
                                { name => "Analog1_Ab_Wunsch"},
                                { name => "Analog2_Zu_Wunsch"},
                                { name => "Analog2_Ab_Wunsch"},
                                { name => "Analog3_Proz"},
                                { name => "Analog4_Proz"},
                                { name => "Analog3_Zu_Wunsch"},
                                { name => "Analog3_Ab_Wunsch"},
                                { name => "Analog4_Zu_Wunsch"},
                                { name => "Analog4_Ab_Wunsch"}]},


Das Modul macht daraus automatisch auch die Set-Option "request-Sensordaten", ein Attribut "poll-Sensordaten" und Get-Optionen für alle neuen Readings.

Gruss
   Stefan

Joachim

Danke Stefan,

geht heute Nachmittag in den Testbetrieb.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

MichaelH

Hallo zusammen,

danke einmal für die Defines und für die erklärung. Manchmal sehe ich einfach im Forum den Wald vor lauter Bäume nicht oder ich freu mich zusehr auf die neue Funktion, dass ich etwas übersehe.
Wie ich schon schrieb, habe ich eine ComfoAir OHNE CC-Ease und ohne CC-Luxe. Ebenso hat meine Lüftungsanlage KEINE Konnektorplatine und NUR eine Steuerplatine. Da nun auch auf der Konnektorplatine einige RS232-Ports sind, stellt sich für mich die Frage, welchen RS232-Port ihr verwendet habt? Den RS232 auf der Steuerplatine, den RS232 auf der Konnektorplatine oder den RS232-PC.
Ich bekomme derzeit leider immer nur folgende Einträge in meinem Log:
2014.05.19 23:23:48 3: CA350: timeout waiting for reply expecting 00ce Request was 07f000cd007a070f

In meiner Config sieht das so aus:
define CA350 ComfoAir /dev/ttyUSB0@9600 10

Die Attribute für diverse REadings habe ich über die GUI auf "1" gestellt.

Übersehe ich etwas? Was mach ich falsch?

Schöne Grüße & Danke schonmal vorab :)
Michael

Joachim

FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

MichaelH

Hallo Joachim,
laut dem Typenschild ist meine Anlage folgender Typ:
Zehnder ComfoSystems ComfoD 350 R (D)
Grüße