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

kaktus567

Zitat von: kaktus567 am 24 Januar 2016, 18:51:59
@Stefan:

In der Protokollbeschreibung gibt es einen Testmodus.

Kann das Modul erweitert werden, um den Bypass auch bei Bedarf zu aktivieren ?
Normalerweise wird der Bypass im Sommermodus in Verbidnung mit der Komfortemperatur automatisch aktiviert.

Hallo,

ich bekomme das leider nicht hin, kann jemand da mal reinschauen ?  :-[

kaktus567

Zitat von: kaktus567 am 24 Januar 2016, 18:51:59
@Stefan:

In der Protokollbeschreibung gibt es einen Testmodus.

Kann das Modul erweitert werden, um den Bypass auch bei Bedarf zu aktivieren ?
Normalerweise wird der Bypass im Sommermodus in Verbidnung mit der Komfortemperatur automatisch aktiviert.

Hallo,

ich bekomme das leider nicht hin, kann jemand da mal reinschauen ?  :-[


2. Wie kann die Abfrage jede volle Minute erfolgen ? , "alignTime" gibt's ja hier nicht

RainerS

Hallo zusammen,

die Idee mit dem Bypass ist nicht schlecht, da man diesen nicht selbst beeinflussen kann. Der Sommermodus wird durch die Firmware aktiviert.

Es gibt aber eine Möglichkeit: nachfolgende Funktionen habe ich mit ComfoPC getestet, aber ich werde aus dem Sourcecode von "98_ComfoAir.pm" nicht schlau.

Benötigt wird:

1. Testmodus aktivieren:

Kommando:  0x00 0x01  Testmodus Modus starten
Daten:  -   
Antwort:  0x00 0x02  Bestätigung Testmodus
Daten:  -   



2. Klappe setzen/rücksetzen:

Kommando:  0x00 0x09  Klappen setzen
Daten:  Byte[1]  Bypass (1 = offen / 0 = geschlossen / 3 = Stop)



3. Testmodus aus:

Kommando:  0x00 0x19  Testmodus beenden
Daten:  -   
Antwort:  0x00 0x1A  Bestätigung Ende Testmodus
Daten:  -   


Ich hab' keinen Schimmer, wie das eingebaut werden soll. Kann sich das jemand mal ansehen ?
Wie gesagt, die Befehle funktionieren ...


MfG

StefanStrobel

Hallo R2D2,

Am eigentlichen Programm-Code des Moduls musst Du vermutlich gar nichts ändern.
Das Modul beginnt mit der Definition einer großen Datenstruktur mit Namen %parseInfo.
Da steckt die Protokollbeschreibung drin. Um einen neuen Befehl hinzuzufügen musst Du nur diese Struktur erweitern.

Problematisch könnte es jedoch werden dass der Befehl für das Ein- und Ausschalten des Testmodus keine Daten enthält. Dafür ist der bisherige Code eigentlich nicht vorgesehen. Es könnte aber dennoch funktionieren. Ich kann das aber gerade leider nicht selbst testen.


    "0002"  =>  { unpack   => "C", # da keine Daten geliefert werden, müsste unpack eigentlich entfallen. Der Code geht bisher jedoch davon aus, dass immer ein unpack-Code angegeben ist ...
                  name     => "Test-Modus-Ein",
                  request => "0001",  # keine Daten, also auch keine Readings. Ob das klappt?
                      },


Für das Setzen der Klappe könnte das so funktionieren:


    "FF09"  =>  { unpack   => "C",                      # Es gibt gar keine Antwort auf diesen Befehl
                  name     => "Klappen setzen",          # eigener Request existiert auch nicht
                  readings => [ { name => "Bypass",
                                  map => "1:offen, 0:geschlossen, 3:stop",
                                  set => "0009:%02x03", }]}, # Byte 2 als 03 angenommen.


Alternativ gibt es ein Set-Befehl mit Namen SendRawData. Dem kannst Du einen Hex-String übergeben, z.B. 0001 zum Einschalten des Testmodus.
Wenn Du zusätzlich zu den 2 Befehls-Bytes noch Daten übergeben möchtest, kannst Du das bei SendRawData z.B. als 0009->01 angeben.
Damit sollte es auf jeden Fall funktionieren.

Gruß
    Stefan

RainerS

@Stefan: vielen Dank für die Unterstützung. Habe es umgesetzt und es funktioniert !  8)

Hier die Änderungen am Modul 98_ComfoAir.pm:


        "0002"  =>  { unpack   => "C",
                  name     => "Test-Modus-Ein",
                  request => "0001", 
                      },
                               
"001A"  =>  { unpack   => "C",
                  name     => "Test-Modus-Aus",
                  request => "0019", 
                      },
 
"FF09"  =>  { unpack   => "C",   
                  name     => "Klappen setzen",     
                  readings => [ { name => "Bypass",
                                  map => "1:offen, 0:geschlossen, 3:stop",
                                  set => "0009:%02x03", }]},



Testmodus Ein:  set KWL request-Test-Modus-Ein
Testmodus Aus: set KWL request-Test-Modus-Aus
Bypass-Klappe öffnen: set KWL Bypass offen
Bypass-Klappe schliessen: set KWL Bypass geschlossen

Die weitere Logik in FHEM könnte dann so aussehen:

Wenn es im jeweiligen Raum zu warm wird und die Zehnder-Logik noch nicht auf Sommerbypass umgeschaltet hat, kann
man jetzt in den Testmodus wechseln, die Bypass-Klappe öffnen und eine Temperaturabsenkung abwarten. Dann wieder die
Bypass-Klappe schliessen und den Testmodus verlassen.

Im Testmodus ist die Lüftungsstufe nicht schaltber, so dass man sich vorher entscheiden muss. Vermutlich sowieso dann
Stufe 3 und anschliessend "lüften".

Noch einen Nachtrag:

Was bedeutet / wofür steht hier "x03" ?
set => "0009:%02x03", }]}, # Byte 2 als 03 angenommen.

