NEWS
Viessmann-Adapter
-
@bahnuhr sagte in Viessmann-Adapter:
habe V1.1.1 installiert.
nach timeout automatisch verbinden klappt.
Es bringt aber nichts.
Nach 3-4 Minuten kommt wieder timeout.viessmann.0 2019-08-17 08:12:12.739 info Connect with Viessmann sytem! viessmann.0 2019-08-17 08:12:02.727 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 08:12:02.727 error Timeout connection error! viessmann.0 2019-08-17 08:09:02.693 info Connect with Viessmann sytem! viessmann.0 2019-08-17 08:08:52.677 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 08:08:52.677 error Timeout connection error! viessmann.0 2019-08-17 08:05:52.647 info Connect with Viessmann sytem! viessmann.0 2019-08-17 08:05:42.640 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 08:05:42.640 error Timeout connection error! viessmann.0 2019-08-17 08:02:42.608 info Connect with Viessmann sytem! viessmann.0 2019-08-17 08:02:32.595 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 08:02:32.595 error Timeout connection error! viessmann.0 2019-08-17 07:59:32.565 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:59:22.549 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:59:22.549 error Timeout connection error! viessmann.0 2019-08-17 07:56:22.518 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:56:12.512 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:56:12.512 error Timeout connection error! viessmann.0 2019-08-17 07:53:12.482 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:53:02.475 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:53:02.475 error Timeout connection error! viessmann.0 2019-08-17 07:50:02.446 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:49:52.434 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:49:52.434 error Timeout connection error! viessmann.0 2019-08-17 07:46:52.401 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:46:42.386 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:46:42.386 error Timeout connection error! viessmann.0 2019-08-17 07:43:42.355 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:43:32.340 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:43:32.340 error Timeout connection error! viessmann.0 2019-08-17 07:40:32.314 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:40:22.313 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:40:22.313 error Timeout connection error! viessmann.0 2019-08-17 07:37:22.277 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:37:12.261 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:37:12.261 error Timeout connection error! viessmann.0 2019-08-17 07:34:12.246 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:34:02.228 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:34:02.228 error Timeout connection error! viessmann.0 2019-08-17 07:31:02.200 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:30:52.184 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:30:52.184 error Timeout connection error! viessmann.0 2019-08-17 07:27:52.166 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:27:42.150 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:27:42.150 error Timeout connection error! viessmann.0 2019-08-17 07:24:42.127 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:24:32.112 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:24:32.112 error Timeout connection error! viessmann.0 2019-08-17 07:21:32.088 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:21:22.073 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:21:22.073 error Timeout connection error! viessmann.0 2019-08-17 07:18:22.056 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:18:12.040 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:18:12.040 error Timeout connection error! viessmann.0 2019-08-17 07:15:12.010 info Connect with Viessmann sytem! viessmann.0 2019-08-17 07:15:02.007 info Connection with Viessmann system disconnected! viessmann.0 2019-08-17 07:15:02.007 error Timeout connection error!
Wenn ich nun den Raspi neu reboote und die Instanz neu starten und dann klappt es wieder.
Deshalb nochmal die Anforderung von mir:
Kann man dies einbauen in das Script.Danke.
Hier bockt dann aber aber dein raspi bzw. der dort drauf laufende vcontrold.
Für dein Fall wäre es Sinninger und einfacher einfach ein kleines Skript laufen zu lassen und dann dein Pi neu starten zu lassen. Falls du dabei Hilfe brauchst, einfach bescheid geben....
-
@blauholsten sagte in Viessmann-Adapter:
Für dein Fall wäre es Sinninger und einfacher einfach ein kleines Skript laufen zu lassen und dann dein Pi neu starten zu lassen. Falls du dabei Hilfe brauchst, einfach bescheid geben....
Ja, ich glaube ich brauche da Hilfe.
Denn dies habe ich schon mal versucht.
anbei mal meine Versuche:
// Wenn der Viessmann Adapter keine Daten mehr bekommt (Verbindung nicht geschlossen) dann force_reload beim raspi und Adapter nach 2 Min. neu starten /* Ablauf - PC wird neu gestartet oder Adapter ist nicht grün - nach 30 Sek. prüfen ob immer noch false - 3 Min. warten - Adapter ausschalten - Raspi force-reload durchführen - 2 Min. warten - Adapter starten - 1 Min. warten -> prüfen ob Adapter true ist -> wenn ja, dann Telegram "gestartet" wenn nein dann Telegram Nachricht "nicht erfolgreich" */ var logging = true; var idTest = ["system.adapter.viessmann.0.connected", "viessmann.0.info.connection"]; on({id: idTest, change: "ne", val: false, ack: true}, function(obj){ if (logging) log("Adapter ist false"); setTimeout(function() { // 30 Sek. warten if (getState("system.adapter.viessmann.0.connected").val === false || getState("viessmann.0.info.connection").val === false) { if (logging) log("nach 30 Sek. Adapter ist weiterhin false"); setTimeout(function() { // 3 Min. warten stopviessmann(); // Adapter gestoppt ! raspi(); // Raspi force-reload durchführen setTimeout(function() { // 2 Min. warten startviessmann(); // Adapter neu gestartet ! setTimeout(function() { // 1 Min. warten if (getState("system.adapter.viessmann.0.connected").val === true & getState("viessmann.0.info.connection").val === true) { log ('Viessmann war nicht mehr verbunden; Raspi und Adapter wurden neu gestartet!'); sendTo('telegram', {user: 'Dieter',text: "Viessmann war nicht mehr verbunden; Raspi und Adapter wurden neu gestartet!", parse_mode: 'HTML'}); } else { log ('Viessmann war nicht mehr verbunden; Raspi und Adapter konnten nicht neu gestartet werden!'); sendTo('telegram', {user: 'Dieter',text: "Viessmann war nicht mehr verbunden; Raspi und Adapter konnten nicht neu gestartet werden!", parse_mode: 'HTML'}); } }, 60000); // 1 Min. }, 120000); // 2 Min. }, 180000); // 3 Min. } else { if (logging) log("nach 30 Sek. Adapter ist true"); } }, 30000); // 30 Sek. }); function raspi() { const Client = require('ssh2').Client; //ssh2 muss vorher beim Adapter javascript eingebunden werden. var conn = new Client(); conn.on('ready', function() { conn.exec('sudo /etc/vcontrold/force_reload.sh', function(err, stream) { if (err) throw err; stream.on('close', function(code, signal) { conn.end(); }).on('data', function(data) { log('Ausgabe: ' + data); }).stderr.on('data', function(data) { log('Fehler: ' + data); }); }); }).connect({ host: '192.168.xxx.xx', // IP des RPi port: 22, username: 'xxx', password: 'xxx' }); } function stopviessmann() { var obj = getObject('system.adapter.viessmann.0'); obj.common.enabled = false; setObject('system.adapter.viessmann.0', obj); log ('Viessmann Adapter gestoppt!'); } function startviessmann() { var obj = getObject('system.adapter.viessmann.0'); obj.common.enabled = true; setObject('system.adapter.viessmann.0', obj); log ('Viessmann Adapter neu gestartet!'); } /* // alter on on({id: "viessmann.0.info.connection", change:"ne", val: false, ack: true}, function(obj){ log ('Viessmann war nicht mehr verbunden; Raspi und Adapter neu gestartet!'); raspi(); setTimeout(function() { setState('system.adapter.viessmann.0.alive', false); }, 60000); setTimeout(function() { if (getState('system.adapter.viessmann.0.alive').val === false) { setState('system.adapter.viessmann.0.alive', true); } }, 120000); }); */ /* // Werte holen mit ssh2 --------------------------------------------------- const Client = require('ssh2').Client; //ssh2 muss vorher beim Adapter javascript eingebunden werden. function raspi() { var conn = new Client(); conn.on('ready', function() { conn.exec('vclient -h 127.0.0.1:3002 -c getTempA', function(err, stream) { if (err) throw err; stream.on('close', function(code, signal) { conn.end(); }).on('data', function(data) { log('Ausgabe: ' + data); }).stderr.on('data', function(data) { log('Fehler: ' + data); }); }); }).connect({ host: '192.168.xxx.xx', // IP des RPi port: 22, username: 'xxx', password: 'xxx' }); } raspi(); //, getTempWWist, getTempWWsoll, getTempKist, getTempKsoll */
Das force-reload.sh auf dem raspi sah wie folgt aus:
# force-reload ausfuehren und Text an telegram curl -s -k "https://api.telegram.org/botabcde:xcyA-ExGV8/sendMessage" -d text="<b>Pi-Heizung: force-reload ausgefuehrt !</b>" -d chat_id=257abcde -d parse_mode=html sleep 3 sudo /etc/init.d/vcontrol force-reload
Fazit:
Meine Versuche haben immer irgendwo gehakt.
Was bräuchte ich:- connection steht nicht (entweder ist der Adapter gelb oder die Werte kommen eben nicht an)
- Intanz ausschalten
- nach x Sek. reboot bei dem raspi
- nach x Sek. Instanz wieder an.
mfg
Dieter -
Im Adapter kann ich ja konfigurieren, in welchen Abständen welche Daten abgefragt werden.
Welche Intervalle machen denn Sinn?
Bei Abgas und Wassertemperatur, Errorcodes sowie Brennerstarts? -
@bahnuhr sagte in Viessmann-Adapter:
@blauholsten sagte in Viessmann-Adapter:
Für dein Fall wäre es Sinninger und einfacher einfach ein kleines Skript laufen zu lassen und dann dein Pi neu starten zu lassen. Falls du dabei Hilfe brauchst, einfach bescheid geben....
Ja, ich glaube ich brauche da Hilfe.
Denn dies habe ich schon mal versucht.
anbei mal meine Versuche:
// Wenn der Viessmann Adapter keine Daten mehr bekommt (Verbindung nicht geschlossen) dann force_reload beim raspi und Adapter nach 2 Min. neu starten /* Ablauf - PC wird neu gestartet oder Adapter ist nicht grün - nach 30 Sek. prüfen ob immer noch false - 3 Min. warten - Adapter ausschalten - Raspi force-reload durchführen - 2 Min. warten - Adapter starten - 1 Min. warten -> prüfen ob Adapter true ist -> wenn ja, dann Telegram "gestartet" wenn nein dann Telegram Nachricht "nicht erfolgreich" */ var logging = true; var idTest = ["system.adapter.viessmann.0.connected", "viessmann.0.info.connection"]; on({id: idTest, change: "ne", val: false, ack: true}, function(obj){ if (logging) log("Adapter ist false"); setTimeout(function() { // 30 Sek. warten if (getState("system.adapter.viessmann.0.connected").val === false || getState("viessmann.0.info.connection").val === false) { if (logging) log("nach 30 Sek. Adapter ist weiterhin false"); setTimeout(function() { // 3 Min. warten stopviessmann(); // Adapter gestoppt ! raspi(); // Raspi force-reload durchführen setTimeout(function() { // 2 Min. warten startviessmann(); // Adapter neu gestartet ! setTimeout(function() { // 1 Min. warten if (getState("system.adapter.viessmann.0.connected").val === true & getState("viessmann.0.info.connection").val === true) { log ('Viessmann war nicht mehr verbunden; Raspi und Adapter wurden neu gestartet!'); sendTo('telegram', {user: 'Dieter',text: "Viessmann war nicht mehr verbunden; Raspi und Adapter wurden neu gestartet!", parse_mode: 'HTML'}); } else { log ('Viessmann war nicht mehr verbunden; Raspi und Adapter konnten nicht neu gestartet werden!'); sendTo('telegram', {user: 'Dieter',text: "Viessmann war nicht mehr verbunden; Raspi und Adapter konnten nicht neu gestartet werden!", parse_mode: 'HTML'}); } }, 60000); // 1 Min. }, 120000); // 2 Min. }, 180000); // 3 Min. } else { if (logging) log("nach 30 Sek. Adapter ist true"); } }, 30000); // 30 Sek. }); function raspi() { const Client = require('ssh2').Client; //ssh2 muss vorher beim Adapter javascript eingebunden werden. var conn = new Client(); conn.on('ready', function() { conn.exec('sudo /etc/vcontrold/force_reload.sh', function(err, stream) { if (err) throw err; stream.on('close', function(code, signal) { conn.end(); }).on('data', function(data) { log('Ausgabe: ' + data); }).stderr.on('data', function(data) { log('Fehler: ' + data); }); }); }).connect({ host: '192.168.xxx.xx', // IP des RPi port: 22, username: 'xxx', password: 'xxx' }); } function stopviessmann() { var obj = getObject('system.adapter.viessmann.0'); obj.common.enabled = false; setObject('system.adapter.viessmann.0', obj); log ('Viessmann Adapter gestoppt!'); } function startviessmann() { var obj = getObject('system.adapter.viessmann.0'); obj.common.enabled = true; setObject('system.adapter.viessmann.0', obj); log ('Viessmann Adapter neu gestartet!'); } /* // alter on on({id: "viessmann.0.info.connection", change:"ne", val: false, ack: true}, function(obj){ log ('Viessmann war nicht mehr verbunden; Raspi und Adapter neu gestartet!'); raspi(); setTimeout(function() { setState('system.adapter.viessmann.0.alive', false); }, 60000); setTimeout(function() { if (getState('system.adapter.viessmann.0.alive').val === false) { setState('system.adapter.viessmann.0.alive', true); } }, 120000); }); */ /* // Werte holen mit ssh2 --------------------------------------------------- const Client = require('ssh2').Client; //ssh2 muss vorher beim Adapter javascript eingebunden werden. function raspi() { var conn = new Client(); conn.on('ready', function() { conn.exec('vclient -h 127.0.0.1:3002 -c getTempA', function(err, stream) { if (err) throw err; stream.on('close', function(code, signal) { conn.end(); }).on('data', function(data) { log('Ausgabe: ' + data); }).stderr.on('data', function(data) { log('Fehler: ' + data); }); }); }).connect({ host: '192.168.xxx.xx', // IP des RPi port: 22, username: 'xxx', password: 'xxx' }); } raspi(); //, getTempWWist, getTempWWsoll, getTempKist, getTempKsoll */
Das force-reload.sh auf dem raspi sah wie folgt aus:
# force-reload ausfuehren und Text an telegram curl -s -k "https://api.telegram.org/botabcde:xcyA-ExGV8/sendMessage" -d text="<b>Pi-Heizung: force-reload ausgefuehrt !</b>" -d chat_id=257abcde -d parse_mode=html sleep 3 sudo /etc/init.d/vcontrol force-reload
Fazit:
Meine Versuche haben immer irgendwo gehakt.
Was bräuchte ich:- connection steht nicht (entweder ist der Adapter gelb oder die Werte kommen eben nicht an)
- Intanz ausschalten
- nach x Sek. reboot bei dem raspi
- nach x Sek. Instanz wieder an.
mfg
DieterHi,
Auf die schnelle vom Handy. Das mit dem Adapters stoppen usw. Kannst du dir schenken.
Mache folgendes.......
Stelle dein Skript so um, dass du nur auf den Connection Datenpunkt des Adapters triggerst. Sollte das passieren, lässt du bei
Wert false Zeit x (ich würde min 10m wählen)laufen, dann führst du einen Befehl aus der den Pi neu starten lässt. Bei true den timer wieder löschen. Mehr brauchst du eigentlich nicht zu machen. Bei weitere Hilfe einfach melden.... -
@martinschm das musst du ein wenig testen, allerdings sollte man relativ unwichtige Werte wie Brennerstarts und erros nicht zu klein wählen. Sowas Frage ich alle fünf Minuten ab. Temperaturen im Sekunden Bereich.
-
Übrigens, das Sortieren bzgl. des Abfrageintervalls klappt noch nicht so richtig. Ein Sortieren nach Name und Beschreibung funktioniert dagegen.
Würde mir noch wünschen, dass man für die Abfrageintervalle einzelne Abfragepunkte markieren kann, um dann für diese einheitlich das Abfrageintervall ändern zu könnnen. Außerdem wäre ein Filterfunktion toll, so dass man z.B. "temp" eingeben kann, um nur noch die Temperatur-Abfragepunkte angezeigt zu bekommen.
-
Es gibt ja bereits einen Dp "connection", der die Verbindung überwacht.
Soweit ich nachvollziehen kann, ist dieser an den Log Eintrag " Connection with Viessmann system disconnected" geknüpft. Wenn ich beispielsweise die Heizung kurz ausschalte, oder den USB Stecker entferne, erhalte ich diesen Eintrag.Ich benötige einen zweiten dp, der auf viessmann.0 Timeout connection error! Triggert. Bei mir der Fall, wenn sich vcontrold oder der raspi aufgehängt hat. Ist dies der Fall würde ich den raspi gerne neustarten. Auf ein Log Eintrag zu triggern, ist vermutlich schwierig. Daher die Bitte für einen zusätzlichen Datenpunkt.
-
@passuff sagte in Viessmann-Adapter:
Es gibt ja bereits einen Dp "connection", der die Verbindung überwacht.
Soweit ich nachvollziehen kann, ist dieser an den Log Eintrag " Connection with Viessmann system disconnected" geknüpft. Wenn ich beispielsweise die Heizung kurz ausschalte, oder den USB Stecker entferne, erhalte ich diesen Eintrag.Ich benötige einen zweiten dp, der auf viessmann.0 Timeout connection error! Triggert. Bei mir der Fall, wenn sich vcontrold oder der raspi aufgehängt hat. Ist dies der Fall würde ich den raspi gerne neustarten. Auf ein Log Eintrag zu triggern, ist vermutlich schwierig. Daher die Bitte für einen zusätzlichen Datenpunkt.
Neue Version erstellt, bitte testen....
-
@blauholsten
installiert (1.2.2.)
Finde keinen Unterschied (neuer DP?) -
Servus
ich verzweifle gerade etwas.
Es hatte alles schon mal super funktioniert, daher kann ich die Hardware ausschließen.Bis vor kurzem hatte ich nur das Probelm, das ich keine Zahlenwerte schreiben konnte. Lesen ging problemlos.
Das umschalten von WW auf H+WW klappte hingegen.Ich hab es jetzt gerade geschafft, das gr nichts mehr geht. Weder schreiben noch lesen.
Den PI neu zu starten bringt nix.
Hab alle Updates auf dem PI gemacht.
Hab auch versucht, vcontrold vom GIT neu zu installieren.Aktuell kann ich die Telnet-Verbindung herstellen.
"vctrld>commands" bringt auch die möglichen Befehle.
Sobald ich aber einen davon eingebe, (z.B. getTempA) schließt sich Putty.ioBroker kann auch nichts abfragen, die vito.xml vcontrold.xml wurden aber richtig eingelesen.
Im LOG steht folgenes:
Mir gehen die Ideen aus
Könnte mir bitte jemand helfen?Danke und Gruß
Peer -
@passuff sagte in Viessmann-Adapter:
@blauholsten
installiert (1.2.2.)
Finde keinen Unterschied (neuer DP?)Das sollte eigentlich du sein, habe aber festgestellt das dieser bei Adapter Start wieder weg ist?
-
@blauholsten
verstehe deinen Satz nicht... -
Er meint vermutlich folgendes:
Der DP sollte eigentlich da sein
Er hat aber festgestellt, dieser DB bei Adapter Start wieder weg ist. -
so jetzt sollte er da sein (1.2.3)
-
In letzter Zeit musste ich den ioBroker recht häufig wegen Aktualisierung des js-controllers neu starten. Nach dem Neustart wurde auch immer der Viessmann-Adapter mit grüner Ampel angezeigt. Aber kann es sein, dass er dann trotzdem nicht die Werte von vcontrold ausgelesen bekommt? Bei mir wird da jedenfalls regelmäßig nichts in Flot angezeigt und ich muss den Viessmann-Adapter manuell neu starten, bis es wieder funktioniert.
-
Ist bei mir auch so.
Nur Adapter neu starten reicht bei mir nicht.
Ich muss zusätzlich manuell einen reboot beim raspi machen.
Und nur das hilft dann.Deshalb ja auch meine Anforderung, dass man einstellen könnte dass der Adapter den raspi neu starten soll.
mfg
Dieter -
So auch bei mir neuerdings...daher meine Anfrage nach dem zusätzlichen DP...
-
@bahnuhr sagte in Viessmann-Adapter:
Ist bei mir auch so.
Nee, ist bei dir was anderes.
Ich habe keinerlei Probleme damit, dass der Viessmann-Adapter nach einem ioBroker-Neustart meinen Raspi mit vcontrold findet. Der wird immer sofort gefunden. Ich muss also nie meinen Raspi neustarten.
Mir geht es darum, dass ich den Viessmann-Adapter nach einem ioBroker-Neustart noch mal extra neu starten muss, damit er sich die aktuellen Werte holt. Wenn ich dagegen bei laufendem ioBroker den Rapsi neu starte, dann werden die Werte vom Viessmann-Adapter automatisch nach einer gewissen Zeit eingelesen, ohne dass ich den Adapter neu starten müsste.
-
Hallo zusammen,
ich hab den Viessmann-Adapter zusammen mit vcontrold am laufen und schalte darüber meine Heizung an und aus. Soweit so gut, funktioniert eigentlich auch ganz gut. Allerdings passiert es nach ein paar Stunden, dass der Adapter die Verbindung zum vcontrold verliert und dann ca. alle 7-8 Minuten ein zusätzlicher vcontrold geforkt wird. Es werden dann immer mehr, aber die Verbindung zum Adapter kommt nicht mehr zustande. Wenn ich dann per Hand alle vcontrold Prozesse kille und den vcontrold neu starte, geht wieder alles. Und dann geht das Spiel wieder von vorne los...
Ich versuch jetzt schon seit ein paar Tagen dem Problem auf die Spur zu kommen, bin aber nicht erfolgreich... Jemand eine Idee? -
Hallo zusammen,
wie kann ich nach einer programmierten Zustandsänderung meiner Heizung (z.B setBetriebArtM2) in Javascript forcieren, dass gleich anschließen ein getBetriebArtM2 ausgeführt wird. Gerne auch aus Javascript heraus.
Ich rufe die Betriebsart z.B. nur alle 2 Stunden auf und damit wird der neue Zustand u.U erst 2 Stunden später aktualisiert.
Danke schon mal vorab.