NEWS
Vcontrold - funktionierendes images für raspi 3
-
Hallo,
ich habe einen raspi3 bei dem ich vcontrold drauf gemacht habe um meine viessmann auszulesen.
Dachte auch, dass ich es richtig gemacht habe.
Ich bekomme Werte mit vclient über console als auch mit telnet per console.
Der Adapter viessmann läuft eigentlich auch; zumindest am Anfang.
Irgendwann (1-2 Stunden nach Start) kommt dann "Vctrld send ERROR: ERR: error read tty"
Hat jemand von euch mal ein funktionierendes image für raspi3.
Ich würde dann einfach mal meine xml-Dateien austauschen.
Du wolltest doch mal ein image zur Verfügung stellen (dachte ich hätte das irgendwo mal gelesen).
Kannst du mir mal einen link geben.
mfg
Dieter
-
Nachtrag:
Hab mal ein Bild angehängt nachdem es nicht mehr geht.
Der Adapter ist noch grün.
Aber es kommen keine Daten mehr an.
Es hilft dann nur noch ein "sudo reboot" auf dem raspi.
Danach läuft wieder alles bis o.g. Problem wieder auftritt.
Weiß jemand was ich da noch machen kann?
mfg
Dieter
-
so, habe meinen raspi3 mal platt gemacht und alles neu installiert auf einem raspi2.
Mal schauen obs jetzt besser wird.
Vielleicht hängt es ja auch wieder daran, dass ich iobroker auf win habe; und der adapter deshalb nicht richtig funktioniert.
mfg
-
Nachtrag von mir:
Es wurde nicht besser
Der Raspi2 hat zwar länger durchgehalten als der Raspi3; aber nun (nach 1 Tag) die gleichen Fehler.
"Vctrld send Error; err, error read tty
Die Instanz ist weiterhin grün.
Per winscp komme ich auch weiterhin auf den raspi.
per putty verbinden, klappt auch
Befehl: sudo /etc/init.d/vcontrol status
zeigt folgendes:
Der Service ist doch aktiv, woran liegt das nur ?
Hat denn hier keiner eine Idee, was das sein könnte.
mfg
-
So,
raspi neu gestartet.
Adapter neu gestartet.
Es hat 15 Min. gedauert.
Dann kam die Fehlermeldung wieder.
Fazit:
Ich weiß nicht wo dies herkommt.
Hilfe, Ideen kommen hier nicht.
Es antwortet ja nicht einmal jemand.
Frust.
Ich geb auf.
mfg
-
Eventuell liest der Entwickler nicht mit ich benutze diesen Adapter leider nicht.
Wie währe es Mal ein issue auf github zu erstellen ?
–-----------------------
Send from mobile device
Das schöne ios hat Auto Korrektur zum k****
Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
-
issue hab ich eingestellt.
-
Hilft dir nicht driekt weiter aber:
a) kennst du das "Wiki" zu vcontrold: https://github.com/openv/openv/issues?p … dated-desc
Da gibt es zumindest einen Eintrag der den gleichen Fehler schon in der Überschrift hat.
Würde hier mal fragen da der Adapter laut meinem Verständnis (grob umschrieben) ja eigenlich nur die Werte aus Vcontrold in iobroker Objekte packt.
b) ich hatte ein ähnliches Problem beim Auslesen meiner Heizung über ein Javascript, da lag es Zeitweise daran das der Serielle Port doppelt abgefragt wurde bzw. der Port dadurch nicht mehr richtig geschlossen wurde. Bei mir lag es letztendlich an den Verbindungseinstellungen und der Laufzeit der Scripte.
-
b) ich hatte ein ähnliches Problem beim Auslesen meiner Heizung über ein Javascript, da lag es Zeitweise daran das der Serielle Port doppelt abgefragt wurde bzw. der Port dadurch nicht mehr richtig geschlossen wurde. Bei mir lag es letztendlich an den Verbindungseinstellungen und der Laufzeit der Scripte. `
Kannst du mir das Script mal zeigen.
Der Script-Schnipsel von paul53 mit "exec" funktioniert nicht.
Ich vermute, weil ich iobroker auf win habe.
mfg
Dieter
-
… da lag es Zeitweise daran das der Serielle Port doppelt abgefragt wurde bzw. der Port dadurch nicht mehr richtig geschlossen wurde. Bei mir lag es letztendlich an den Verbindungseinstellungen und der Laufzeit der Scripte.... `
Ja, sowas vermute ich auch.
Nur wie geh ich da vor.
Warum wird der Port nicht geschlossen?
Was meinst du mit Verbindungseinstellungen?
Fazit:
Mir würde ein Script-Schnipsel reichen mit dem ich ein Wert abfragen kann.
Dann schreib ich mir das Script selber (dann weiß man auch, wann und wie der Wert abgefragt wird).
mfg
Dieter
-
Schau mal hier:
viewtopic.php?f=21&t=12203&hilit=Waterkotte
Das war der Anfang.
Ich schau mal ob ich per VPN mit IPAD an das script komme.
Verbindungseinstellungen: z.B. 9600, 8,N,1… passt das ? Oder wie wird der tty definiert?
Habe das nur überflogen aber las sich für mich wie eine „Serielle“ Verbindung.
EDIT: Gerade mit IPAD über VPN versucht. Bekomme das Script leider nicht zum kopieren markiert
-
Hier mal das Script das ich verwende.
Bitte nicht auf JavaScript Schönheit achten…
! ````
createState('Waterkotte.Daten.Abfrage_Rohdaten');
! // To use theByteLength
parser:
const SerialPort = require('serialport');
const ByteLength = SerialPort.parsers.ByteLength;
! var buffer = new Buffer(12);
buffer[0] = 0x10;
buffer[1] = 0x02;
buffer[2] = 0x01;
buffer[3] = 0x15;
buffer[4] = 0x00;
buffer[5] = 0x00;
buffer[6] = 0x00;
buffer[7] = 0xf3;
buffer[8] = 0x10;
buffer[9] = 0x03;
buffer[10] = 0x7c;
buffer[11] = 0x32;
const port = new SerialPort("/dev/ttyUSB0", {
baudRate: 9600,
dataBits : 8,
parity : 'none',
stopBits: 1
// flowControl : false
}, function (err) {
if (err) {
// port.close();
return console.log('Error1: ', err.message);
}
! const parser = port.pipe(new ByteLength({ length: 253 }));
parser.on('data', function (data) {
console.log('Data received: ' + data.toString('hex'));
var daten = data.toString('hex');
setState('Waterkotte.Daten.Abfrage_Rohdaten', daten, true);
//port.close();
});
! // Flush input
port.flush();
! // send Data
port.write(buffer, function(err) {
if (err) {
return console.log('Error on write: ', err.message);
}console.log('Daten send');
// port.close();
});
});port.on('open', function() {
console.log('Connected');
});! port.on('error', function(err) {
console.log('Error2: ', err.message);
// port.close();
});
! // close port if the script stopped (to be able to open it again)
onStop(function (callback) {
if (port && port.isOpen) {
port.close();
console.log('port closed');
}
});
! ```` -
Hallo wendy,
vielen Dank für das Script.
Ich muss aber nun mal blöd fragen (gibt es ja nicht ;-).
Ausgangslage:
iobroker läuft auf win laptop im Büro
Im Keller bei der Heizung hab ich nun einen Raspi der per lan Kabel an einem Switch hängt.
An diesem Raspi hab ich ein Optolink Kabel von viessmann per usb angeschlossen.
Nun zum Script.
Wenn ich dieses ausführe auf win Laptop mit iobroker im Büro; wie erreicht er dann den Raspi?
Funktioniert das denn überhaupt.
mfg
Dieter
-
Hi Dieter,
Also mein Script ist ja NICHT für Viessmann! Hoffe wir haben uns nicht missverstanden.
Ich habe auf dem PI der bei meiner Heizung steht iobroker als Slave laufen und dort dann eine JavaScript Instanz installiert in der mein Script zur Abfrage der Daten läuft!
Gruß
Mirko
Gesendet von iPhone mit Tapatalk Pro
-
Mirko, ist schon klar.
Und slave wo das script läuft gibt auch sinn.
Trotzdem kann ich doch nicht der einzige sein bei dem dieser Fehler auftritt.
Ist schon komisch, aber offensichtlich läuft es ja nur bei mir nicht.
mfg
-
So, nachdem der Fehler wieder kam, hab ich mal folgendes gemacht:
per winscp mit dem raspi verbunden; putty aufgerufen, dann
sudo /etc/init.d/vcontrol force-reload
(damit wird wohl die konfig neu geladen und alte verbindungen gelöscht)
dann
Instanz in iobroker neu gestartet.
und es geht wieder.
Was ich also bräuchte:
man müsste per script überwachen ob ein Fehler auftritt.
Wenn ja, dann o.g. Befehl an den raspi
Und dann instanz neu starten.
Kann mir da jemand mal dabei helfen?
Vielleicht liest ja doch der Entwickler mit und sagt mir ob ich richtig liege?
Wenn ja, dann vielleicht auch den Adapter anpassen.
mfg
Dieter
-
Alternative wäre:
Im Raspi bei crontab einen cron erzeugen, der alle 30 Min. (oder so) den force-reload Befehl ausführt.
Und bei den Instanzen genauso; also Adapter neu starten alle 30 Min.
Könnte so gehen; ist aber doch nicht so gedacht.
mfg
-
So, habe (glaub ich) eine Lösung für mich gefunden:
Habe ein Script geschrieben (eher Paul hat es geschrieben; ich hab es nur angepasst) was auf dem raspi den Befehl
sudo /etc/init.d/vcontrol force-reload
ausführt. Hierbei werden bestehende Verbindungen beendet (das war wohl das Problem).
Danach wird der Adapter Viessmann beendet und nach 15 Sek. neu gestartet.
Nun das Script:
// Wenn der Viessmann Adapter keine Daten mehr bekommt (Verbindung nicht geschlossen) dann force_reload beim raspi und Adapter nach 2 Min. neu starten const Client = require('ssh2').Client; function raspi() { 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: 'root', password: 'xxxxx' }); } on({id: "viessmann.0.info.connection", change:"ne", val: false, ack: false}, function(obj){ log ('Viessmann war nicht mehr verbunden; Raspi und Adapter neu gestartet!'); raspi(); setState('system.adapter.viessmann.0.alive', false); setStateDelayed('system.adapter.viessmann.0.alive', true, 15000); });
Danke nochmal an Paul53.
Achja, Voraussetzung für das Script ist das Einbinden von ssh2 beim javascript Adapter.
Werde das nun mal beobachten ob alles richtig läuft.
mfg
Dieter
P.S.
Besser wäre natürlich wenn der Adapter diese (oder ähnliche) Prozedur automatisch ausführen würde.
-
Vielleicht liest ja doch der Entwickler mit und sagt mir ob ich richtig liege?
Wenn ja, dann vielleicht auch den Adapter anpassen.
mfg
Dieter `
Jetzt lese ich mit, schaue mir das die<tage an.</r=""></tage> -
Hi,
nur mal auf die schnelle, das ist aus aktueller Sicht, kein Fehler des Adapters.
Wenn ich mir deinen ersten Lag Auszug anschaue, macht der alles wie er es soll.
Ich habe kurz unter openv geschaut, dort gibt es diesen Eintrag https://github.com/openv/openv/issues/37
daraus entnehme ich, das es dort Probleme mit der USB Konfig gibt.
Kann es eventuell sein, das dein Optolink Adapter, oder der <usb port,/sich/nach/einer/gewissen/zeit/aufhängt?/<br="">Alles was Vcontrold an sich betrifft, bin ich leider nicht der richtig Ansprechpartner.</usb>