Kann die Bestätigung Beginn/Ende Testmodus abgefragt werden ? d.h., kann man die Antwort der ComfoAir irgendwo abfangen ?
Es gibt lt. Protokoll keine Statusabfrage, ob sich das Gerät im Testmodus befindet, lediglich eine Anzeige am Gerät selbst mittels "t"
0x00 0x1A  Bestätigung Ende Testmodus

StefanStrobel

Hallo,

Der Befehl zum Setzen der Klappen sendet immer zwei Bytes. Das erste für den Bypass, das zweite für die Vorheizung. So zumindest interpretiere ich die Protokollspezifikation.

Wenn man es vollständig implementieren wollte, müsste man immer beim Set beide Werte angeben und zwei Bytes kodieren...

Was den Status / Testmodus angeht, so setzt das Modul bisher nur Readings wenn die Lüftung auch Werte sendet. Im Fall des Testmodus müsste man das Modul so erweitern, dass es sich den Zustand selbst merkt.

Gruß
    Stefan

RainerS

Wie können die Änderungen ins nächste Update einfliessen ? Habe gerade gemerkt, dass meine durch ein Update von FHEM überschrieben wurden ...

Diese Änderungen sind zum Ansteuern des Bypass erforderlich:
"0002"  =>  { unpack   => "C",
                  name     => "Test-Modus-Ein",
                  request => "0001",
                      },
                               
"001A"  =>  { unpack   => "C",
                  name     => "Test-Modus-Aus",
                  request => "0019",
                      },

"FF09"  =>  { unpack   => "C",   
                  name     => "Klappen setzen",     
                  readings => [ { name => "Bypass",
                                  map => "1:offen, 0:geschlossen, 3:stop",
                                  set => "0009:%02x03", }]},

StefanStrobel


RitterSport

Anfängerfrage mal in die Runde:

Ich möchte auch meine CA350 in FHEM anbinden, da ich eine CC Ease habe erstmal nur lesend.
Kann ich nicht die Anbindung/Anschlüße der CC Ease nehmen? Also parallel?

RitterSport

Ich hatte meine Fragen schon im Unterforum Einplatinencomputer gestellt, aber ich glaube sie passt hier besser.

Um meine ComfoAir 350 in Fhem einzubinden habe ich folgenden Adapter gekauft: http://www.amazon.de/USB-TTL-Konverter-Modul-mit-eingebautem-CP2102/dp/B008RF73CS/ref=cm_cr_arp_d_product_top?ie=UTF8

