NEWS
Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus
-
@elektroniker86 Danke!
In der Parser-Config fehlt der Eintrag fürautoSetValue
. Das sollte eigentlich auftrue
oderfalse
gesetzt sein. Ist noch ein Bug im Adapter, den ich demnächst beheben werde.
Für deinen Fall musst du einfach dabei noch den Haken für "Zu setzender Wert" setzen, damit der jeweilige State im angegeben Intervall auftrue
gesetzt wird:
Dann sollten auch die Meldungen im Log verschwinden -
@crycode
Muss ich das bei allen Parsern machen ?Ich habe jetzt bei jedem abfragen Parser den ich benötige den Haken gesetzt.
Die Meldungen im log sind weg aber ich kann keine Werte mehr setzen.... -
@elektroniker86 Bei allen, wo du das automatische Wert Setzen aktiviert hast. Schließlich müssen die States ja auf
true
gesetzt werden für die Abfragen. -
@crycode
Die Meldungen im log sind weg aber ich kann keine Werte mehr setzen.... -
@elektroniker86 Bei den
*-set
Parsern darfst das automatische Wert Setzen nicht aktivieren, außer du willst das wirklich.
Nach jedem Setzen eines Wertes musst du den Wert neu abfragen, damit der aktuelle Wert in ioBroker übernommen wird.Falls das auch nicht hilft... wie viele Werte lässt du automatisch in welchem Intervall abfragen? Ist dein Bus oder die Steuerung der Wärmepumpe damit eventuell überlastet?
-
@crycode Das ist komisch das automatische abfragen hat aber bevor ich die haken gesetzt habe ja auch funktioniert.
-
@crycode
Ok, geht wieder hatte bei einem abfrage Parser bei Intervall eine 10 drin stehen... -
@crycode said in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Bei verdrillten Leitungen und der relativ geringen Baudrate darf die Leitung dann auch durchaus etwas länger sein.
Moin
tolles Projekt crycode!
So eine Daikin wird ziemlich wahrscheinlich auch bei uns einziehen, daher komme ich nochmal auf die Kabellänge zurück.
Beim Einsatz von S/FTP Kabeln, wie lange schätzt du darf man das Kabel denn hier machen?
Wären 10m oder gar 15m noch realistisch funktional?mfg STefan
-
@euro sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
Beim Einsatz von S/FTP Kabeln, wie lange schätzt du darf man das Kabel denn hier machen?
Wären 10m oder gar 15m noch realistisch funktional?Auf jeden Fall. Bei verdrillten und geschirmten Adernpaaren sind beim CAN-Bus mit 20 kbit/s bis zu 3,3 km Kabellänge möglich.
Ich habe den ersten Post mal um ein paar Infos dazu erweitert. -
perfekt, da sollte ich drunter bleiben
mein ioB läuft in einem Pi im Docker, durchreichen vom CAN HAT sollte doch genauso gehen wie für enocean stick und jeelink clone funktionieren, oder gibt es sonstige Tips?
mfg STefan
-
@euro Das CAN-Interface ist im System eine Netzwerkschnittstelle. Da hast du zwei Möglichkeiten, um das in den Docker-Container zu bekommen:
Option 1 - Host-Netzwerk im Container verwenden.
Mit dem Parameter
--network=host
beim Start des Docker-Containers, nutzt der Container das selbe Netzwerk wie der Host (dein Raspi). Inwiefern das bei dir Sinnvoll ist, musst du selbst entscheiden.Option 2 - Datenpakete vom can0 Interface per UDP an den Container leiten.
Eine Anleitung dazu habe ich hier geschrieben: https://crycode.de/socketcan-ueber-ethernet-mit-cannelloni
Die Anleitung nutzt zwei getrennte Rechner. Bei dir ist dann der eine Rechner dein Host und der zweite der Container. Hier sollte man noch dazu überlegen, wie man das sinnvoll in den Container einbaut, sodass das auch bei einem Neustart erhalten bleibt. -
Danke!
die option2 hab ich weiter oben schon gelesenioBroker läuft schon im Netzwerk Host Mode, alle anderen Container haben ein dediziertes bekommen.
Könnte dann evtl sogar recht einfach gehen -
@euro sagte in Rotex HPSU / Daikin Altherma Wärmepumpe über ioBroker.canbus:
ioBroker läuft schon im Netzwerk Host Mode
Dann solltest du sogar direkt im Container das can0 Interface zur Verfügung haben.
-
hab grad mal mit Daikin telefoniert
die neuen E Serien der Altherma die ab ~ April ausgeliefert werden, kommunizieren via modbus
d.h. das CAN Modul wird bei mir wohl eh nicht mehr funktionierenlassen wir uns mal überraschen
-
@euro Oh, das ist natürlich weniger schön... Aber gut zu wissen, danke für die Info!
Vom Modbus habe ich bislang überhaupt keine Ahnung, aber für gibt es zumindest auch einen Adapter: https://github.com/ioBroker/ioBroker.modbus
-
Moin,
ich bin nicht so der script pro, deshalb die Frage zu deinem Script ganz oben zum triggern der Abfragen.
Kann ich das so bei mir importieren oder muss ich es irgendwie auf meine Installation anpassen?
Und ist das Script für ein Wert oder reicht dieses um alle Datenpunkte zu überwachen?Vielen Dank im voraus für deine Rückmeldung!
-
@elektroniker86 Das Script kannst du so direkt übernehmen, ohne irgendwas anzupassen, solange der Adapter bei dir als
canbus.0
läuft.
Das Script erkennt dann automatisch bei allen States unter 680 mit-set
am Ende, wenn es eine Änderung gab und triggert 500ms später dem zugehörigen Abfrage-State an. Dadurch bekommst du dann die Rückmeldung für eine Änderungen direkt im ioBroker angezeigt. -
@crycode
Tip Top genau das wollte ich wissen.
DANKE! -
Hallo Kann mir von euch hier jemand bitte weiter helfen. Meine HPSU übernimmt den State Wert nämlich nicht -
Siehe unteren Link bzw. Code:
HPSU spricht nicht anvar timeout, memoryMODUS, timeout2; on({id: 'canbus.0.180.fa0a8c', change: "lt"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("canbus.0.180.fa0a8c").val == false) { (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); timeout = setTimeout(async function () { setState("javascript.0.jsState-SWING-Timer"/*jsState-SWING-Timer*/, 1, true); }, 140000); } }); on({id: 'javascript.0.jsState-SWING-Timer', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.jsState-SWING-Timer").val == 1 && getState("canbus.0.180.02").val > 0) { memoryMODUS = getState("canbus.0.180.fa0112").val; setStateDelayed("canbus.0.680.fa0112-set"/*Modus setzen*/, 1, 1000, true); setStateDelayed("canbus.0.680.fa0112-set"/*Modus setzen*/, memoryMODUS, 4000, true); } }); on({id: 'javascript.0.jsState-SWING-Timer', change: "any"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.jsState-SWING-Timer").val == 1) { (function () {if (timeout2) {clearTimeout(timeout2); timeout2 = null;}})(); timeout2 = setTimeout(async function () { setState("javascript.0.jsState-SWING-Timer"/*jsState-SWING-Timer*/, 0, true); }, 35000); } });
-
@andy999 Wird denn von deinem Script der Wert von
canbus.0.680.fa0112-set
gesetzt, wenn du es im Admin unter Objekte beobachtest? Wenn ja, wäre die Frage ob mitack: false
oderack: true
. Um das genau zu sehen kannst du mal folgendes in deinem Script hinzufügen. Das erstellt bei jeder Änderung des States einen Logeintrag:on({ id: 'canbus.0.680.fa0112-set', change: 'any' }, (obj) => { log(`${obj.id} changed => val: ${obj.state.val} ack: ${obj.state.ack}`); });
Im Idealfall solltest du damit immer zwei Logeinträge kurz hintereinander sehen. Einen mit
ack: false
(von deiner Aktion) und dann einen mitack: true
(Bestätigung vom Adapter).