NEWS
([gelöst]) Daten Sonnensystem Resol auslesen per VBUS
-
Hi freunde,
Könnt ihr mir bitte helfen um daten eines objects aus zu lesen und die werte zu speicher ?
Edit : loesung um 2ten post und auf Github 8-)
https://github.com/DutchmanNL/ioBroker.Resol-VBUS
Situation: Hier steht ein zonnenwärme system mit der resol SLT steuer einheit. Diese überwacht alle daten und kan per serial oder TCP und dem VBUS protocol ausgelesen werden.
Um VBUS aus zu lesen benutze ich das NPM-Pakket Resol-VBUS, das klappt auch sehr gut.
Mein script macht:
1 - eine connection mit dem Resol VBUS per objecte aus dem RESOL-VBUS pakket = geht !
! ````
var headerSet = new vbus.HeaderSet();
var connection;
! //shedule
//schedule("*/20 * * * * *", function () {
//});
! // Define connection values
connection = new vbus.TcpConnection({
host: 'xxxxxxxx.via.vbus.net',
viaTag: 'xxxxxxxx', // only necessary if connected using VBus.net
password: 'vbus',
// channel: 1, // only necessary if connected to a DL3
!});
! // Open connection
var connectPromise = connection.connect();
// Write result of conection to log
connectPromise.then(function() {
console.log('Connected!');
}, function() {
console.log('Connection failed');
});
! ````2 eine subscripte auf diesen daten = geht
// Trigger to start script at variable change connection.on('packet', onPacket);
3 schreibt al diese data in console.log = geht, dazu muss man header auslesen das machen ich mit diesem code:
create states = geht, fülle die states mit date = geht nicht nur bei 2 a 3
! ````
// Decript data when on data packet receivement
var onPacket = function(packet) {
setTimeout(function() {
connection.disconnect();//create header for data headerSet.addHeader(packet); var packets = headerSet.getSortedHeaders(); var spec = vbus.Specification.getDefaultSpecification(); var packetFields = spec.getPacketFieldsForHeaders(packets);
! packet = null;
packetFields.forEach(function(packetField) {// setTimeout(function () {
if (packet !== packetField.packet) { packet = packetField.packet; // !!!! dieser versuch klappt nicht var i_list; for (var i_index in packet.fullName) { i = i_list[i_index];
// log(packetField.nam);
! // for (i = 0; i < packetField.name.length; i++) {
// log(packetField.name);
// }
! }} var test = "javascript.1.vbus." + packetField.name + "........" + packetField.formatTextValue() log(test) createState("vbus." + packetField.name ,{ name: packetField.name, type: 'string', role: 'value' }); setState('javascript.1.vbus.' + packetField.name, packetField.formatTextValue());
// }, 1000);
}); }, 5000); };
Problem: 1 Wen ich keinen disconnect machen kommt jede millisecunde neue werte, das koennen wir lösen durch einen disconnect (jetz mit timer 5 sec) und dan shedule jede minute einen connect (jede minute daten abfragen) 2 Ich möchte die werte jetzt anstatt auf de console in objecten abspeicher, dazu habe ich vom log ein create state erstellt. Problem: nicht alle data werden weggeschrieben bei objecten, unter states sind sie aber sichtbaar. Manchmal kommen 3 daten einträge pro millisecunden das ist denke ich mal overkill ? Ich brauche hilfe um: 1- shedule die daten 1-ma ab zu fragen (mein script sollte die basis sein und mit cronjob das shedule) 2 - die daten sollen als objecte weggeschrieben werden. Meine logic: Schleife: ermittle jeden werd vom input, erstelle/update für jeden wert das object. Wen datensatz fertig = disconnect. Per shedule ne minut später das gleiche nochmal usw. in meinem log sieht es jetzt so aus, diese werte kommen von:
console.log(' ' + packetField.name + ' = ' + packetField.formatTextValue());
>! ```` javascript.1 2017-06-09 13:50:15.456 info script.js.Testing.vbus: javascript.1.vbus.Power........0.000 kW javascript.1 2017-06-09 13:50:15.456 info script.js.Testing.vbus: javascript.1.vbus.Volumen Vorjahr........961 l javascript.1 2017-06-09 13:50:15.456 info script.js.Testing.vbus: javascript.1.vbus.Volumen Jahr........14951 l javascript.1 2017-06-09 13:50:15.456 info script.js.Testing.vbus: javascript.1.vbus.Volumen Vormonat........3942 l javascript.1 2017-06-09 13:50:15.456 info script.js.Testing.vbus: javascript.1.vbus.Volumen Monat........1174 l javascript.1 2017-06-09 13:50:15.456 info script.js.Testing.vbus: javascript.1.vbus.Volumen Vorwoche........868 l javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Volumen Woche........621 l javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Volumen Gestern........156 l javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Volumen Heute........41 l javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Volumen gesamt........15912 l javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Vorjahr........12465 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Jahr........208482 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Vormonat........55450 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Monat........13696 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Vorwoche........12658 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Woche........5540 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Gestern........1310 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Heute........202 Wh javascript.1 2017-06-09 13:50:15.455 info script.js.Testing.vbus: javascript.1.vbus.Wärme Gesamt........220947 Wh javascript.1 2017-06-09 13:50:15.454 info script.js.Testing.vbus: javascript.1.vbus.Warnmaske........0 javascript.1 2017-06-09 13:50:15.454 info script.js.Testing.vbus: javascript.1.vbus.Error mask........0 javascript.1 2017-06-09 13:50:15.454 info script.js.Testing.vbus: javascript.1.vbus.PWM B........0% javascript.1 2017-06-09 13:50:15.159 info script.js.Testing.vbus: javascript.1.vbus.Power........0.000 kW javascript.1 2017-06-09 13:50:15.158 info script.js.Testing.vbus: javascript.1.vbus.Volumen Vorjahr........961 l javascript.1 2017-06-09 13:50:15.158 info script.js.Testing.vbus: javascript.1.vbus.Volumen Jahr........14951 l javascript.1 2017-06-09 13:50:15.158 info script.js.Testing.vbus: javascript.1.vbus.Volumen Vormonat........3942 l javascript.1 2017-06-09 13:50:15.158 info script.js.Testing.vbus: javascript.1.vbus.Volumen Monat........1174 l javascript.1 2017-06-09 13:50:15.157 info script.js.Testing.vbus: javascript.1.vbus.Volumen Vorwoche........868 l javascript.1 2017-06-09 13:50:15.157 info script.js.Testing.vbus: javascript.1.vbus.Volumen Woche........621 l javascript.1 2017-06-09 13:50:15.157 info script.js.Testing.vbus: javascript.1.vbus.Volumen Gestern........156 l javascript.1 2017-06-09 13:50:15.157 info script.js.Testing.vbus: javascript.1.vbus.Volumen Heute........41 l javascript.1 2017-06-09 13:50:15.157 info script.js.Testing.vbus: javascript.1.vbus.Volumen gesamt........15912 l javascript.1 2017-06-09 13:50:15.156 info script.js.Testing.vbus: javascript.1.vbus.Wärme Vorjahr........12465 Wh javascript.1 2017-06-09 13:50:15.156 info script.js.Testing.vbus: javascript.1.vbus.Wärme Jahr........208482 Wh javascript.1 2017-06-09 13:50:15.156 info script.js.Testing.vbus: javascript.1.vbus.Wärme Vormonat........55450 Wh javascript.1 2017-06-09 13:50:15.156 info script.js.Testing.vbus: javascript.1.vbus.Wärme Monat........13696 Wh javascript.1 2017-06-09 13:50:15.155 info script.js.Testing.vbus: javascript.1.vbus.Wärme Vorwoche........12658 Wh javascript.1 2017-06-09 13:50:15.155 info script.js.Testing.vbus: javascript.1.vbus.Wärme Woche........5540 Wh javascript.1 2017-06-09 13:50:15.155 info script.js.Testing.vbus: javascript.1.vbus.Wärme Gestern........1310 Wh javascript.1 2017-06-09 13:50:15.155 info script.js.Testing.vbus: javascript.1.vbus.Wärme Heute........202 Wh javascript.1 2017-06-09 13:50:15.154 info script.js.Testing.vbus: javascript.1.vbus.Wärme Gesamt........220947 Wh javascript.1 2017-06-09 13:50:15.154 info script.js.Testing.vbus: javascript.1.vbus.Warnmaske........0 javascript.1 2017-06-09 13:50:15.154 info script.js.Testing.vbus: javascript.1.vbus.Error mask........0 javascript.1 2017-06-09 13:50:15.153 info script.js.Testing.vbus: javascript.1.vbus.PWM B........0% javascript.1 2017-06-09 13:50:15.153 info script.js.Testing.vbus: javascript.1.vbus.PWM A........35% javascript.1 2017-06-09 13:50:15.152 info script.js.Testing.vbus: javascript.1.vbus.Pump speed relay 4........100% javascript.1 2017-06-09 13:50:15.152 info script.js.Testing.vbus: javascript.1.vbus.Pump speed relay 3........0% javascript.1 2017-06-09 13:50:15.152 info script.js.Testing.vbus: javascript.1.vbus.Pump speed relay 2........0% javascript.1 2017-06-09 13:50:15.151 info script.js.Testing.vbus: javascript.1.vbus.Pump speed relay 1........35% javascript.1 2017-06-09 13:50:15.146 info script.js.Testing.vbus: javascript.1.vbus.Druck RPS (S6)........99.99 bar javascript.1 2017-06-09 13:50:15.146 info script.js.Testing.vbus: javascript.1.vbus.Volumenstrom Flowrotor (S7)........0 l/h javascript.1 2017-06-09 13:50:15.145 info script.js.Testing.vbus: javascript.1.vbus.Volumenstrom VFS (S6)........0 l/h javascript.1 2017-06-09 13:50:15.145 info script.js.Testing.vbus: javascript.1.vbus.Volumenstrom V40........0 l/h javascript.1 2017-06-09 13:50:15.145 info script.js.Testing.vbus: javascript.1.vbus.Temperatur VFS/RPS (S6)........-888.8 °C javascript.1 2017-06-09 13:50:15.145 info script.js.Testing.vbus: javascript.1.vbus.Temperature sensor 5........999.9 °C javascript.1 2017-06-09 13:50:15.144 info script.js.Testing.vbus: javascript.1.vbus.Temperature sensor 4........26.1 °C javascript.1 2017-06-09 13:50:15.144 info script.js.Testing.vbus: javascript.1.vbus.Temperature sensor 3........23.4 °C javascript.1 2017-06-09 13:50:15.144 info script.js.Testing.vbus: javascript.1.vbus.Temperature sensor 2........25.1 °C javascript.1 2017-06-09 13:50:15.143 info script.js.Testing.vbus: javascript.1.vbus.Temperature sensor 1........30.5 °C javascript.1 2017-06-09 13:50:15.142 info script.js.Testing.vbus: javascript.1.vbus.System date........06/09/2017 13:48:15 >! ````
-
loesung gefunden
Mit diesem script kan man resol-vbus auslesen und die daten als objecten speichern. In combination mit history/sq/flot dan schoene grafieken machen
Es gibt 3 moeglichkeiten dazu:
-
Per USB anschluss (not supported in diesem script, wen noetig kan ich hinzufuegen)
-
Im internen netzwerk (supported)
-
per vbus.net (supported)
Foraussetzhung ist das npm modul: "resul-vbus" !
Das script hat ein schedule, liest alle 20 sekunden die daten aus.
Supported devices sind u.a. resol SLT, DL1, DL2 usw….
Edit: Update nach version 0.6
Edit: Update nach version 0.8
Edit: Alte version des schipptes entfernt im forum und per Github zur verfügung gestellt
Script jetzt hier ! :
-
-
Hallo zusammen
ich komm irgendwie nicht dahinter wie das gehen soll.
ich hab das erste Skript erstellt hoffe richtig und wo muss jetzt die IP Adresse des Adapter hin und wie muss ich das jetzt mit den anderen Skripten tun ?
Gruß
Dippi
-
Hallo zusammen
ich komm irgendwie nicht dahinter wie das gehen soll.
ich hab das erste Skript erstellt hoffe richtig und wo muss jetzt die IP Adresse des Adapter hin und wie muss ich das jetzt mit den anderen Skripten tun ?
Gruß
Dippi `
Ich verstehenicht ganze was du machst, mal schritt fuer schritt:
-
iobroker installiert
-
javascript adapter installiert
-
resol-vbus im javascript adapter eintragen damit er dieses pakket installiert (adapter neu starten)
-
neues script erstellen
-
das script von post 2 (demnaest kommt nog ne version 0.8) kopieren und einfuegen
-
die ip deines systems einstellen bei host,
// Define connection values conn = new vbus.TcpConnection({ host: 'xxxxxxxx.via.vbus.net', // Can be used with via.vbus.net OR internal 192xxxxx adress ! viaTag: 'xxxxxxxx', // only necessary if connected using VBus.net password: 'vbus', // channel: 1, // only necessary if connected to a DL3 });
-
scrip starten
-
ansonsten mal log posten
~Dutch
-
-
Hat es noch geklappt?
Habe noch ein par Änderungen im Script gemacht und wollte nach Version 0.8 aber davor gerne wissen ob dein Problem gelöst ist.
@all
Hat niemand sonst ein sonnenstem mit resol SLT Steuereinheit oder resol datenlogger mit vbus ?
Resultat im Moment hier:
~~<link_text text="https://uploads.tapatalk-cdn.com/201706 ... 889e7b.jpg">https://uploads.tapatalk-cdn.com/20170615/606ed8e5b67b2946d4cd96026f889e7b.jpg</link_text>" />
Alle Daten von steuerumg kommen vom slt und datenlogger mittels dieses Scriptes.
Nöszer Schritt wird die Berechnungen wieviel man gespart hat mit dem zonnen System, brauche dazu aber noch mehr Sensoren und logic also das wird ne 2.0 später.
~Dutch
–-----------------------
Send from mobile device~~
-
Hallo Dutchmann
mein Adapter hat jetzt wohl nach 6 Jahren den Geist aufgegeben, musste erst einen neune bestellen der gestern gekommen ist.
Ich hab das Skript angelegt beim Java Adapter das resol-vbus eingetragen und bekomme folgende Fehlermeldungen.
Daten kommen leider noch keine an.
Gruß
-
Hallo Dutchmann
mein Adapter hat jetzt wohl nach 6 Jahren den Geist aufgegeben, musste erst einen neune bestellen der gestern gekommen ist.
Ich hab das Skript angelegt beim Java Adapter das resol-vbus eingetragen und bekomme folgende Fehlermeldungen.
Daten kommen leider noch keine an.
Gruß
Manuel `
Hi danke das du mit probierst
Probleme erkenne ich das resol pakket ist nicht richtig installiert.
installiere resol-vbus Modul mal bitte per Terminal:
cd /opt/iobroker/node_modules/iobroker.javascript sudo npm install resol-vbus
Noch ne Frage, verbindest du per internes Netzwerk oder über vbus.net?
–-----------------------
Send from mobile device
-
Hallo
hab es nachinstalliert, und alles neu gestartet, der Adapter hängt in meinem Netzwerk und ist über die IP Adresse erreichbar.
was muss den bei viaTag im Skript eingetragen werden.
Gruß
dippi
2772_skript.png -
Ok, Log immer noch gleicher Fehler?
Da er tcp Error gibt tippe ich auf Verbindung/config Problem.
Kannst du deine Konfiguration Mal poste wie du die netzwerkeinstellungen gemacht hast?
–-----------------------
Send from mobile device
-
Hi
welche Netzwerk Konfig ?
Fehler ist immer noch der gleiche
-
Hi
welche Netzwerk Konfig ?
Fehler ist immer noch der gleiche `
In meinen Script müssen Variable gesetzt werden
// Define connection values conn = new vbus.TcpConnection({ host: 'xxxxxxxx.via.vbus.net', // Can be used with via.vbus.net OR internal 192xxxxx adress ! viaTag: 'xxxxxxxx', // only necessary if connected using VBus.net password: 'vbus', // channel: 1, // only necessary if connected to a DL3 });
Host = die ip adresse deines resol Gerätes.
Passwort = Passwort (Standard vbus)
Via tag darf Lehrer bleiben.
Ich vermute dass du die ip nicht eingegeben hast?
–-----------------------
Send from mobile device
-
Hallo
Ip Adresse ist drin.
Evtl. stimmt an der Skripterstellung bei mir was nicht könnte das sein ?
Gruß
Dippi
2772_skript2.png -
Hmm,
Währe es eine Möglichkeit in temaspeak/TeamViewer zu verabreden ?
Ich würde gerne wissen was genau passiert und helfen dein Problem zu lösen.
Ziel ist dieses Script letztentlich in einen Adapter um zu setzen.
~Dutch
–-----------------------
Send from mobile device
-
Hallo Dutch
hab dir ne PN mit den Daten geschickt.
Gruß
Dippi
-
Hallo Dutch
hab dir ne PN mit den Daten geschickt.
Gruß
Dippi `
Hi Dippi,
Super danke dir hab ich gesehen.
In Holland haben wir heute Vatertag ich melde ich morgen per WhatsApp bij dir.
Wenn ich jetzt coden gehen killen mich 2 bandieten und ein rudeltier
~Dutch
–-----------------------
Send from mobile device
-
Hallo zusammen,
vielen Dank für das RESOL Skript. Ich setze dies mit einer DeltaSOL ein und musste ein paar Änderungen vornehmen. Wenn die Datenpunkte Leerzeichen enthalten, werden diese nicht mit den
Aktuellen Werten gefüllt. Daher werden alle Leerzeichen in den Namen entfernt. Zusätzlich, zum Logging werden unterhalb der Datenpunkte, weitere, .raw Datenpunkte angelegt. Diese enthalten nur die Value ohne Einheit. Somit kann man diese Angenehmer in eine DB schreiben.
//****************************************** //*****************Dutchman***************** //*******************V 0.6****************** //****************************************** // define variable var vbus = require('resol-vbus'); var headerSet = new vbus.HeaderSet(); var conn; // Define connection values conn = new vbus.TcpConnection({ host: 'xxx.xxx.xxx.xxx', // Can be used with via.vbus.net OR internal 192xxxxx adress ! viaTag: '', // only necessary if connected using VBus.net password: 'vbus', // channel: 1, // only necessary if connected to a DL3 }); // Schedule every 20 seconds schedule("*/20 * * * * *", function () { // Log connection status var onConnectionStateChange = function(state) { // console.log(state); }; var onPacket = function(packet) { headerSet.addHeader(packet); }; conn.on('connectionState', onConnectionStateChange); conn.on('packet', onPacket); conn.connect().done(function() { setTimeout(function() { conn.disconnect(); //create header packages var packets = headerSet.getSortedHeaders(); var spec = vbus.Specification.getDefaultSpecification(); var packetFields = spec.getPacketFieldsForHeaders(packets); var packet = null; var counter = 0; packetFields.forEach(function(packetField) { counter = counter + 1; if (packet !== packetField.packet) { packet = packetField.packet; console.log(packetField.packetSpec.fullName); } [b] packetField.name = packetField.name.replace(/ /g,"");[/b] // Create new objects createState("vbus." + packetField.name ,{ name: packetField.name, type: 'string', role: 'value' }); [b] rawvalue = packetField.formatTextValue(); rawvalue = rawvalue.replace(/[^0-9.,]/g,""); createState("vbus." + packetField.name + ".raw" ,{ name: packetField.name + ".raw", type: 'string', role: 'value' });[/b] // Update values setState("vbus." + packetField.name, packetField.formatTextValue(), true); [b] setState("vbus." + packetField.name + ".raw", rawvalue, true);[/b] console.log(counter + " = " + packetField.name + " = " + packetField.formatTextValue()); console.log(counter + " = " + packetField.name + ".raw = " + rawvalue); // console.log(counter + " " + packetField.name); }); // 10 second timer, collection all information takes some seconds ;) }, 10000); }); });
-
Super danke dir das ware elementen wonach ich gesucht habe aber nicht fit genug war im scripten.
–-----------------------
Send from mobile device
-
Hallo.
Ich habe ja eigentlich eine TISUN Anlage.
Jedoch verbaut TISUN die RESOL DELTASol Steuerung.
Denn wenn ich auf das Webinterface zugreife dann kommt die Weboberfläche von RESOL.
Ich glaube dass mein Adapter bzw dass mein Script jetzt funktioniert aber was mich jetzt noch interessieren würde wie bekomme ich Daten aus der Anlage bzw wie verarbeite ich diese weiter.
Wo landen die Daten, bzw welche gibt es?
Leider kenne ich mich da noch zuwenig aus.
Danke
Tobi
Gesendet von meinem D5803 mit Tapatalk
-
Hallo.
Ich habe ja eigentlich eine TISUN Anlage.
Jedoch verbaut TISUN die RESOL DELTASol Steuerung.
Denn wenn ich auf das Webinterface zugreife dann kommt die Weboberfläche von RESOL.
Ich glaube dass mein Adapter bzw dass mein Script jetzt funktioniert aber was mich jetzt noch interessieren würde wie bekomme ich Daten aus der Anlage bzw wie verarbeite ich diese weiter.
Wo landen die Daten, bzw welche gibt es?
Leider kenne ich mich da noch zuwenig aus.
Danke
Tobi
Gesendet von meinem D5803 mit Tapatalk `
Hi tobi,
Das script erstellt alle objecte die es finden kan als object unter dem baum javascript.vbus. Beim erste run werden alle objecte erstellt und danach im intervall (20 30 Sekunden) erneuert.
Die daten vindest du hier:
diese kannst du dan nach wunsch benutzen und weiterverarbeiten, ich habe z.b. mein sonnensystem per vis visualisiert:
-
Hi.
Dann läuft bei mir irgendwas falsch….
Ich ziehe deinen kompletten JavaScript jetzt noch einmal neu auf und versuche es noch einmal neu. Aber irgendwie wird bei mir da nichts angelegt.
Tobi
Gesendet von meinem D5803 mit Tapatalk