Eingebunden in Fhem mit  /dev/ttyUSB0@9600
Wird wohl dort erkannt, STATE wechselt auf opened. Wenn ich USB1 nehme dann bleibt es bei disconnected.

RX,TX und Ground von der abgeklemmten CCEase Einheit genommen, Kabelfehler schliesse ich aus.
RX und TX auch schon vertauscht.
Eine Kommunikation findet aber nicht statt. Bei Verbose 5 finde ich folgendes:
2016.04.06 22:24:34 5: ComfoAir350: handle send queue
2016.04.06 22:24:34 5: ComfoAir350: send busy, delay writing from queue
2016.04.06 22:24:35 4: WEB_192.168.0.10_55318 POST /fhem?detail=ComfoAir350&dev.getComfoAir350=ComfoAir350&cmd.getComfoAir350=get&arg.getComfoAir350=Stufe&val.getComfoAir350=&XHR=1&addLinks=1&fw_id=130; BUFLEN:0
2016.04.06 22:24:35 5: Cmd: >get ComfoAir350 Stufe<
2016.04.06 22:24:35 3: ComfoAir350: Request found in getHash created from parseInfo data
2016.04.06 22:24:35 4: ComfoAir350: send adds frame to queue with cmd 00cd (get Ventilation-Levels) / frame 07f000cd007a070f
2016.04.06 22:24:35 5: ComfoAir350: send queue length : 2
2016.04.06 22:24:35 5: ComfoAir350: handle send queue
2016.04.06 22:24:35 5: ComfoAir350: send busy, delay writing from queue
2016.04.06 22:24:35 5: ComfoAir350: ReadAnswer called for get Stufe
2016.04.06 22:24:37 3: ComfoAir350: Timeout2 in ReadAnswer for Stufe
2016.04.06 22:24:37 4: name: /fhem?detail=ComfoAir350&dev.getComfoAir350=ComfoAir350&cmd.getComfoAir350=get&arg.getComfoAir350=Stufe&val.getComfoAir350=&XHR=1&addLinks=1&fw_id=130 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.04.06 22:24:37 3: ComfoAir350: timeout waiting for reply expecting 00ce Request was 07f000cd007a070f
2016.04.06 22:24:37 5: ComfoAir350: handle send queue
2016.04.06 22:24:37 4: ComfoAir350: handle queue sends get Ventilation-Levels code: 00cd frame: 07f000cd007a070f and wait for 00ce
2016.04.06 22:24:37 5: SW: 07f000cd007a070


Wer kann mir einen Tip geben?

StefanStrobel

Hallo RitterSport,

wenn Du nur lesend auf die Lüftung zugreifen möchtest, kannst Du Fhem parallel anschließen. Nur wenn Du auch Befehle schicken möchtest, sollte die externe Steuerung abgeklemmt werden, da es sonst zu Problemen kommen kann, wenn beide gleichzeitig Befehle schicken.

Ob Dein USB-Adapter hier funktioniert, kann ich nicht sagen. Ich verwende einen ganz normalen USB to Seriell Adaper.

Gruss
    Stefan

StefanStrobel

Hallo R2D2,

ich habe Deine Ergänzungen eingebaut und das aktualisierte Modul gerade eingecheckt.
Die Readings-Namen, die noch Umlaute enthalten haben, habe ich auch umbenannt.

Gruss
    Stefan

RitterSport

@ Stefan Strobel

Könntest du mir einen Link eines bis jetzt funktionierenden Adapters geben?
Nicht das es wirklich an meinem aktuellen Adapter liegt und der nächste von mir ausgesuchte geht dann auch wieder nicht.

Danke im vorraus

StefanStrobel

Hallo,

ich habe einen Mehrfach-Adapter (DA 70158).
Aber eigentlich sollte jeder ganz normale USB-RS232-Adapter funktionieren.

Gruss
    Stefan

RitterSport

Parallel zur CCEase konnte ich den Adapter nicht anschliessen, auch wenn beim Modul alles auf Poll 0 steht und kein Abfrageintervall definiert ist.
Nach kurzer Zeit bleibt Fhem dann stehen und ist auch nicht zu erreichen, dann hilft nur ein Reboot der Raspi.