NEWS
Viessmann-Adapter
-
Hallo Zusammen,
hat das alles was hier geschrieben wurde noch mal jemand (evtl. in einem anderen Threat) als HowTo so zusammengefasst, dass es auch jemand mit wenig Erfahrung Schritt für Schritt umsetzen kann? Wäre sehr klasse. Also ich habe halt den Optolink via WLAN direkt in meinem Netz daheim. Und irgendwie weiß ich jetzt doch nicht was ich machen muss. Wenn ich hier nur falsch bin, verziehe ich mich auch sofort wieder und entschuldige mich. Aber fündig geworden bin ich trotz Suche bisher nicht.
Gruß
Markus `
Hallo,
Die hier beschriebenen Sachen sind vermutlich eine andere als du sie benutzt. Du benutzt anscheinend das originale von Viessmann vertriebene Modul mit dem man seine Heizungsanlage und die viessmann App steuern kann. Mir ist momentan keine Lösung bekannt, um damit eine Schnittstelle mit iobroker herzustellen.
Die hier beschriebenen Variante ist eine wo man zusätzlich einen Rechner braucht, worauf das Programm vcontrold läuft. Infos findest du hier
-
Wäre schön, wenn Bluefox den Adapter "offiziell" machen würde. Er läuft bei mir seit Wochen absolut zuverlässig. Woran hapert es?
Gruß,
Thorsten
-
Hallo Leute,
ich habe den Adapter vom Github installiert https://github.com/misanorot/iobroker.viessmann
Installation und Einrichtung auch ohne Probleme. Nur bekomme ich im Log folgenden Eintrag:
error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module)
Auf der Vcontrold läuft lokal auf dem selben PI. Ist per Telnet erreichbar:
root@raspberrypi:~# service vcontrol status [ ok ] vcontrold is running. root@raspberrypi:~# telnet localhost 3002 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. vctrld>getTempWWist 69.300003 Grad Celsius vctrld>
Einstellung (vito.xml) ging auch ohne Probleme:
ID der Anlage: 2098
Name der Anlage: V200KW2
Verwendetes Protokoll: KW2
Fehlt noch etwas?
-
@Pep:error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module) ```` `
Hi,
Ich habe zwar den Adapter geschrieben, aber dies sind meine ersten Gehversuche….
Wie geht die Fehlermeldung weiter? Der Adapter benötigt das NPM Modul net-socket.
Ich dachte aber das installiert sich selbst mit :roll:
Welche node Version benutzt du?
EDIT: In der Version 0.2.4 war auch ein kleiner Fehler drin, also bitte 0.2.5 installieren
-
@Pep:error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module) ```` `
Kann es sein, dass in der package.json
"dependencies": { "net-socket": "^1.1.0" },
das net-socket dazwischen funkt? So wie es es sehe wird net-socket gar nicht verwendet und net selber ist ja schon Bestandteil von node.js
-
Kann es sein, dass in der package.json
das net-socket dazwischen funkt? `
Bin zwar absoluter newbee, aber warum sollte der broker meckern wenn man ein Modul lädt, aber nicht benutzt :?
@Sineos:So wie es es sehe wird net-socket gar nicht verwendet und net selber ist ja schon Bestandteil von node.js `
Danke für die Anmerkung! Kann ich dependencies dann komplett aus der package.json löschen?
Oder bloß das Modul austragen?
-
@Pep:error instance system.adapter.viessmann.0 terminated with code 8 (node.js: Cannot find module) ```` `
Hi,
Ich habe zwar den Adapter geschrieben, aber dies sind meine ersten Gehversuche….
Wie geht die Fehlermeldung weiter? Der Adapter benötigt das NPM Modul net-socket.
Ich dachte aber das installiert sich selbst mit :roll:
Welche node Version benutzt du?
EDIT: In der Version 0.2.4 war auch ein kleiner Fehler drin, also bitte 0.2.5 installieren `
Ok danke, mit der 0.2.5 läuft es jetzt, nur wird meine vito.xml nicht mehr Importiert – es kommt immer: Einlesen FEHLGESCHLAGEN!!!JSON Konverter wird natürlich genutzt.
Als Beispiel:
{ "vito": { "devices": { "device": [ { "-ID": "2098", "-name": "V200KW2", "-protocol": "KW2" }, { "-ID": "2053", "-name": "GWG_VBEM", "-protocol": "GWG" } ] }, "commands": { "command": [ { "-name": "getTempA", "-protocmd": "getaddr", "addr": "0800", "len": "2", "unit": "UT", "error": "05 05", "description": "Ermittle die Aussentemeratur in Grad C", "device": { "-ID": "2053", "addr": "6F", "unit": "UT1", "len": "1" } }, { "-name": "getTempWWist", "-protocmd": "getaddr", "addr": "0804", "len": "2", "unit": "UT", "error": "05 05", "description": "Ermittle die Warmwassertemperatur in Grad C", "device": { "-ID": "2053", "addr": "42", "unit": "UT1U", "len": "1" } }, { "-name": "getTempWWsoll", "-protocmd": "getaddr", "addr": "6300", "len": "1", "unit": "ST", "description": "Ermittle die Warmwassersolltemperatur in Grad C", "device": { "-ID": "2053", "addr": "5C", "unit": "UT1", "len": "1" } } ] } } }
Dieser Import führt zu einem Fehler
-
Na, ich bin auch nur nen Hobby-Rum-Script-JS-Bastler :lol:
Nachdem das package m.E. nicht gebraucht wird, das dependencies Element in package.json einfach leer lassen. Wie ich es sehe hat der Adapter keine externen Abhängigkeiten
-
@Pep:JSON Konverter wird natürlich genutzt.
Als Beispiel:
{ "vito": { "devices": { "device": [ { "-ID": "2098", "-name": "V200KW2", "-protocol": "KW2" }, { "-ID": "2053", "-name": "GWG_VBEM", "-protocol": "GWG" } ] }, "commands": { "command": [ { "-name": "getTempA", "-protocmd": "getaddr", "addr": "0800", "len": "2", "unit": "UT", "error": "05 05", "description": "Ermittle die Aussentemeratur in Grad C", "device": { "-ID": "2053", "addr": "6F", "unit": "UT1", "len": "1" } }, { "-name": "getTempWWist", "-protocmd": "getaddr", "addr": "0804", "len": "2", "unit": "UT", "error": "05 05", "description": "Ermittle die Warmwassertemperatur in Grad C", "device": { "-ID": "2053", "addr": "42", "unit": "UT1U", "len": "1" } }, { "-name": "getTempWWsoll", "-protocmd": "getaddr", "addr": "6300", "len": "1", "unit": "ST", "description": "Ermittle die Warmwassersolltemperatur in Grad C", "device": { "-ID": "2053", "addr": "5C", "unit": "UT1", "len": "1" } } ] } } }
Dieser Import führt zu einem Fehler
`
Bitte lösche unter device das nicht verwendete Gerät.
Z.b.
{ "-ID": "2053", "-name": "GWG_VBEM", "-protocol": "GWG" }
-
@Pep:{ "vito": { "devices": { "device": [ { "-ID": "2098", "-name": "V200KW2", "-protocol": "KW2" }, { "-ID": "2053", "-name": "GWG_VBEM", "-protocol": "GWG" } ] }, ```` `
Der Kopf hier sieht für mich komisch aus. Hier sind zwei unterschiedliche Devices eingetragen, sogar mit unterschiedlichen Protokollen. Kann eigentlich fast nicht sein. Funktioniert die xml in vcontrold?
Edit:
Ups, zu langsam :mrgreen:
-
@Pep:JSON Konverter wird natürlich genutzt.
Als Beispiel:
{ "vito": { "devices": { "device": [ { "-ID": "2098", "-name": "V200KW2", "-protocol": "KW2" }, { "-ID": "2053", "-name": "GWG_VBEM", "-protocol": "GWG" } ] }, "commands": { "command": [ { "-name": "getTempA", "-protocmd": "getaddr", "addr": "0800", "len": "2", "unit": "UT", "error": "05 05", "description": "Ermittle die Aussentemeratur in Grad C", "device": { "-ID": "2053", "addr": "6F", "unit": "UT1", "len": "1" } }, { "-name": "getTempWWist", "-protocmd": "getaddr", "addr": "0804", "len": "2", "unit": "UT", "error": "05 05", "description": "Ermittle die Warmwassertemperatur in Grad C", "device": { "-ID": "2053", "addr": "42", "unit": "UT1U", "len": "1" } }, { "-name": "getTempWWsoll", "-protocmd": "getaddr", "addr": "6300", "len": "1", "unit": "ST", "description": "Ermittle die Warmwassersolltemperatur in Grad C", "device": { "-ID": "2053", "addr": "5C", "unit": "UT1", "len": "1" } } ] } } }
Dieser Import führt zu einem Fehler
`
Bitte lösche unter device das nicht verwendete Gerät.
Z.b.
{ "-ID": "2053", "-name": "GWG_VBEM", "-protocol": "GWG" } ```` `
OK Super. damit bin ich jetzt einen Schritt wieder weiter gekommen.
Im Log taucht jetzt folgendes auf:
viessmann.0 2017-02-19 19:11:18.760 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 19:11:17.717 warn vctrld> viessmann.0 2017-02-19 19:11:17.717 warn Vctrld send ERROR: vctrld>ERR: command unknown viessmann.0 2017-02-19 19:11:17.613 info starting. Version 0.2.5 in /opt/iobroker/node_modules/iobroker.viessmann, node: v0.10.22 host.raspberrypi 2017-02-19 19:11:15.500 info instance system.adapter.viessmann.0 started with pid 4303 host.raspberrypi 2017-02-19 19:11:13.114 info instance system.adapter.viessmann.0 terminated with code 0 (OK) viessmann.0 2017-02-19 19:11:12.999 info terminating host.raspberrypi 2017-02-19 19:11:12.974 info stopInstance system.adapter.viessmann.0 killing pid 7725 host.raspberrypi 2017-02-19 19:11:12.974 info stopInstance system.adapter.viessmann.0 viessmann.0 2017-02-19 19:11:12.980 info cleaned everything up... host.raspberrypi 2017-02-19 19:11:12.973 info object change system.adapter.viessmann.0
Ein telnet und ein vclient funktionieren aber:
root@raspberrypi:~# telnet 192.168.178.10 3002 Trying 192.168.178.10... Connected to 192.168.178.10. Escape character is '^]'. vctrld>quit good bye! Connection closed by foreign host. root@raspberrypi:~# vclient -h 127.0.0.1:3002 -c getTempWWist getTempWWist: 70.599998 Grad Celsius root@raspberrypi:~#
Was läuft da noch falsch
Ps.: Danke für die Hilfe bis jetzt - echt super von euch.
-
Wie sieht deine Konfiseite (Reiter Abfragewerte) nach dem einlesen der JSON aus? Bitte Screenshoot
-
Wie sieht deine Konfiseite (Reiter Abfragewerte) nach dem einlesen der JSON aus? Bitte Screenshoot `
Und im Log steht es wie folgt
viessmann.0 2017-02-19 19:11:18.760 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 19:11:17.717 warn vctrld> viessmann.0 2017-02-19 19:11:17.717 warn Vctrld send ERROR: vctrld>ERR: command unknown viessmann.0 2017-02-19 19:11:17.613 info starting. Version 0.2.5 in /opt/iobroker/node_modules/iobroker.viessmann, node: v0.10.22 viessmann.0 2017-02-19 19:11:12.999 info terminating viessmann.0 2017-02-19 19:11:12.980 info cleaned everything up... viessmann.0 2017-02-19 06:16:17.772 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 06:16:17.691 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 06:16:17.584 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 06:16:17.467 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 06:16:16.962 warn Malfunction connection viessmann.0 2017-02-19 06:16:16.961 warn Malfunction connection viessmann.0 2017-02-19 06:16:16.960 warn Malfunction connection viessmann.0 2017-02-19 06:16:16.958 warn Malfunction connection viessmann.0 2017-02-19 06:16:16.957 warn Malfunction connection viessmann.0 2017-02-19 06:16:16.955 warn Malfunction connection viessmann.0 2017-02-19 06:16:16.953 warn Malfunction connection viessmann.0 2017-02-19 06:16:16.951 warn Malfunction connection viessmann.0 2017-02-19 06:15:07.576 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 06:15:07.381 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."} viessmann.0 2017-02-19 06:15:06.931 warn vctrld> viessmann.0 2017-02-19 06:15:06.931 warn Vctrld send ERROR: ERR: command unknown viessmann.0 2017-02-19 06:15:06.930 warn vctrld> viessmann.0 2017-02-19 06:15:06.930 warn Vctrld send ERROR: ERR: command unknown viessmann.0 2017-02-19 06:15:06.929 warn vctrld> viessmann.0 2017-02-19 06:15:06.929 warn Vctrld send ERROR: ERR: command unknown viessmann.0 2017-02-19 06:15:06.927 warn vctrld> viessmann.0 2017-02-19 06:15:06.927 warn Vctrld send ERROR: ERR: command unknown viessmann.0 2017-02-19 06:15:06.892 warn vctrld> viessmann.0 2017-02-19 06:15:06.892 warn Vctrld send ERROR: vctrld>ERR: command unknown viessmann.0 2017-02-19 06:15:06.891 warn vctrld> viessmann.0 2017-02-19 06:15:06.891 warn Vctrld send ERROR: vctrld>ERR: command unknown viessmann.0 2017-02-19 06:15:06.890 warn vctrld> viessmann.0 2017-02-19 06:15:06.890 warn Vctrld send ERROR: vctrld>ERR: command unknown viessmann.0 2017-02-19 06:15:06.889 warn vctrld> viessmann.0 2017-02-19 06:15:06.889 warn Vctrld send ERROR: vctrld>ERR: command unknown viessmann.0 2017-02-19 06:13:57.092 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."}
-
Kannst du bitte noch ein Screenshot von den angelegten Objekten machen? (Im Admin Reiter Objekte)
-
Kannst du bitte noch ein Screenshot von den angelegten Objekten machen? (Im Admin Reiter Objekte) `
klar. Jetzt sehe ich da sogar Werte:
Im Log finde ich aber immer noch die Einträge. Egal - laut History läuft es aber.
Würde also erstmal sagen, dass alles (ausser die Logs) läuft
-
Hi,
Hast zwar Werte, aber so haut das nicht hin.
Ich weiß momentan noch nicht mit dem anzufangen.
viessmann.0 2017-02-19 06:13:57.092 warn No states found for {"type":"state","common":{"name":"","desc":"Testabfrage, Adresse eingeben"},"native":{},"_id":"viessmann.0.get."}
Könntest du die Instanz in den debug Modus stellen, und dann die Ausgabe posten.
Edit:
Bitte lösche folgendes aus deiner Vito.
<command name="get" protocmd="gettestaddr"></command> <description>Testabfrage, Adresse eingeben</description> <device id="2053"><addr>dummy</addr> <len>1</len></device>
Falls du das brauchst, nenne es um. Get sollte nicht alleine stehen. Ich werde das in der nächsten Version abfangen.
__****Nochmals EDIT:
bitte installiere den Adapter nochmal (ich habe keine neue Version gemacht), das Kommando aus deiner Vito wird sollte jetzt ignoriert werden.****__
-
Vielleicht läuft auch einfach nur noch irgendwo eine weitere Instanz von vctrld>. In dem Fall funktioniert die Abfrage der weiteren Instanz nämlich nicht. Auch der vclient würde dann geblockt werden.
Nur so eine Idee.
Bei mir läuft die 0.2.5 soweit übrigens einwandfrei.
Gruß,
Thorsten
-
Hab da noch mal eine kleine Frage.
Ich möchte gerne die Systemzeit meiner VScotHO1 per ioBroker setzen (das Ding geht leider nach einigen Wochen immer gerne etwas nach).
Hier im https://openv.wikispaces.com/share/view/66158564?replyId=78334294 habe ich dazu folgendes gelesen:
` > Ich habe eine Vitodens 200-W WB2C und das setzen der Zeit in der Heizung habe ich über ein Shellscript realisiert mit folgendem Inhalt:
export Startzeit=
date "+20 %g %m %d 0%u %H %M %S"
export file=/var/log/vitoSetTime
echo getSystemTime >$file
echo unit off >>$file
echo setSystemTime $Startzeit >>$file
echo unit on >>$file
#echo setSystemTime >>$file
#tail $file
/usr/local/bin/vclient -h localhost:3002 -f $file
/usr/local/bin/vclient -h localhost:3002 'getSystemTime'
…Vorher muss die Einheit deaktiviert werden (unit off) und die Systemzeit im 2er Häppchen übertragen werden (wie es im Post bei getSystemTime zu sehen ist). Zwischen Datum und Uhrzeit ist der Wochentag als Zahl. Diese wird beim setzen der Zeit nicht berücksichtigt, da die Heizung das vermutlich selbst umrechnet. Zum Schluss habe ich noch eine Kontrollausgabe eingebaut. Die Datei kann über einen CronJob z.B. 1x am Tag ausgeführt werden. `
Das würde ich nun gerne auch über ein Javascript in Verbindung mit dem Viessmann-Adapter und vis umsetzen. Hat jemand eine Idee?
Das http://forum.iobroker.net/viewtopic.php?f=21&t=4199&p=40139 für die Heizung, das Warmwasser und die Zirkulationspumpe über einen entsprechenden vis-View habe ich mittlerweile ganz passabel gelöst bekommen. Allerdings ist das zugehörige Javascript noch nicht optimal. Aber dazu an anderer Stelle mehr.
Gruß,
Thorsten
-
Der Adapter läuft soweit sehr gut bei mir.
Etwas irritierend ist jedoch, dass nach einem Neustart des Adapters oftmals zunächst die Datenpunkte mit den Werten falscher Adressen befüllt werden. Nach dem erneuten Auslesen der Adressen stimmt's dann aber. Ob das an vctrld oder am Optolink-Adapter liegt? Keine Ahnung. Ist ja auch nicht so tragisch, weil es - wie gesagt - nach dem zweiten Durchlauf wieder in Ordnung ist.
Was ich mir noch wünschen würde für den Adapter:
1. Ein weiterer Reiter mit einer vctrld-Konsole, so dass man dort direkt Befehle zum Testen eingeben kann. Im Moment muss man den Adapter immer erst anhalten, um in einer per PuTTY oder dergleichen geöffneten vctrld-Konsole Kommandos ausführen zu können. Zwei parallel geöffnete vctrld-Konsolen mag die Viessmann-Heizung offensichtlich nicht.
2. Bei manchen Setz-Befehlen (z.B. setSystemTime) ist ein vorheriges Ausschalten der Einheiten-Umwandlung mit dem Befehl "unit off" notwendig. Danach muss die Einheiten-Umwandlung mit "unit on" wieder eingeschaltet werden. Ich fände es toll, wenn man im Adapter für jeden get- und set-Befehl einen kleinen Schalter "unit on|off" setzen könnte. Steht der Schalter auf on, muss nichts weiter unternommen werden. Steht er auf off, wird vor dem eigentlichen get- bzw. set-Befehl zunächst die Einheiten-Umwandlung aus- und danach wieder eingeschaltet.
Ich weiß aber nicht, ob das mit vctrld funktioniert. Ich hatte damit so meine Probleme. Beim direkten Aufruf per vclient funktioniert es.
3. Schön fände ich auch, wenn man in der vctrld-Konsole (siehe Punkt 1) per Schalter den debug-Modus ein- und ausschalten könnte.
Leider bin ich, was die Adapter-Programmierung und Javascript angeht, ein ziemliches Greenhorn. Daher kann ich nur Wünsche äußern. 8-)
Bis dann,
Thorsten
-
Hallo,
ich bekomme den Adapter nicht mehr installiert, beim Installieren über die ioBroker Console kommt die Meldung:
$ ./iobroker add viessmann
ERROR: host.RBpi_Haupt Unknown packetName viessmann
ERROR: process exited with code 5
Auf der npm Website "https://www.npmjs.com/package/iobroker.viessmann" steht das das Modul nicht existiert.
jemand einen Vorschlag woran das liegt.