NEWS
[Projekt] Comfoair CA350 - Adapter
-
Hi,
Ich habe mal einen Ausschnitt meiner Historie als Bilder. Die Namen der Datenobjekte stehen jeweils oben. Das sind die, bei denen der Fehler bei mir auftritt. Einige Werte haben sich nicht erhöht, da die Lüftung nicht in dieser Betriebsart gelaufen ist.
-
Danke vielmal! Es wird also der selbe Wert einmal so und einmal so dargestellt. Eine Erhöhung um 1 ist auf beiden Levels eine Erhöhung um 1.
Aber ansonsten ist es zufällig, wann welcher Wert kommt. -
Bei den PIN Belegungen lese ich immer 2, 3 und 5 was ja dem seriellen Standard entspricht. Die 12V Versorgung gibt es vermutlich nur auf dem RJ45? Wenn ich direkt auf den 9-poligen seriellen Anschluss gehe, dann liegen da auf Pin 1 auch 12V an?
-
@claus hallo claus. Kann ich dir so nicht sagen, das müsstest du messen. Ich greife 12v direkt auf der Klemmleiste der comfair ab. Gruss Forelleblau
-
@forelleblau
Funktioniert super, auf Anhieb. Das Einzige, was ich nicht finden konnte, ist Bypassbetrieb ja oder nein.Außerdem zeigt der Enthalpie Sensor -20°C an, was sicher nicht stimmt. Die restlichen Werte sehen recht gut und auch korrekt aus.
-
@claus Hallo claus. Den Bypassbetrieb gibt es nicht, der Bypass kann nicht direkt angesteuert werden - hab jedenfalls noch nicht rausgefunden wie. Den müsstest du über ein extremes Setzen der Komforttemperatur übersteuern.
Hast du denn überhaupt einen Enthalpie-Tauscher? Wenn die anderen Werte 0 sind, dann wohl keinen
Danke für die Rückmeldung.
Grüsse
Forelleblau -
@forelleblau
Ich hätte den Bypass nur gerne ausgelesen, im Log finde ich folgende Meldung ...State "comfoair.0.status.bypass" has no existing object, this might lead to an error in future versions
Einen Enthalpietauscher habe ich zumindest gekauft
Warum da nun keine Werte rauskommen, weiß ich auch nicht genau.Ergänzung, der bypass ist jetzt da und auch viele andere Objekte, das dauerte wohl nur etwas. Ich warte jetzt mal etwas ab und schau was so weiter passiert.
-
Ich habe es mir jetzt nochmal im PC Tool angesehen. Es gibt ja einen Parameter "P97 - Enthalpietauscher aktiv?" , der kann drei Werte enthalten.
Anwesend
Abwesend
Ohne FühlerBei mir war "Ohne Fühler" eingestellt. Ob man die nachrüsten kann, muss ich mal bei Zehnder anfragen. Sonst scheint nun alles zu funktionieren, super Adapter, danke dafür!
-
@claus Danke für die Info, freut mich, wenn der Adapter dient.
-
Eine Sache habe ich beim Testen gefunden. Wenn man Stosslüftung aktiviert, dann läuft diese auch korrekt an, beendet sich auch nach der eingestellten Zeit wieder. Allerdings setzt sich nach Ablauf der Zeit "comfoair.0.control.boost" nicht mehr auf false zurück.
-
@claus Danke für den umfangreichen Test. Ich schau das der boost-Trigger mit der nächsten Version zurückgestellt wird.
Grüsse forelleblau
-
Ich hatte noch folgende Meldungen im Log.
State value to set for "comfoair.0.status.filterw" has to be type "number" but received type "string"
Es scheint so, als fehlte da ein parseInt.
--- main.js.orig 2022-08-09 11:49:50.658543470 +0200 +++ main.js 2022-09-18 14:05:38.868928589 +0200 @@ -912,7 +916,8 @@ case 202: //polling verzoegerungen = buffarr; - adapter.setState("status.filterw", buffarr[11], true); + adapter.setState("status.filterw", parseInt(buffarr[11]), true); break;
-
Erster Versuch, sei umsichtig, das sind meine ersten Codeänderungen bei ioBroker
Manchmal führt er bei Aktivierung von Boost aber das Kommandocallcomfoair(setfanstate[3]);
nicht aus. Ich vermute, es gibt da Kollisionen im Parallelmodus.
--- main.js.orig 2022-08-09 11:49:50.658543470 +0200 +++ main.js 2022-09-18 15:41:51.458462775 +0200 @@ -92,7 +92,7 @@ clearInterval(polling); clearTimeout(polling); clearTimeout(pcmaster); - clearTimeout(boostrun); + clearBoostTimeout(); client.destroy(); adapter.log.info('[END] Stopping comfoair adapter...'); adapter.setState('info.connection', false, true); @@ -440,7 +440,7 @@ case "control.stufe": adapter.log.debug("Setzte Stufe: " + state); callcomfoair(setfanstate[state]); - clearTimeout(boostrun); + clearBoostTimeout() break; case "control.comforttemp": @@ -510,8 +510,12 @@ break; case "control.boost": - adapter.log.debug("Starte boost"); - boost(); + if (state == true) { + adapter.log.debug("Starte boost"); + boost(); + } else { + clearBoostTimeout(); + } break; @@ -1593,7 +1597,7 @@ adapter.getState('control.boosttime', function(err, state) { if (state) { adapter.log.debug("Starte Boostmodus für " + state.val + " Minuten, kehre danach auf Stufe " + boostlevelold + " zurück"); - callcomfoair(setfanstate[3]);; + callcomfoair(setfanstate[3]); boostrun = setTimeout(function() { adapter.log.debug("Boost Ende"); adapter.setState('control.stufe', boostlevelold, false); @@ -1607,6 +1611,16 @@ } //end function boost +function clearBoostTimeout() { + adapter.log.debug("boostrun Timeout zurückgesetzt") + clearTimeout(boostrun); + adapter.getState('control.boost', function (err, state) { + if (state.val == true) { + adapter.setState('control.boost', false, false); + } + }); +} //end function clearBoostTimeout + function restartAdapter() { adapter.getForeignObject('system.adapter.' + adapter.namespace, (err, obj) => { if (obj) adapter.setForeignObject('system.adapter.' + adapter.namespace, obj);
-
@claus Danke für den Vorschlag, claus.
Die Risiken des Parallelmodus hab ich beschrieben....das überlasse ich dir.Deinen Lösungsvorschlag könnte das ganze stabiler machen. Könntest du mir den als PR auf Github senden?
Danke u herzliche Grüsse
Forelleblau
-
Im Prinzip fehlt mir noch eine Funktion, ich weiß aber nicht genau, wie man die exakt implementiert. Man könnte z.B. den Boost früher manuell abbrechen, indem man den wieder abschaltet. Dann reicht es aber nicht aus, einfach den Timer zu löschen, sondern man müsste diesen forciert ausführen, damit die Stufe der Lüftung wieder auf den Ursprungswert zurückgesetzt wird. Mir ist allerdings unklar, wie man beispielsweise bei einem setTimeout den Timer auf 0 setzen kann, damit die Funktion sofort ausgeführt wird.
-
@claus Danke für den PR. Kurze Frage vor dem Merge: hast du die Anpassungen auf deinem System bereits so umgesetzt und getestet? Grüsse forelleblau
-
Ja, das ist umgesetzt und im Einsatz. Ich habe einen Fehler beim Pull Request gesehen, habe aber keine weiteren Details dazu finden können. Das Logfile ist wohl nicht Public.
-
Hallo,
ich habe eine ComfoD 350 mit einem 3 Stufenschalter und der Steuerung direkt am Gerät.So wie ich es gesehen habe, hat meine Platine auch eine RS232 Schnittstelle in Form eine RJ45 Buchse.
Würde jetzt einen
https://www.amazon.de/U-S-R-USR-TCP232-302-Kleines-serielles-Ethernet/dp/B07RNCVHHK
und dieses Kabel kaufen
https://www.amazon.de/dp/B01M9COPMA/ref=emc_b_5_mob_t
Vom Kabel würde ich den RJ45 Stecker abmachen und neu belegen.Funktioniert das dann. Was passiert mit dem 3 Stufenschalter? Der ist ganz normal an L1 L2 und L3 und N angeschlossen.
Danke schon mal
-
@odolino100 Hallo Odolino
Sorry, aber von Ferne was zuzusichern ist etwas schwierig. Grundsätzlich könnte das Funkionieren. Ev. ist es einfacher, wenn du die RS232 - Seite vom Kabel mit sowas ersetzt:
Ich hab mein Kabel damit gemacht, das macht es einfacher, TX und RX mal zu tauschen, und mal nur TX, RX und GND zu verbinden (2, 3 und 5). Einige User hatten auch schon Probleme mit vollständigen seriellen Kabeln.
Wie der Adapter neben einem Stufenschalter funktioniert, kann ich dir nicht sagen. Mit dem Schalter wird nichts passieren ;-). Musst halt ausprobieren.
Grüsse Forelleblau
-
Danke erstmal, super Sache!
Ich versuche es bei einer Comfoair 160.
Die hat einen CC ease Anschluss mit gnd, rx, tx, 12v.
Gnd, Rx, Tx habe ich auf ein seriell-USB Kabel gehängt.
Daten zu empfangen hat dann auch prompt funktioniert. Nur leider mag die Anlage gar nicht gehorchen wenn ich die Lüftungsstärke verstelle. Etwas herum gesteckt habe ich schon, aber viele sinnvolle Möglichkeiten gibt es ja nicht.Hat jemand einen Tipp?