NEWS
[Projekt] Comfoair CA350 - Adapter
-
Hallo grobalt. Sorry war beim falschlen Hacken/Kästchen.
Mit Auswählen der Stufe im dropdown von /control/Stufe und dem Hacken rechts davon sollte es klappen.Was dabei geschieht sieht man nur im debug-log (umstellen im Instanzen - Tab). Damit könnte ich dann möglicherweise auch mehr sagen.
Die Werte ausserhalb des control-channels kommen aber an?
Herzliche Grüsse forelleblau
-
Hi,
vielen lieben Dank für den Adapter. Ich nutze diesen nun seit Januar. Oder besser gesagt, seit Januar bekomme ich endlich die Werte im Broker angezeigt und ich kann auch Werte ändern.
Mit ist jetzt bei den Betriebsstunden der einzelnen Lüftungsstufen etwas aufgefallen. Dort haben wir eine Laufzeit von 22446 Stunden. Das kommt mit der Installation auch hin. Aber kurz darauf springt diese Stundenzahl auf 22272174 Stunden.
Diese Zahl bleibt sehr lange stehen. Refresht sich auch schön immer auf die große Zahl. Nur ab und zu kommt der richtige Wert.Was könnte hier falsch laufen?
-
Hallo. Welche Version hast du installiert? Falls noch nicht 1.1.3, bitte updaten.
Den Effekt hatte ich auch schon, bin aber nicht sicher wieso.
-
Danke für die schnelle Antwort.
Ich habe die Version 1.1.3 schon installiert.
Der Fehler ist in dieser Version vorhanden. -
@snowboarder2611 Ja, das hab ich fast befürchtet. Andere und ich auch haben diesen Effekt auch schon beobachtet. In der Version 1.1.3 habe ich einen möglichen Lösungsansatz versucht. Das Problem steckt in der Umrechnung der Werte aus mehreren Hex-Bytes (von der comfoair) in eine ganze Zahl, die manchmal funktioniert wie sie soll und manchmal nicht. Ich werde mir wohl mal ein Log-basteln müssen, dass mir die Input- und Outputwerte rausschreibt und ich dann so vergleichen kann, wann es funktioniert und wann nicht. Du siehst, die Lösung wird wohl einen Moment dauern.
Tauchen die falschen Werte bei allen Stundenzahlen auf (Filter, Stufen etc.) oder nur bei bestimmten?
Wenn ab und zu die richtige kommt, könnte es sein, dass das 'besondere' Werte sind? Runde 10er? immer der erste nach einem Neustart? ??
Falls jemand einen Ansatz sieht, der weiterhelfen könnte, nehme ich den gerne entgegen. -
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.