NEWS
JS # mit einer Schleife eine function mehrfach aufrufen und ebusd abfragen
-
Fragen zum Projekt: http://forum.iobroker.net/viewtopic.php?f=23&t=9322
a200, Ingo und ich suchen dafür Unterstützung.
Folgender Script funktioniert "eBus_read-f (ReturnTemp)"
! // =============================================================================
! // Auslesen von Einzelwerten vom eBusd
! // =============================================================================
! var root = 'eBus'; // root of state inside 'javascript.0'
! var host = 'RPi2-2'; // set to your host running ebusd
! var port = 8888; // default ebusd port
! var logging = false; // "true" oder "false" wenn nicht gewünscht
! var net = require('net'); //
! var conn = false;
! // === pro Skript wird ein Datenpunkt abgefragt ## hier die beiden Werte anpassen=============
! var element = 'ReturnTemp'; // Hier Name des element eintragen
! var elementName = "Rücklauftemperatur"; // Hier die Bezeichnung für das element eintragen
! // ===========================================================================================
! // ebusctl read -f FlowTemp
! // 51.19;ok
! // =============================================================================
! var req = 'read -f ' + element;
! var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz
! // =============================================================================
! // Datenpunkte anlegen
! // =============================================================================
! createState(pfad, 0, {name: elementName ,rolle: 'value.temperature' ,type: 'string',unit: '°C'});
! // –-------------------------------------------------------- Start
! if (logging) log('1. Start trying eBus abfrage');
! var client = new net.Socket();
! client.connect(port, host, function() {
! if (logging) log('2. Connected to ebusd on ' + host + ':' + port);
! conn = true;
! client.write(req + '\n');
! if (logging) log('3. TX-Befehl: "' + req + '" wird gesendet');
! });
! // =============================================================================
! // Funktion Daten abfragen
! // =============================================================================
! function parse(data) {
! var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt
! if (logging) log("Menge : " + arr.length);
! var fields = data.toString().split(';'); // hier wird auf den = getriggert
! if (logging) log('Felder : ' + fields);
! if(fields.length > 1) { // wenn mehrere Felder gefunden wurden
! if (logging) log('WertVor : ' + fields[0]);
! var WertVor =fields[0];
! if (logging) log("WertNach: " + fields[1]);
! fields[0] = fields[0].replace(' ','_');
! if (logging) log("Feld 1 : " + fields[0]);
! if (logging) log("Feld 2 : " + fields[1]);
! setState(pfad, WertVor); // Werte setzen
! }
! }
! // =============================================================================
! // Daten abfragen
! // =============================================================================
! var databuf = '';
! client.on('data', function(data) {
! var prev = 0, next;
! var datastr = data.toString();
! if (logging) log("4. RX-Daten : " + datastr);
! while ((next = datastr.indexOf('\n\n', prev)) > -1) {
! databuf += datastr.substring(prev, next);
! parse(databuf);
! databuf = '';
! prev = next + 1;
! }
! databuf += datastr.substring(prev);
! client.write('quit\n');
! });
! // =============================================================================
! // ? Ende
! // =============================================================================
! client.on('close', function() {
! conn = false;
! log('Connection to ebusd closed');
! });
! // =============================================================================
! // Funktion aufrufen
! // =============================================================================
! function getData() {
! client.connect(port, host, function() {
! if (logging) log('Connected to ebusd on ' + host + ':' + port);
! client.write(req + '\n');
! if (logging) log('TX-Befehl: "' + req + '" wird gesendet');
! });
! }
! schedule('*/1 * * * *', getData);Folgender Script funktioniert nicht "eBus_read-f (PrEnergyCountHwc1)"
! // =============================================================================
! // Auslesen von Einzelwerten vom eBusd
! // =============================================================================
! var root = 'eBus'; // root of state inside 'javascript.0'
! var host = 'RPi2-2'; // set to your host running ebusd
! var port = 8888; // default ebusd port
! var logging = true; // "true" oder "false" wenn nicht gewünscht
! var net = require('net'); //
! var conn = false;
! // === pro Skript wird ein Datenpunkt abgefragt ## hier die beiden Werte anpassen=============
! var element = 'PrEnergyCountHwc1'; // Hier Name des element eintragen
! var elementName = "PrEnergyCountDHW1_DK"; // Hier die Bezeichnung für das element eintragen
! // ===========================================================================================
! // ebusctl read -f FlowTemp
! // 51.19;ok
! // =============================================================================
! var req = 'read -f ' + element;
! var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz
! // =============================================================================
! // Datenpunkte anlegen
! // =============================================================================
! createState(pfad, 0, {name: elementName ,rolle: 'value.temperature' ,type: 'string',unit: '?'});
! // –-------------------------------------------------------- Start
! if (logging) log('1. Start trying eBus abfrage');
! var client = new net.Socket();
! client.connect(port, host, function() {
! if (logging) log('2. Connected to ebusd on ' + host + ':' + port);
! conn = true;
! client.write(req + '\n');
! if (logging) log('3. TX-Befehl: "' + req + '" wird gesendet');
! });
! // =============================================================================
! // Funktion Daten abfragen
! // =============================================================================
! function parse(data) {
! var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt
! if (logging) log("Menge : " + arr.length);
! var fields = data.toString().split(';'); // hier wird auf den = getriggert
! if (logging) log('Felder : ' + fields);
! if(fields.length > 1) { // wenn mehrere Felder gefunden wurden
! if (logging) log('WertVor : ' + fields[0]);
! var WertVor =fields[0];
! if (logging) log("WertNach: " + fields[1]);
! fields[0] = fields[0].replace(' ','_');
! if (logging) log("Feld 1 : " + fields[0]);
! if (logging) log("Feld 2 : " + fields[1]);
! setState(pfad, WertVor); // Werte setzen
! }
! }
! // =============================================================================
! // Daten abfragen
! // =============================================================================
! var databuf = '';
! client.on('data', function(data) {
! var prev = 0, next;
! var datastr = data.toString();
! if (logging) log("4. RX-Daten : " + datastr);
! while ((next = datastr.indexOf('\n\n', prev)) > -1) {
! databuf += datastr.substring(prev, next);
! parse(databuf);
! databuf = '';
! prev = next + 1;
! }
! databuf += datastr.substring(prev);
! client.write('quit\n');
! });
! // =============================================================================
! // ? Ende
! // =============================================================================
! client.on('close', function() {
! conn = false;
! log('Connection to ebusd closed');
! });
! // =============================================================================
! // Funktion aufrufen
! // =============================================================================
! function getData() {
! client.connect(port, host, function() {
! if (logging) log('Connected to ebusd on ' + host + ':' + port);
! client.write(req + '\n');
! if (logging) log('TX-Befehl: "' + req + '" wird gesendet');
! });
! }
! schedule('*/1 * * * *', getData);laut LOG werden die Werte empfangen. Sie werden jedoch nicht in den Datenpunkt geschrieben.
Vielleicht hat jemand auch noch eine Idee wie man eine Liste von "elementen" abfragen kann.
Gruß
Jürgen
-
so,
bin nun schon etwas weiter.
nun benötige ich aber Unterstützung.
Der Script der einen Wert abfragt ist soweit OK
! ````
// =============================================================================
// --- Abfragen von Werten vom "ebusd"
// =============================================================================
var logging = false; // "true" oder "false" wenn nicht gewünscht
var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft
var PORT = 8888; // Portnummer auf dem der ebusd hört
var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll
var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen
var req = 'read -f ' + element; // der Befehl wird zusammengesetzt
var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden
// =============================================================================
var net = require('net');
var client = new net.Socket();
! // =============================================================================
// Datenpunkte anlegen
// =============================================================================
createState(pfad, 0, {name: elementName});
! // =============================================================================
// --- Verbindungsaufbau und Befehl absetzen ---
// =============================================================================
function getDATA() {
client.connect(PORT, HOST, function(){
if (logging) log('1.Verbindungsaufbau zu : ' + HOST + ':' + PORT);
client.write(req + '\n');
if (logging) log('2.BEFEHL wurde gesendet : ' + req);
});
}
// =============================================================================
// --- wenn Verbindungsaufbau fehl schlägt. Eine Fehlermeldung wird empfangen. -> warten --- kann noch raus
// =============================================================================
client.on('error', function(e) {
if(e.code == 'ECONNREFUSED') {
if (logging) log('Is the server running at ' + PORT + '?');
! client.setTimeout(4000, function() {
client.connect(PORT, HOST, function(){
if (logging) log('CONNECTED TO: ' + HOST + ':' + PORT);
client.write('I am the inner superman');
});
});
if (logging) log('Timeout for 5 seconds before trying port:' + PORT + ' again');
}
});
! // =============================================================================
// --- function getDATA erstellen und damit DATEN lesen
// =============================================================================
client.on('data', function(data) {
if (logging) log('3.Daten werden empfangen : ' + data);
client.destroy();
// --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) ---
var datastr = data.toString();
if (logging) log('3a.RX-Daten (String) : ' + datastr);
//------------------------------------------------------------------------------
var databuf = '';
var prev = 0, next;
if (logging) log('3b.Durchlauf : ' + prev);
while ((next = datastr.indexOf('\n\n', prev)) > -1) {
databuf += datastr.substring(prev, next);
if (logging) log('3c.Funktion aufrufen mit : ' + databuf + " als Daten");
//--- SUB-Funktion aufrufen ---
parse(databuf);
databuf = ''; // Datenbuffer leeren
prev = next + 1;
}
databuf += datastr.substring(prev);
client.write('quit\n');
//------------------------------------------------------------------------------
});
! // =============================================================================
// --- Funktion --- Verbindung schließen
// =============================================================================
client.on('close', function() {
if (logging) log('4.Verbindung geschlossen .');
});
! // =============================================================================
// SUB-Funktion Daten-String aufteilen
// =============================================================================
function parse(data) {
var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt
if (logging) log("3d.Menge an Daten durch ; getrennt : " + arr.length);var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad, WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); }
}
! // =============================================================================
// Cron anlegen , Function soll jede Minute laufen
// =============================================================================
schedule('*/1 * * * *', getDATA);Nun wollte ich diesen Script dahin gehend umbauen das ich eine Reihe von Werten abfragen kann. Die Datenpunkte werden alle angelegt Die Abfrage läuft jedoch nicht >! ``` `// ============================================================================= // --- Abfragen von Werten vom "ebusd" // ============================================================================= var logging = true; // "true" oder "false" wenn nicht gewünscht var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft var PORT = 8888; // Portnummer auf dem der ebusd hört //var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll //var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen //var req = 'read -f ' + element; // der Befehl wird zusammengesetzt //var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden // ============================================================================= var net = require('net'); var client = new net.Socket(); // ============================================================================= Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours']; ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ]; // ============================================================================= >! // ============================================================================= // Datenpunkte anlegen // ============================================================================= for(var i=0;i <elemente.length;i++) {/var/pfad="eBus.Temperatur." +/elemente[i];/innerhalb/der/instanz/wo/die/daten/gespeichert/werden/createstate(pfad,/0,/{name:/elementenamen[i]});/if/(logging)/log('0.'/i/+'/datenpunkte/angelegt/für/'/elemente[i]/-="">' + ElementeNamen[i]); } >! function readElemente(){ for (var i=0;i <elemente.length;i++) {/var/req="read -f " +/elemente[i];/der/befehl/wird/zusammengesetzt/}/=="===========================================================================" ---/verbindungsaufbau/und/absetzen/client.connect(port,/host,/function(){/if/(logging)/log('1.verbindungsaufbau/zu/:/'/host/':'/port);/client.write(req/'\n');/log('2.befehl/wurde/gesendet/req);/});/funktion/daten/lesen/client.on('data',/function(data)/log('3.daten/werden/empfangen/data);/client.destroy();/die/empfangenen/gewandelt/aufgeteilt/(sub-funktion)/datastr="data.toString();" log('3a.rx-daten/(string)/datastr);/------------------------------------------------------------------------------/databuf/;/prev="0," next;/log('3b.durchlauf/prev);/while/((next="datastr.indexOf('\n\n'," prev))="">-1) { databuf += datastr.substring(prev, next); if (logging) log('3c.Funktion aufrufen mit : ' + databuf + " als Daten"); //--- SUB-Funktion aufrufen --- parse(databuf); databuf = ''; // Datenbuffer leeren prev = next + 1; } databuf += datastr.substring(prev); client.write('quit\n'); //------------------------------------------------------------------------------ }); >! // ============================================================================= // --- Funktion --- Verbindung schließen // ============================================================================= client.on('close', function() { if (logging) log('4.Verbindung geschlossen .'); }); >! // ============================================================================= // SUB-Funktion Daten-String aufteilen // ============================================================================= function parse(data) { var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt if (logging) log("3d.Menge an Daten durch ; getrennt : " + arr.length); var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad, WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); } } >! schedule("1 0 * * *", readElemente);</elemente.length;i++)></elemente.length;i++)>` >! Ich habe reichlich Gedanken-hinweise rein gebaut. Vielleicht kann man nachvollziehen was ich vor habe >! Das ist für einen JS-Laien doch sehr kompliziert :? >! Gruß >! Jürgen[/i][/i][/i][/i][/i] ```
-
Nächster Versuch
nun sieht das Script folgendermaßen aus
`// ============================================================================= // --- Abfragen von Werten vom "ebusd" // ============================================================================= var logging = true; // "true" oder "false" wenn nicht gewünscht var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft var PORT = 8888; // Portnummer auf dem der ebusd hört //var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll //var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen //var req = 'read -f ' + element; // der Befehl wird zusammengesetzt //var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden // ============================================================================= var net = require('net'); var client = new net.Socket(); // ============================================================================= Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours']; ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ]; // ============================================================================= // ============================================================================= // Datenpunkte anlegen // ============================================================================= for(var i=0;i <elemente.length;i++) {/var/pfad="eBus.Temperatur." +/elemente[i];/innerhalb/der/instanz/wo/die/daten/gespeichert/werden/createstate(pfad,/0,/{name:/elementenamen[i]});/if/(logging)/log('0.'/i/'/datenpunkt:/-="">' + ElementeNamen[i] + ' angelegt'); // --- hier dann die function mit werten aufrufen var req = 'read -f ' + Elemente[i]; // der Befehl wird zusammengesetzt var ele = Elemente[i]; var eleN = ElementeNamen[i]; if (logging) log('0.' + i + ' function mit Werten : ' + req + ' # ' + ele + ' # ' + eleN + ' = aufrufen'); readElement(req, ele, eleN); } // ============================================================================= // --- function zum Abfragen der Werte // ============================================================================= function readElement(req, ele, eleN){ if (logging) log('0.x Die function wird aufgerufen'); if (logging) log('1.0 Verbindungsaufbau zu : ' + HOST + ':' + PORT); // ============================================================================= // --- Aufruf --- Verbindungsaufbau und Befehl absetzen // ============================================================================= client.connect(PORT, HOST, function Verbindungsaufbau(){ if (logging) log('1.Verbindungsaufbau zu : ' + HOST + ':' + PORT); client.write(req + '\n'); if (logging) log('2.BEFEHL wurde gesendet : ' + req); }); // ============================================================================= // ============================================================================= // --- Aufruf --- DATEN lesen // ============================================================================= client.on('data', function(data) { if (logging) log('3.Daten werden empfangen : ' + data); client.destroy(); // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) --- var datastr = data.toString(); if (logging) log('3a.RX-Daten (String) : ' + datastr); //------------------------------------------------------------------------------ var databuf = ''; var prev = 0, next; if (logging) log('3b.Durchlauf : ' + prev); while ((next = datastr.indexOf('\n\n', prev)) > -1) { databuf += datastr.substring(prev, next); if (logging) log('3c.Funktion aufrufen mit : ' + databuf + " als Daten"); //--- SUB-Funktion aufrufen --- parse(databuf); databuf = ''; // Datenbuffer leeren prev = next + 1; } databuf += datastr.substring(prev); client.write('quit\n'); //------------------------------------------------------------------------------ }); // ============================================================================= // ============================================================================= // --- Aufruf --- Verbindungsabbau // ============================================================================= client.on('close', function Verbindungsabbau() { if (logging) log('4.Verbindung geschlossen .'); }); // ============================================================================= } // ============================================================================= // --- SUB-Funktion --- Daten-String aufteilen // ============================================================================= function parse(data) { var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt if (logging) log("3d.Menge an Daten durch ; getrennt : " + arr.length); var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad, WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); } } // ============================================================================= schedule("1 0 * * *", readElement);</elemente.length;i++)>` Leider stürzt JS dabei ab `~~[code]~~2017-12-25 10:04:35.096 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_2 2017-12-25 10:04:35.103 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt 2017-12-25 10:04:35.104 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 function mit Werten : read -f PrEnergySumHwc1 # PrEnergySumHwc1 # Betriebsstunden im Heizbetrieb = aufrufen 2017-12-25 10:04:35.105 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.x Die function wird aufgerufen 2017-12-25 10:04:35.105 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsaufbau zu : RPi2-2:8888 2017-12-25 10:04:35.107 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt 2017-12-25 10:04:35.107 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 function mit Werten : read -f PrEnergyCountHwc1 # PrEnergyCountHwc1 # Betriebsstunden = aufrufen 2017-12-25 10:04:35.108 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.x Die function wird aufgerufen 2017-12-25 10:04:35.108 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsaufbau zu : RPi2-2:8888 2017-12-25 10:04:35.111 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt 2017-12-25 10:04:35.111 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 function mit Werten : read -f HcHours # HcHours # Stunden = aufrufen 2017-12-25 10:04:35.113 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.x Die function wird aufgerufen 2017-12-25 10:04:35.113 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsaufbau zu : RPi2-2:8888 2017-12-25 10:04:35.115 - info: javascript.0 script.js.ebusd.eBus_anfang_2: registered 0 subscriptions and 1 schedule 2017-12-25 10:04:35.138 - error: javascript.0 uncaught exception: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:37016) 2017-12-25 10:04:35.138 - error: javascript.0 Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:37016) at Object.exports._errnoException (util.js:1020:11) at exports._exceptionWithHostPort (util.js:1043:20) at connect (net.js:880:16) at net.js:1013:7 at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10) 2017-12-25 10:04:35.145 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.Verbindung geschlossen . 2017-12-25 10:04:35.146 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.Verbindung geschlossen . 2017-12-25 10:04:35.146 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.Verbindung geschlossen . 2017-12-25 10:04:35.182 - error: Caught by controller[0]: { Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:37016) 2017-12-25 10:04:35.182 - error: Caught by controller[0]: at Object.exports._errnoException (util.js:1020:11) 2017-12-25 10:04:35.183 - error: Caught by controller[0]: at exports._exceptionWithHostPort (util.js:1043:20) 2017-12-25 10:04:35.183 - error: Caught by controller[0]: at connect (net.js:880:16) 2017-12-25 10:04:35.183 - error: Caught by controller[0]: at net.js:1013:7 2017-12-25 10:04:35.184 - error: Caught by controller[0]: at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16) 2017-12-25 10:04:35.184 - error: Caught by controller[0]: at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10) 2017-12-25 10:04:35.184 - error: Caught by controller[0]: code: 'EALREADY', 2017-12-25 10:04:35.184 - error: Caught by controller[0]: errno: 'EALREADY', 2017-12-25 10:04:35.185 - error: Caught by controller[0]: syscall: 'connect', 2017-12-25 10:04:35.185 - error: Caught by controller[0]: address: '192.168.28.144', 2017-12-25 10:04:35.185 - error: Caught by controller[0]: port: 8888 } 2017-12-25 10:04:35.185 - error: host.ioBmaster instance system.adapter.javascript.0 terminated with code 0 (OK) 2017-12-25 10:04:35.186 - info: host.ioBmaster Restart adapter system.adapter.javascript.0 because enabled [/code]` Was läuft falsch? Einen schönen Weihnachtstag Gruß Jürgen[/i][/i][/i][/i][/i][/i]
-
Nächster Versuch
nun sieht das Script folgendermaßen aus
`// ============================================================================= // --- Abfragen von Werten vom "ebusd" // ============================================================================= var logging = true; // "true" oder "false" wenn nicht gewünscht var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft var PORT = 8888; // Portnummer auf dem der ebusd hört //var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll //var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen //var req = 'read -f ' + element; // der Befehl wird zusammengesetzt //var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden // ============================================================================= var net = require('net'); var client = new net.Socket(); // ============================================================================= Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours']; ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ]; // ============================================================================= // ============================================================================= // Datenpunkte anlegen // ============================================================================= for(var i=0;i <elemente.length;i++) {/var/pfad="eBus.Temperatur." +/elemente[i];/innerhalb/der/instanz/wo/die/daten/gespeichert/werden/createstate(pfad,/0,/{name:/elementenamen[i]});/if/(logging)/log('0.'/i/'/datenpunkt:/-="">' + ElementeNamen[i] + ' angelegt'); // --- hier dann die function mit werten aufrufen var req = 'read -f ' + Elemente[i]; // der Befehl wird zusammengesetzt var ele = Elemente[i]; var eleN = ElementeNamen[i]; if (logging) log('0.' + i + ' function mit Werten : ' + req + ' # ' + ele + ' # ' + eleN + ' = aufrufen'); readElement(req, ele, eleN); } // ============================================================================= // --- function zum Abfragen der Werte // ============================================================================= function readElement(req, ele, eleN){ if (logging) log('0.x Die function wird aufgerufen'); if (logging) log('1.0 Verbindungsaufbau zu : ' + HOST + ':' + PORT); // ============================================================================= // --- Aufruf --- Verbindungsaufbau und Befehl absetzen // ============================================================================= client.connect(PORT, HOST, function Verbindungsaufbau(){ if (logging) log('1.Verbindungsaufbau zu : ' + HOST + ':' + PORT); client.write(req + '\n'); if (logging) log('2.BEFEHL wurde gesendet : ' + req); }); // ============================================================================= // ============================================================================= // --- Aufruf --- DATEN lesen // ============================================================================= client.on('data', function(data) { if (logging) log('3.Daten werden empfangen : ' + data); client.destroy(); // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) --- var datastr = data.toString(); if (logging) log('3a.RX-Daten (String) : ' + datastr); //------------------------------------------------------------------------------ var databuf = ''; var prev = 0, next; if (logging) log('3b.Durchlauf : ' + prev); while ((next = datastr.indexOf('\n\n', prev)) > -1) { databuf += datastr.substring(prev, next); if (logging) log('3c.Funktion aufrufen mit : ' + databuf + " als Daten"); //--- SUB-Funktion aufrufen --- parse(databuf); databuf = ''; // Datenbuffer leeren prev = next + 1; } databuf += datastr.substring(prev); client.write('quit\n'); //------------------------------------------------------------------------------ }); // ============================================================================= // ============================================================================= // --- Aufruf --- Verbindungsabbau // ============================================================================= client.on('close', function Verbindungsabbau() { if (logging) log('4.Verbindung geschlossen .'); }); // ============================================================================= } // ============================================================================= // --- SUB-Funktion --- Daten-String aufteilen // ============================================================================= function parse(data) { var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt if (logging) log("3d.Menge an Daten durch ; getrennt : " + arr.length); var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad, WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); } } // ============================================================================= schedule("1 0 * * *", readElement);</elemente.length;i++)>` Leider stürzt JS dabei ab `~~[code]~~2017-12-25 10:04:35.096 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_2 2017-12-25 10:04:35.103 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt 2017-12-25 10:04:35.104 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 function mit Werten : read -f PrEnergySumHwc1 # PrEnergySumHwc1 # Betriebsstunden im Heizbetrieb = aufrufen 2017-12-25 10:04:35.105 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.x Die function wird aufgerufen 2017-12-25 10:04:35.105 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsaufbau zu : RPi2-2:8888 2017-12-25 10:04:35.107 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt 2017-12-25 10:04:35.107 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 function mit Werten : read -f PrEnergyCountHwc1 # PrEnergyCountHwc1 # Betriebsstunden = aufrufen 2017-12-25 10:04:35.108 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.x Die function wird aufgerufen 2017-12-25 10:04:35.108 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsaufbau zu : RPi2-2:8888 2017-12-25 10:04:35.111 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt 2017-12-25 10:04:35.111 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 function mit Werten : read -f HcHours # HcHours # Stunden = aufrufen 2017-12-25 10:04:35.113 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.x Die function wird aufgerufen 2017-12-25 10:04:35.113 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsaufbau zu : RPi2-2:8888 2017-12-25 10:04:35.115 - info: javascript.0 script.js.ebusd.eBus_anfang_2: registered 0 subscriptions and 1 schedule 2017-12-25 10:04:35.138 - error: javascript.0 uncaught exception: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:37016) 2017-12-25 10:04:35.138 - error: javascript.0 Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:37016) at Object.exports._errnoException (util.js:1020:11) at exports._exceptionWithHostPort (util.js:1043:20) at connect (net.js:880:16) at net.js:1013:7 at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10) 2017-12-25 10:04:35.145 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.Verbindung geschlossen . 2017-12-25 10:04:35.146 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.Verbindung geschlossen . 2017-12-25 10:04:35.146 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.Verbindung geschlossen . 2017-12-25 10:04:35.182 - error: Caught by controller[0]: { Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:37016) 2017-12-25 10:04:35.182 - error: Caught by controller[0]: at Object.exports._errnoException (util.js:1020:11) 2017-12-25 10:04:35.183 - error: Caught by controller[0]: at exports._exceptionWithHostPort (util.js:1043:20) 2017-12-25 10:04:35.183 - error: Caught by controller[0]: at connect (net.js:880:16) 2017-12-25 10:04:35.183 - error: Caught by controller[0]: at net.js:1013:7 2017-12-25 10:04:35.184 - error: Caught by controller[0]: at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16) 2017-12-25 10:04:35.184 - error: Caught by controller[0]: at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10) 2017-12-25 10:04:35.184 - error: Caught by controller[0]: code: 'EALREADY', 2017-12-25 10:04:35.184 - error: Caught by controller[0]: errno: 'EALREADY', 2017-12-25 10:04:35.185 - error: Caught by controller[0]: syscall: 'connect', 2017-12-25 10:04:35.185 - error: Caught by controller[0]: address: '192.168.28.144', 2017-12-25 10:04:35.185 - error: Caught by controller[0]: port: 8888 } 2017-12-25 10:04:35.185 - error: host.ioBmaster instance system.adapter.javascript.0 terminated with code 0 (OK) 2017-12-25 10:04:35.186 - info: host.ioBmaster Restart adapter system.adapter.javascript.0 because enabled [/code]` Was läuft falsch? Einen schönen Weihnachtstag Gruß Jürgen Auf die schnelle.... Du machst keine "error" Behandlung, füge sowas in deinem Skript ein, dann schmiert dir die JS-Instanz nicht mehr ab. `~~[code]~~client.on('error', function(err) { log(err)});[/code]` Hoffe das hilft[/i][/i][/i][/i][/i][/i] ``` `
-
OK
Danke für den Hinweis
HAbe nun folgendes hinzu gefügt:
// ============================================================================= // --- Function --- Fehler abfangen und ausgeben // ============================================================================= client.on('error', function(err) { if (logging) log('Es ist ein Fehler aufgetreten : '+ err) }); // =============================================================================
Dann schmiert JS nicht mehr ab und es kommt die Fehlermeldung:
javascript.0 script.js.ebusd.eBus_anfang_2: Es ist ein Fehler aufgetreten : Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:40878)
Es stellt sich jedoch die Frage warum die function nicht verschachtelt arbeitet
-
OK
Danke für den Hinweis
HAbe nun folgendes hinzu gefügt:
// ============================================================================= // --- Function --- Fehler abfangen und ausgeben // ============================================================================= client.on('error', function(err) { if (logging) log('Es ist ein Fehler aufgetreten : '+ err) }); // =============================================================================
Dann schmiert JS nicht mehr ab und es kommt die Fehlermeldung:
javascript.0 script.js.ebusd.eBus_anfang_2: Es ist ein Fehler aufgetreten : Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:40878)
Es stellt sich jedoch die Frage warum die function nicht verschachtelt arbeitet `
Wie verschachtelt?Unter Vorbehalt, und auf die schnelle:
Ich denke dein Code wird so nicht funktionieren, wenn ich den Code richtig verstehe, versuchst du bei jeden Abfragewert eine neue Verbindung zum Client herausstellen.
Laut kurzer Google Hilfe, entspricht das auch der Fehlermeldung.
-
Kann man dem Client mehrere Anfragen gleichzeitig senden? Oder muss man immer einzeln Befehle senden?
-
Kann man dem Client mehrere Anfragen gleichzeitig senden? Oder muss man immer einzeln Befehle senden? `
Ich denke nicht. Das soll er eigentlich auch nicht.Folgender Script funktioniert "eBus_read-f (ReturnTemp)"
! // =============================================================================
! // Auslesen von Einzelwerten vom eBusd
! // =============================================================================
! var root = 'eBus'; // root of state inside 'javascript.0'
! var host = 'RPi2-2'; // set to your host running ebusd
! var port = 8888; // default ebusd port
! var logging = false; // "true" oder "false" wenn nicht gewünscht
! var net = require('net'); //
! var conn = false;
! // === pro Skript wird ein Datenpunkt abgefragt ## hier die beiden Werte anpassen=============
! var element = 'ReturnTemp'; // Hier Name des element eintragen
! var elementName = "Rücklauftemperatur"; // Hier die Bezeichnung für das element eintragen
! // ===========================================================================================
! // ebusctl read -f FlowTemp
! // 51.19;ok
! // =============================================================================
! var req = 'read -f ' + element;
! var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz
! // =============================================================================
! // Datenpunkte anlegen
! // =============================================================================
! createState(pfad, 0, {name: elementName ,rolle: 'value.temperature' ,type: 'string',unit: '°C'});
! // –-------------------------------------------------------- Start
! if (logging) log('1. Start trying eBus abfrage');
! var client = new net.Socket();
! client.connect(port, host, function() {
! if (logging) log('2. Connected to ebusd on ' + host + ':' + port);
! conn = true;
! client.write(req + '\n');
! if (logging) log('3. TX-Befehl: "' + req + '" wird gesendet');
! });
! // =============================================================================
! // Funktion Daten abfragen
! // =============================================================================
! function parse(data) {
! var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt
! if (logging) log("Menge : " + arr.length);
! var fields = data.toString().split(';'); // hier wird auf den = getriggert
! if (logging) log('Felder : ' + fields);
! if(fields.length > 1) { // wenn mehrere Felder gefunden wurden
! if (logging) log('WertVor : ' + fields[0]);
! var WertVor =fields[0];
! if (logging) log("WertNach: " + fields[1]);
! fields[0] = fields[0].replace(' ','_');
! if (logging) log("Feld 1 : " + fields[0]);
! if (logging) log("Feld 2 : " + fields[1]);
! setState(pfad, WertVor); // Werte setzen
! }
! }
! // =============================================================================
! // Daten abfragen
! // =============================================================================
! var databuf = '';
! client.on('data', function(data) {
! var prev = 0, next;
! var datastr = data.toString();
! if (logging) log("4. RX-Daten : " + datastr);
! while ((next = datastr.indexOf('\n\n', prev)) > -1) {
! databuf += datastr.substring(prev, next);
! parse(databuf);
! databuf = '';
! prev = next + 1;
! }
! databuf += datastr.substring(prev);
! client.write('quit\n');
! });
! // =============================================================================
! // ? Ende
! // =============================================================================
! client.on('close', function() {
! conn = false;
! log('Connection to ebusd closed');
! });
! // =============================================================================
! // Funktion aufrufen
! // =============================================================================
! function getData() {
! client.connect(port, host, function() {
! if (logging) log('Connected to ebusd on ' + host + ':' + port);
! client.write(req + '\n');
! if (logging) log('TX-Befehl: "' + req + '" wird gesendet');
! });
! }
! schedule('*/1 * * * *', getData); `
nun möchte ich diese Abfrage in einer Schleife mit verschiedenen "elementen" durchlaufen. Das bekomme ich nicht hin.2017-12-26 05:30:09.286 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_2 2017-12-26 05:30:09.292 - info: javascript.0 script.js.ebusd.eBus_anfang_2: --> Start -> es gibt 3 Elemente 2017-12-26 05:30:09.294 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt 2017-12-26 05:30:09.294 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 function mit Werten : read -f PrEnergySumHwc1 # PrEnergySumHwc1 # Betriebsstunden im Heizbetrieb = aufrufen 2017-12-26 05:30:09.295 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.->function wird abgearbeitet 2017-12-26 05:30:09.296 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsversuch zu : RPi2-2:8888 2017-12-26 05:30:09.297 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt 2017-12-26 05:30:09.298 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 function mit Werten : read -f PrEnergyCountHwc1 # PrEnergyCountHwc1 # Betriebsstunden = aufrufen 2017-12-26 05:30:09.298 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.->function wird abgearbeitet 2017-12-26 05:30:09.298 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.1 Verbindungsversuch zu : RPi2-2:8888 2017-12-26 05:30:09.299 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt 2017-12-26 05:30:09.300 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 function mit Werten : read -f HcHours # HcHours # Stunden = aufrufen 2017-12-26 05:30:09.301 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.->function wird abgearbeitet 2017-12-26 05:30:09.303 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.2 Verbindungsversuch zu : RPi2-2:8888 2017-12-26 05:30:09.305 - info: javascript.0 script.js.ebusd.eBus_anfang_2: registered 0 subscriptions and 1 schedule 2017-12-26 05:30:09.308 - info: javascript.0 script.js.ebusd.eBus_anfang_2: :-( .3 Es ist ein Fehler aufgetreten : Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:45462) 2017-12-26 05:30:09.311 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.3 Verbindung geschlossen . 2017-12-26 05:30:09.311 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.3 Verbindung geschlossen . 2017-12-26 05:30:09.311 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.3 Verbindung geschlossen .
Habe mit den Ziffern versucht den Ablauf des Scripts nachzuvollziehen
Aktueller Stand der noch fehlerhaft ist:
! // =============================================================================
! // –- Abfragen von Werten vom "ebusd"
! // =============================================================================
! var logging = true; // "true" oder "false" wenn nicht gewünscht
! var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft
! var PORT = 8888; // Portnummer auf dem der ebusd hört
! //var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll
! //var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen
! //var req = 'read -f ' + element; // der Befehl wird zusammengesetzt
! //var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden
! // =============================================================================
! var net = require('net');
! var client = new net.Socket();
! // =============================================================================
! Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours'];
! ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ];
! // =============================================================================
! // =============================================================================
! // Datenpunkte anlegen und ddie "Elemente" abfragen
! // =============================================================================
! if (logging) log('–> Start -> es gibt ' + Elemente.length + ' Elemente');
! for(var i=0;i <elemente.length;i++) {<br="">var pfad = 'eBus.Temperatur.'+ Elemente__; // Pfad innerhalb der Instanz wo die Daten gespeichert werden
! createState(pfad, 0, {name: ElementeNamen__});
! if (logging) log('0.' + i + ' Datenpunkt: ' + pfad + ' -> ' + ElementeNamen + ' angelegt');
! // –- hier dann die function mit werten aufrufen
! var req = 'read -f ' + Elemente; // der Befehl wird zusammengesetzt
! var ele = Elemente__;
! var eleN = ElementeNamen__;
! if (logging) log('0.' + i + ' function mit Werten : ' + req + ' # ' + ele + ' # ' + eleN + ' = aufrufen');
! readElement(req, ele, eleN);
! }
! // =============================================================================
! // –- function zum Abfragen der Werte
! // =============================================================================
! function readElement(req, ele, eleN){
! if (logging) log('0.->function wird abgearbeitet');
! if (logging) log('1.' + i + ' Verbindungsversuch zu : ' + HOST + ':' + PORT);
! // =============================================================================
! // --- Aufruf --- Verbindungsaufbau und Befehl absetzen
! // =============================================================================
! client.connect(PORT, HOST, function Verbindungsaufbau(){
! if (logging) log('1.' + i + ' Verbindungsaufbau zu : ' + HOST + ':' + PORT);
! client.write(req + '\n');
! if (logging) log('2.' + i + ' BEFEHL wurde gesendet : ' + req);
! });
! // =============================================================================
! // =============================================================================
! // --- Aufruf --- DATEN lesen
! // =============================================================================
! client.on('data', function(data) {
! if (logging) log('3.' + i + ' Daten werden empfangen : ' + data);
! client.destroy();
! // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) ---
! var datastr = data.toString();
! if (logging) log('3a.' + i + ' RX-Daten (String) : ' + datastr);
! //------------------------------------------------------------------------------
! var databuf = '';
! var prev = 0, next;
! if (logging) log('3b.' + i + 'Durchlauf : ' + prev);
! while ((next = datastr.indexOf('\n\n', prev)) > -1) {
! databuf += datastr.substring(prev, next);
! if (logging) log('3c.' + i + ' Funktion aufrufen mit : ' + databuf + " als Daten");
! //--- SUB-Funktion aufrufen ---
! parse(databuf);
! databuf = ''; // Datenbuffer leeren
! prev = next + 1;
! }
! databuf += datastr.substring(prev);
! client.write('quit\n');
! //------------------------------------------------------------------------------
! });
! // =============================================================================
! // =============================================================================
! // --- Aufruf --- Verbindungsabbau
! // =============================================================================
! client.on('close', function Verbindungsabbau() {
! if (logging) log('4.' + i + ' Verbindung geschlossen .');
! });
! // =============================================================================
! }
! // =============================================================================
! // --- SUB-Funktion --- Daten-String aufteilen
! // =============================================================================
! function parse(data) {
! var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt
! if (logging) log("3d.' + i + ' Menge an Daten durch ; getrennt : " + arr.length);
! var fields = data.toString().split(';'); // hier wird auf den = getriggert
! if (logging) log('anzahl an Feldern : ' + fields.length);
! if(fields.length > 0) { // wenn mehrere Felder gefunden wurden
! if (logging) log('WertVor : ' + fields[0]);
! var WertVor =fields[0];
! if (logging) log("WertNach : " + fields[1]);
! fields[0] = fields[0].replace(' ','');
! if (logging) log("Feld 1 : " + fields[0]);
! if (logging) log("Feld 2 : " + fields[1]);
! setState(pfad, WertVor); // Werte setzen
! if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert');
! }
! }
! // =============================================================================
! // =============================================================================
! // –- Function --- Fehler abfangen und ausgeben
! // =============================================================================
! client.on('error', function(err) {
! if (logging) log(':-( .' + i + ' Es ist ein Fehler aufgetreten : '+ err)
! });
! // =============================================================================
! schedule("1 0 * * *", readElement);___________</elemente.length;i++)> _________GrußJürgen_________
-
Kann man dem Client mehrere Anfragen gleichzeitig senden? Oder muss man immer einzeln Befehle senden? `
Ich denke nicht. Das soll er eigentlich auch nicht.Folgender Script funktioniert "eBus_read-f (ReturnTemp)"
! // =============================================================================
! // Auslesen von Einzelwerten vom eBusd
! // =============================================================================
! var root = 'eBus'; // root of state inside 'javascript.0'
! var host = 'RPi2-2'; // set to your host running ebusd
! var port = 8888; // default ebusd port
! var logging = false; // "true" oder "false" wenn nicht gewünscht
! var net = require('net'); //
! var conn = false;
! // === pro Skript wird ein Datenpunkt abgefragt ## hier die beiden Werte anpassen=============
! var element = 'ReturnTemp'; // Hier Name des element eintragen
! var elementName = "Rücklauftemperatur"; // Hier die Bezeichnung für das element eintragen
! // ===========================================================================================
! // ebusctl read -f FlowTemp
! // 51.19;ok
! // =============================================================================
! var req = 'read -f ' + element;
! var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz
! // =============================================================================
! // Datenpunkte anlegen
! // =============================================================================
! createState(pfad, 0, {name: elementName ,rolle: 'value.temperature' ,type: 'string',unit: '°C'});
! // –-------------------------------------------------------- Start
! if (logging) log('1. Start trying eBus abfrage');
! var client = new net.Socket();
! client.connect(port, host, function() {
! if (logging) log('2. Connected to ebusd on ' + host + ':' + port);
! conn = true;
! client.write(req + '\n');
! if (logging) log('3. TX-Befehl: "' + req + '" wird gesendet');
! });
! // =============================================================================
! // Funktion Daten abfragen
! // =============================================================================
! function parse(data) {
! var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt
! if (logging) log("Menge : " + arr.length);
! var fields = data.toString().split(';'); // hier wird auf den = getriggert
! if (logging) log('Felder : ' + fields);
! if(fields.length > 1) { // wenn mehrere Felder gefunden wurden
! if (logging) log('WertVor : ' + fields[0]);
! var WertVor =fields[0];
! if (logging) log("WertNach: " + fields[1]);
! fields[0] = fields[0].replace(' ','_');
! if (logging) log("Feld 1 : " + fields[0]);
! if (logging) log("Feld 2 : " + fields[1]);
! setState(pfad, WertVor); // Werte setzen
! }
! }
! // =============================================================================
! // Daten abfragen
! // =============================================================================
! var databuf = '';
! client.on('data', function(data) {
! var prev = 0, next;
! var datastr = data.toString();
! if (logging) log("4. RX-Daten : " + datastr);
! while ((next = datastr.indexOf('\n\n', prev)) > -1) {
! databuf += datastr.substring(prev, next);
! parse(databuf);
! databuf = '';
! prev = next + 1;
! }
! databuf += datastr.substring(prev);
! client.write('quit\n');
! });
! // =============================================================================
! // ? Ende
! // =============================================================================
! client.on('close', function() {
! conn = false;
! log('Connection to ebusd closed');
! });
! // =============================================================================
! // Funktion aufrufen
! // =============================================================================
! function getData() {
! client.connect(port, host, function() {
! if (logging) log('Connected to ebusd on ' + host + ':' + port);
! client.write(req + '\n');
! if (logging) log('TX-Befehl: "' + req + '" wird gesendet');
! });
! }
! schedule('*/1 * * * *', getData); `
nun möchte ich diese Abfrage in einer Schleife mit verschiedenen "elementen" durchlaufen. Das bekomme ich nicht hin.2017-12-26 05:30:09.286 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_2 2017-12-26 05:30:09.292 - info: javascript.0 script.js.ebusd.eBus_anfang_2: --> Start -> es gibt 3 Elemente 2017-12-26 05:30:09.294 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt 2017-12-26 05:30:09.294 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.0 function mit Werten : read -f PrEnergySumHwc1 # PrEnergySumHwc1 # Betriebsstunden im Heizbetrieb = aufrufen 2017-12-26 05:30:09.295 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.->function wird abgearbeitet 2017-12-26 05:30:09.296 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.0 Verbindungsversuch zu : RPi2-2:8888 2017-12-26 05:30:09.297 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt 2017-12-26 05:30:09.298 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.1 function mit Werten : read -f PrEnergyCountHwc1 # PrEnergyCountHwc1 # Betriebsstunden = aufrufen 2017-12-26 05:30:09.298 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.->function wird abgearbeitet 2017-12-26 05:30:09.298 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.1 Verbindungsversuch zu : RPi2-2:8888 2017-12-26 05:30:09.299 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt 2017-12-26 05:30:09.300 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.2 function mit Werten : read -f HcHours # HcHours # Stunden = aufrufen 2017-12-26 05:30:09.301 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 0.->function wird abgearbeitet 2017-12-26 05:30:09.303 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 1.2 Verbindungsversuch zu : RPi2-2:8888 2017-12-26 05:30:09.305 - info: javascript.0 script.js.ebusd.eBus_anfang_2: registered 0 subscriptions and 1 schedule 2017-12-26 05:30:09.308 - info: javascript.0 script.js.ebusd.eBus_anfang_2: :-( .3 Es ist ein Fehler aufgetreten : Error: connect EALREADY 192.168.28.144:8888 - Local (192.168.28.141:45462) 2017-12-26 05:30:09.311 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.3 Verbindung geschlossen . 2017-12-26 05:30:09.311 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.3 Verbindung geschlossen . 2017-12-26 05:30:09.311 - info: javascript.0 script.js.ebusd.eBus_anfang_2: 4.3 Verbindung geschlossen .
Habe mit den Ziffern versucht den Ablauf des Scripts nachzuvollziehen
Aktueller Stand der noch fehlerhaft ist:
! // =============================================================================
! // –- Abfragen von Werten vom "ebusd"
! // =============================================================================
! var logging = true; // "true" oder "false" wenn nicht gewünscht
! var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft
! var PORT = 8888; // Portnummer auf dem der ebusd hört
! //var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll
! //var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen
! //var req = 'read -f ' + element; // der Befehl wird zusammengesetzt
! //var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden
! // =============================================================================
! var net = require('net');
! var client = new net.Socket();
! // =============================================================================
! Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours'];
! ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ];
! // =============================================================================
! // =============================================================================
! // Datenpunkte anlegen und ddie "Elemente" abfragen
! // =============================================================================
! if (logging) log('–> Start -> es gibt ' + Elemente.length + ' Elemente');
! for(var i=0;i <elemente.length;i++) {<br="">var pfad = 'eBus.Temperatur.'+ Elemente__; // Pfad innerhalb der Instanz wo die Daten gespeichert werden
! createState(pfad, 0, {name: ElementeNamen__});
! if (logging) log('0.' + i + ' Datenpunkt: ' + pfad + ' -> ' + ElementeNamen + ' angelegt');
! // –- hier dann die function mit werten aufrufen
! var req = 'read -f ' + Elemente; // der Befehl wird zusammengesetzt
! var ele = Elemente__;
! var eleN = ElementeNamen__;
! if (logging) log('0.' + i + ' function mit Werten : ' + req + ' # ' + ele + ' # ' + eleN + ' = aufrufen');
! readElement(req, ele, eleN);
! }
! // =============================================================================
! // –- function zum Abfragen der Werte
! // =============================================================================
! function readElement(req, ele, eleN){
! if (logging) log('0.->function wird abgearbeitet');
! if (logging) log('1.' + i + ' Verbindungsversuch zu : ' + HOST + ':' + PORT);
! // =============================================================================
! // --- Aufruf --- Verbindungsaufbau und Befehl absetzen
! // =============================================================================
! client.connect(PORT, HOST, function Verbindungsaufbau(){
! if (logging) log('1.' + i + ' Verbindungsaufbau zu : ' + HOST + ':' + PORT);
! client.write(req + '\n');
! if (logging) log('2.' + i + ' BEFEHL wurde gesendet : ' + req);
! });
! // =============================================================================
! // =============================================================================
! // --- Aufruf --- DATEN lesen
! // =============================================================================
! client.on('data', function(data) {
! if (logging) log('3.' + i + ' Daten werden empfangen : ' + data);
! client.destroy();
! // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) ---
! var datastr = data.toString();
! if (logging) log('3a.' + i + ' RX-Daten (String) : ' + datastr);
! //------------------------------------------------------------------------------
! var databuf = '';
! var prev = 0, next;
! if (logging) log('3b.' + i + 'Durchlauf : ' + prev);
! while ((next = datastr.indexOf('\n\n', prev)) > -1) {
! databuf += datastr.substring(prev, next);
! if (logging) log('3c.' + i + ' Funktion aufrufen mit : ' + databuf + " als Daten");
! //--- SUB-Funktion aufrufen ---
! parse(databuf);
! databuf = ''; // Datenbuffer leeren
! prev = next + 1;
! }
! databuf += datastr.substring(prev);
! client.write('quit\n');
! //------------------------------------------------------------------------------
! });
! // =============================================================================
! // =============================================================================
! // --- Aufruf --- Verbindungsabbau
! // =============================================================================
! client.on('close', function Verbindungsabbau() {
! if (logging) log('4.' + i + ' Verbindung geschlossen .');
! });
! // =============================================================================
! }
! // =============================================================================
! // --- SUB-Funktion --- Daten-String aufteilen
! // =============================================================================
! function parse(data) {
! var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt
! if (logging) log("3d.' + i + ' Menge an Daten durch ; getrennt : " + arr.length);
! var fields = data.toString().split(';'); // hier wird auf den = getriggert
! if (logging) log('anzahl an Feldern : ' + fields.length);
! if(fields.length > 0) { // wenn mehrere Felder gefunden wurden
! if (logging) log('WertVor : ' + fields[0]);
! var WertVor =fields[0];
! if (logging) log("WertNach : " + fields[1]);
! fields[0] = fields[0].replace(' ','');
! if (logging) log("Feld 1 : " + fields[0]);
! if (logging) log("Feld 2 : " + fields[1]);
! setState(pfad, WertVor); // Werte setzen
! if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert');
! }
! }
! // =============================================================================
! // =============================================================================
! // –- Function --- Fehler abfangen und ausgeben
! // =============================================================================
! client.on('error', function(err) {
! if (logging) log(':-( .' + i + ' Es ist ein Fehler aufgetreten : '+ err)
! });
! // =============================================================================
! schedule("1 0 * * *", readElement);___________</elemente.length;i++)> _________GrußJürgen______ ______Hi,
habe es mal versucht etwas zu ändern:______
`// ============================================================================= // --- Abfragen von Werten vom "ebusd" // ============================================================================= var logging = true; // "true" oder "false" wenn nicht gewünscht var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft var PORT = 8888; // Portnummer auf dem der ebusd hört var step = -1; //var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll //var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen //var req = 'read -f ' + element; // der Befehl wird zusammengesetzt //var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden // ============================================================================= var net = require('net'); var client = new net.Socket(); // ============================================================================= Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours']; ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ]; // ============================================================================= // ============================================================================= // Datenpunkte anlegen // ============================================================================= function anlegen(){ if (logging) log('--> Start -> es gibt ' + Elemente.length + ' Elemente'); for(var i=0;i <elemente.length;i++) {/var/pfad="eBus.Temperatur." +/elemente[i];/innerhalb/der/instanz/wo/die/daten/gespeichert/werden/createstate(pfad,/0,/{name:/elementenamen[i]});/if/(logging)/log('0.'/i/'/datenpunkt:/-="">' + ElementeNamen[i] + ' angelegt'); }} // ============================================================================= // ============================================================================= // --- function zum Abfragen der Werte // ============================================================================= function readElement(){ if(Elemente.length < 1){ log('keine Elemente zum abfragen'); client.destroy(); return; } if(step < Elemente.length){step++} else{ step = -1 return; } if (logging) log('0.->Neue Abfrage'); // --- hier dann die function mit werten aufrufen var req = 'read -f ' + Elemente[step]; // der Befehl wird zusammengesetzt var ele = Elemente[step]; var eleN = ElementeNamen[step]; client.write(req + '\n'); if (logging) log('1\. BEFEHL wurde gesendet : ' + req); } // ============================================================================= // --- Aufruf --- DATEN lesen // ============================================================================= client.on('data', function(data) { if (logging) log('3\. Daten werden empfangen : ' + data); // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) --- var datastr = data.toString(); if (logging) log('3a. RX-Daten (String) : ' + datastr); //------------------------------------------------------------------------------ var databuf = ''; var prev = 0, next; if (logging) log('3b.Durchlauf : ' + prev); while ((next = datastr.indexOf('\n\n', prev)) > -1) { databuf += datastr.substring(prev, next); if (logging) log('3c. Funktion aufrufen mit : ' + databuf + " als Daten"); //--- SUB-Funktion aufrufen --- parse(databuf); databuf = ''; // Datenbuffer leeren prev = next + 1; } databuf += datastr.substring(prev); readElement();//Abfragen des nächsten Wertes //------------------------------------------------------------------------------ }); // ============================================================================= // ============================================================================= // Verbindungsabbau // ============================================================================= client.on('close', function() { if (logging) { log( 'Verbindung geschlossen .'); client.destroy(); }}); // ============================================================================= // ============================================================================= // --- SUB-Funktion --- Daten-String aufteilen // ============================================================================= function parse(data) { var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt if (logging) log("3d. Menge an Daten durch ; getrennt : " + arr.length); var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad, WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); } } // ============================================================================= // ============================================================================= // --- Function --- Fehler abfangen und ausgeben // ============================================================================= client.on('error', function(err) { client.destroy(); if (logging) log(' Es ist ein Fehler aufgetreten : '+ err); }); // ============================================================================= // ============================================================================= // Verbindungsaufbau // ============================================================================= client.connect(PORT, HOST, function(){ if (logging) log('1\. Verbindungsaufbau zu : ' + HOST + ':' + PORT); }); // ============================================================================= anlegen();//States anlegen schedule("* * * * *", readElement);</elemente.length;i++)>` da ich es aber nicht testen kann, keine Garantie das das geht. (Ist auch nur dirty zusammen geschrieben von mir) **~~[b]~~ EDIT: schedule würde ich durch setIntervall ersetzen[/b]**[/i][/i][/i] ```___ `
-
leider noch mehr Fehlermeldungen und nicht definierte Variablen
Gruß
Jürgen
-
leider noch mehr Fehlermeldungen und nicht definierte Variablen
Gruß
Jürgen `
Sorry, kannst du mir den Log Mal schicke -
leider noch mehr Fehlermeldungen und nicht definierte Variablen
Gruß
Jürgen `
Welche variablen waren nicht definiert?
element und elementName? Das hatte ich alles so von deinem Code übernommen.
Neuer Versuch:
`// ============================================================================= // --- Abfragen von Werten vom "ebusd" // ============================================================================= var logging = true; // "true" oder "false" wenn nicht gewünscht var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft var PORT = 8888; // Portnummer auf dem der ebusd hört var step = -1; //var element = 'PrEnergySumHwc1'; // Hier Name des element eintragen das abgefragt werden soll //var elementName = "Betriebsstunden im Heizbetrieb"; // Hier die Bezeichnung für das element eintragen //var req = 'read -f ' + element; // der Befehl wird zusammengesetzt //var pfad = 'eBus.Temperatur.'+ element; // Pfad innerhalb der Instanz wo die Daten gespeichert werden // ============================================================================= var net = require('net'); var client = new net.Socket(); // ============================================================================= var Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours']; var ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ]; // ============================================================================= // ============================================================================= // Datenpunkte anlegen // ============================================================================= function anlegen(){ if (logging) log('--> Start -> es gibt ' + Elemente.length + ' Elemente'); for(var i=0;i <elemente.length;i++) {/var/pfad="eBus.Temperatur." +/elemente[i];/innerhalb/der/instanz/wo/die/daten/gespeichert/werden/createstate(pfad,/0,/{name:/elementenamen[i]});/if/(logging)/log('0.'/i/'/datenpunkt:/-="">' + ElementeNamen[i] + ' angelegt'); }} // ============================================================================= // ============================================================================= // --- function zum Abfragen der Werte // ============================================================================= function readElement(){ if(Elemente.length < 1){ log('keine Elemente zum abfragen'); client.destroy(); return; } if(step < Elemente.length){step++} else{ step = -1; setTimeout(readElement, 60000); //Wenn alle Werte abgefragt sind--> Neustart in 1 Minute return; } if (logging) log('0.->Neue Abfrage'); // --- hier dann die function mit werten aufrufen var req = 'read -f ' + Elemente[step]; // der Befehl wird zusammengesetzt var ele = Elemente[step]; var eleN = ElementeNamen[step]; client.write(req + '\n'); if (logging) log('1\. BEFEHL wurde gesendet : ' + req); } // ============================================================================= // --- Aufruf --- DATEN lesen // ============================================================================= client.on('data', function(data) { if (logging) log('3\. Daten werden empfangen : ' + data); // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) --- var datastr = data.toString(); if (logging) log('3a. RX-Daten (String) : ' + datastr); //------------------------------------------------------------------------------ var databuf = ''; var prev = 0, next; if (logging) log('3b.Durchlauf : ' + prev); while ((next = datastr.indexOf('\n\n', prev)) > -1) { databuf += datastr.substring(prev, next); if (logging) log('3c. Funktion aufrufen mit : ' + databuf + " als Daten"); //--- SUB-Funktion aufrufen --- parse(databuf); databuf = ''; // Datenbuffer leeren prev = next + 1; } databuf += datastr.substring(prev); readElement();//Abfragen des nächsten Wertes //------------------------------------------------------------------------------ }); // ============================================================================= // ============================================================================= // Verbindungsabbau // ============================================================================= client.on('close', function() { if (logging) { log( 'Verbindung geschlossen .'); client.destroy(); }}); // ============================================================================= // ============================================================================= // --- SUB-Funktion --- Daten-String aufteilen // ============================================================================= function parse(data) { var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt if (logging) log("3d. Menge an Daten durch ; getrennt : " + arr.length); var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad, WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); } } // ============================================================================= // ============================================================================= // --- Function --- Fehler abfangen und ausgeben // ============================================================================= client.on('error', function(err) { client.destroy(); if (logging) log(' Es ist ein Fehler aufgetreten : '+ err); }); // ============================================================================= // ============================================================================= // Verbindungsaufbau // ============================================================================= client.connect(PORT, HOST, function(){ readElement(); if (logging) log('1\. Verbindungsaufbau zu : ' + HOST + ':' + PORT); }); // ============================================================================= anlegen();//States anlegen //setInterval(readElement, 60000);</elemente.length;i++)>`[/i][/i][/i]
-
Die Fehlermeldung:
! ````
2017-12-26 14:13:03.914 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_4
2017-12-26 14:13:03.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4: --> Start -> es gibt 3 Elemente
2017-12-26 14:13:03.942 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 14:13:03.943 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: registered 0 subscriptions and 0 schedules
2017-12-26 14:13:04.036 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.->Neue Abfrage
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 14:13:04.191 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3. Daten werden empfangen : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3a. RX-Daten (String) : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3b.Durchlauf : 0
2017-12-26 14:13:04.193 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3c. Funktion aufrufen mit : 9185796 als Daten
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: anzahl an Feldern : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertVor : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertNach : undefined
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 1 : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 2 : undefined
2017-12-26 14:13:04.212 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:04.212 - error: javascript.0 ReferenceError: pfad is not defined
at parse (script.js.ebusd.eBus_anfang_4:112:10)
at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.224 - info: javascript.0 terminating
2017-12-26 14:13:04.266 - error: Caught by controller[0]: ReferenceError: pfad is not defined
2017-12-26 14:13:04.267 - error: Caught by controller[0]: at parse (script.js.ebusd.eBus_anfang_4:112:10)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at emitOne (events.js:96:13)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket.emit (events.js:188:7)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.270 - error: host.ioBmaster instance system.adapter.javascript.0 terminated with code 0 (OK)
2017-12-26 14:13:04.270 - info: host.ioBmaster Restart adapter system.adapter.javascript.0 because enabled</anonymous></anonymous>2017-12-26 14:13:37.208 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:37.209 - error: javascript.0 ReferenceError: pfad is not defined -
Die Fehlermeldung:
! ````
2017-12-26 14:13:03.914 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_4
2017-12-26 14:13:03.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4: --> Start -> es gibt 3 Elemente
2017-12-26 14:13:03.942 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 14:13:03.943 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: registered 0 subscriptions and 0 schedules
2017-12-26 14:13:04.036 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.->Neue Abfrage
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 14:13:04.191 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3. Daten werden empfangen : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3a. RX-Daten (String) : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3b.Durchlauf : 0
2017-12-26 14:13:04.193 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3c. Funktion aufrufen mit : 9185796 als Daten
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: anzahl an Feldern : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertVor : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertNach : undefined
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 1 : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 2 : undefined
2017-12-26 14:13:04.212 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:04.212 - error: javascript.0 ReferenceError: pfad is not defined
at parse (script.js.ebusd.eBus_anfang_4:112:10)
at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.224 - info: javascript.0 terminating
2017-12-26 14:13:04.266 - error: Caught by controller[0]: ReferenceError: pfad is not defined
2017-12-26 14:13:04.267 - error: Caught by controller[0]: at parse (script.js.ebusd.eBus_anfang_4:112:10)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at emitOne (events.js:96:13)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket.emit (events.js:188:7)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.270 - error: host.ioBmaster instance system.adapter.javascript.0 terminated with code 0 (OK)
2017-12-26 14:13:04.270 - info: host.ioBmaster Restart adapter system.adapter.javascript.0 because enabled</anonymous></anonymous>2017-12-26 14:13:37.208 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:37.209 - error: javascript.0 ReferenceError: pfad is not defined
```` `
Gut, die Abfrage scheint ja jetzt schonmal zu gehen. Das zerlegen der Antwort habe ich mir nicht angeschaut, aber dort ist pfad nicht deklariert. -
Die Fehlermeldung:
! ````
2017-12-26 14:13:03.914 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_4
2017-12-26 14:13:03.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4: --> Start -> es gibt 3 Elemente
2017-12-26 14:13:03.942 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 14:13:03.943 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: registered 0 subscriptions and 0 schedules
2017-12-26 14:13:04.036 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.->Neue Abfrage
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 14:13:04.191 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3. Daten werden empfangen : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3a. RX-Daten (String) : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3b.Durchlauf : 0
2017-12-26 14:13:04.193 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3c. Funktion aufrufen mit : 9185796 als Daten
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: anzahl an Feldern : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertVor : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertNach : undefined
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 1 : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 2 : undefined
2017-12-26 14:13:04.212 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:04.212 - error: javascript.0 ReferenceError: pfad is not defined
at parse (script.js.ebusd.eBus_anfang_4:112:10)
at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.224 - info: javascript.0 terminating
2017-12-26 14:13:04.266 - error: Caught by controller[0]: ReferenceError: pfad is not defined
2017-12-26 14:13:04.267 - error: Caught by controller[0]: at parse (script.js.ebusd.eBus_anfang_4:112:10)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at emitOne (events.js:96:13)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket.emit (events.js:188:7)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.270 - error: host.ioBmaster instance system.adapter.javascript.0 terminated with code 0 (OK)
2017-12-26 14:13:04.270 - info: host.ioBmaster Restart adapter system.adapter.javascript.0 because enabled</anonymous></anonymous>2017-12-26 14:13:37.208 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:37.209 - error: javascript.0 ReferenceError: pfad is not defined
````Gut, die Abfrage scheint ja jetzt schonmal zu gehen. Das zerlegen der Antwort habe ich mir nicht angeschaut, aber dort ist pfad nicht deklariert.
er versucht doch da die Werte weg zu schreibensetState(pfad, WertVor); // Werte setzen
die var "pfad" wird nicht mit übergeben?
-
Die Fehlermeldung:
! ````
2017-12-26 14:13:03.914 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_4
2017-12-26 14:13:03.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4: --> Start -> es gibt 3 Elemente
2017-12-26 14:13:03.942 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.0 Datenpunkt: eBus.Temperatur.PrEnergySumHwc1 -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 14:13:03.943 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.1 Datenpunkt: eBus.Temperatur.PrEnergyCountHwc1 -> Betriebsstunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.2 Datenpunkt: eBus.Temperatur.HcHours -> Stunden angelegt
2017-12-26 14:13:03.944 - info: javascript.0 script.js.ebusd.eBus_anfang_4: registered 0 subscriptions and 0 schedules
2017-12-26 14:13:04.036 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 0.->Neue Abfrage
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 14:13:04.038 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 14:13:04.191 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3. Daten werden empfangen : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3a. RX-Daten (String) : 9185796
! 2017-12-26 14:13:04.192 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3b.Durchlauf : 0
2017-12-26 14:13:04.193 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3c. Funktion aufrufen mit : 9185796 als Daten
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: anzahl an Feldern : 1
2017-12-26 14:13:04.195 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertVor : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: WertNach : undefined
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 1 : 9185796
2017-12-26 14:13:04.196 - info: javascript.0 script.js.ebusd.eBus_anfang_4: Feld 2 : undefined
2017-12-26 14:13:04.212 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:04.212 - error: javascript.0 ReferenceError: pfad is not defined
at parse (script.js.ebusd.eBus_anfang_4:112:10)
at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.224 - info: javascript.0 terminating
2017-12-26 14:13:04.266 - error: Caught by controller[0]: ReferenceError: pfad is not defined
2017-12-26 14:13:04.267 - error: Caught by controller[0]: at parse (script.js.ebusd.eBus_anfang_4:112:10)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4:74:1)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at emitOne (events.js:96:13)
2017-12-26 14:13:04.269 - error: Caught by controller[0]: at Socket.emit (events.js:188:7)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 14:13:04.270 - error: Caught by controller[0]: at TCP.onread (net.js:547:20)
2017-12-26 14:13:04.270 - error: host.ioBmaster instance system.adapter.javascript.0 terminated with code 0 (OK)
2017-12-26 14:13:04.270 - info: host.ioBmaster Restart adapter system.adapter.javascript.0 because enabled</anonymous></anonymous>2017-12-26 14:13:37.208 - error: javascript.0 uncaught exception: pfad is not defined
2017-12-26 14:13:37.209 - error: javascript.0 ReferenceError: pfad is not defined
````Gut, die Abfrage scheint ja jetzt schonmal zu gehen. Das zerlegen der Antwort habe ich mir nicht angeschaut, aber dort ist pfad nicht deklariert.
er versucht doch da die Werte weg zu schreibensetState(pfad, WertVor); // Werte setzen
die var "pfad" wird nicht mit übergeben? `
Bin gleich am pcEDIT:
`// ============================================================================= // --- Abfragen von Werten vom "ebusd" // ============================================================================= var logging = true; // "true" oder "false" wenn nicht gewünscht var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft var PORT = 8888; // Portnummer auf dem der ebusd hört var step = -1; var pfad = 'eBus.Temperatur.'; // Pfad innerhalb der Instanz wo die Daten gespeichert werden // ============================================================================= var net = require('net'); var client = new net.Socket(); // ============================================================================= var Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours']; var ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ]; // ============================================================================= // ============================================================================= // Datenpunkte anlegen // ============================================================================= function anlegen(){ if (logging) log('--> Start -> es gibt ' + Elemente.length + ' Elemente'); for(var i=0;i <elemente.length;i++) {/createstate(pfad/+/elemente[i],/0,/{name:/elementenamen[i]});/if/(logging)/log('0.'/i/'/datenpunkt:/pfad/-="">' + ElementeNamen[i] + ' angelegt'); }} // ============================================================================= // ============================================================================= // --- function zum Abfragen der Werte // ============================================================================= function readElement(){ if(Elemente.length < 1){ log('keine Elemente zum abfragen'); client.destroy(); return; } if(step < Elemente.length){step++} else{ step = -1; setTimeout(readElement, 60000); //Wenn alle Werte abgefragt sind--> Neustart in 1 Minute return; } if (logging) log('0.->Neue Abfrage'); // --- hier dann die function mit werten aufrufen var req = 'read -f ' + Elemente[step]; // der Befehl wird zusammengesetzt var ele = Elemente[step]; var eleN = ElementeNamen[step]; client.write(req + '\n'); if (logging) log('1\. BEFEHL wurde gesendet : ' + req); } // ============================================================================= // --- Aufruf --- DATEN lesen // ============================================================================= client.on('data', function(data) { if (logging) log('3\. Daten werden empfangen : ' + data); // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) --- var datastr = data.toString(); if (logging) log('3a. RX-Daten (String) : ' + datastr); //------------------------------------------------------------------------------ var databuf = ''; var prev = 0, next; if (logging) log('3b.Durchlauf : ' + prev); while ((next = datastr.indexOf('\n\n', prev)) > -1) { databuf += datastr.substring(prev, next); if (logging) log('3c. Funktion aufrufen mit : ' + databuf + " als Daten"); //--- SUB-Funktion aufrufen --- parse(databuf); databuf = ''; // Datenbuffer leeren prev = next + 1; } databuf += datastr.substring(prev); readElement();//Abfragen des nächsten Wertes //------------------------------------------------------------------------------ }); // ============================================================================= // ============================================================================= // Verbindungsabbau // ============================================================================= client.on('close', function() { if (logging) { log( 'Verbindung geschlossen .'); client.destroy(); }}); // ============================================================================= // ============================================================================= // --- SUB-Funktion --- Daten-String aufteilen // ============================================================================= function parse(data) { var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt if (logging) log("3d. Menge an Daten durch ; getrennt : " + arr.length); var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad + Elemente[step], WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); } } // ============================================================================= // ============================================================================= // --- Function --- Fehler abfangen und ausgeben // ============================================================================= client.on('error', function(err) { client.destroy(); if (logging) log(' Es ist ein Fehler aufgetreten : '+ err); }); // ============================================================================= // ============================================================================= // Verbindungsaufbau // ============================================================================= client.connect(PORT, HOST, function(){ readElement(); if (logging) log('1\. Verbindungsaufbau zu : ' + HOST + ':' + PORT); }); // ============================================================================= anlegen();//States anlegen //setInterval(readElement, 60000);</elemente.length;i++)>`[/i][/i][/i]
-
schon besser:
log
! ````
2017-12-26 14:56:00.653 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_4_blauholsten
2017-12-26 14:56:00.662 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: --> Start -> es gibt 3 Elemente
2017-12-26 14:56:00.664 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.0 Datenpunkt: eBus.Temperatur. -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 14:56:00.664 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.1 Datenpunkt: eBus.Temperatur. -> Betriebsstunden angelegt
2017-12-26 14:56:00.665 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.2 Datenpunkt: eBus.Temperatur. -> Stunden angelegt
2017-12-26 14:56:00.667 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: registered 0 subscriptions and 0 schedules
2017-12-26 14:56:00.730 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:00.731 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 14:56:00.731 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 14:56:00.858 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 9185796
! 2017-12-26 14:56:00.858 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 9185796
! 2017-12-26 14:56:00.859 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:00.859 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 9185796 als Daten
2017-12-26 14:56:00.860 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 9185796
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 9185796
2017-12-26 14:56:00.862 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:00.863 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "9185796" gespeichert
2017-12-26 14:56:00.863 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:00.864 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergyCountHwc1
2017-12-26 14:56:01.014 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 30891
! 2017-12-26 14:56:01.015 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 30891
! 2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 30891 als Daten
2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 30891
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 30891
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.018 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "30891" gespeichert
2017-12-26 14:56:01.019 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:01.020 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f HcHours
2017-12-26 14:56:01.890 - info: sql.0 No Data
2017-12-26 14:56:01.937 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 567
! 2017-12-26 14:56:01.937 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 567
! 2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 567 als Daten
2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 567
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 567
2017-12-26 14:56:01.940 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.941 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "567" gespeichert
2017-12-26 14:56:01.941 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:01.942 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f undefined
2017-12-26 14:56:01.951 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : ERR: element not found
! 2017-12-26 14:56:01.952 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : ERR: element not found
! 2017-12-26 14:56:01.952 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : ERR: element not found als Daten
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.954 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : ERR: element not found
2017-12-26 14:56:01.954 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.955 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : ERR:_element not found
2017-12-26 14:56:01.955 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.956 - warn: javascript.0 State "eBus.Temperatur.undefined" not found
2017-12-26 14:56:01.970 - warn: javascript.0 at parse (script.js.ebusd.eBus_anfang_4_blauholsten:108:1)
2017-12-26 14:56:01.971 - warn: javascript.0 at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4_blauholsten:70:1)
2017-12-26 14:56:01.971 - warn: javascript.0 at emitOne (events.js:96:13)
2017-12-26 14:56:01.972 - warn: javascript.0 at Socket.emit (events.js:188:7)
2017-12-26 14:56:01.972 - warn: javascript.0 at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 14:56:01.972 - warn: javascript.0 at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 14:56:01.973 - warn: javascript.0 at TCP.onread (net.js:547:20)
2017-12-26 14:56:01.973 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "ERR: element not found" gespeichert</anonymous>nun wird ein durchlauf zuviel gestartet
-
schon besser:
log
! ````
2017-12-26 14:56:00.653 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_4_blauholsten
2017-12-26 14:56:00.662 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: --> Start -> es gibt 3 Elemente
2017-12-26 14:56:00.664 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.0 Datenpunkt: eBus.Temperatur. -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 14:56:00.664 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.1 Datenpunkt: eBus.Temperatur. -> Betriebsstunden angelegt
2017-12-26 14:56:00.665 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.2 Datenpunkt: eBus.Temperatur. -> Stunden angelegt
2017-12-26 14:56:00.667 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: registered 0 subscriptions and 0 schedules
2017-12-26 14:56:00.730 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:00.731 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 14:56:00.731 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 14:56:00.858 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 9185796
! 2017-12-26 14:56:00.858 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 9185796
! 2017-12-26 14:56:00.859 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:00.859 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 9185796 als Daten
2017-12-26 14:56:00.860 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 9185796
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 9185796
2017-12-26 14:56:00.862 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:00.863 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "9185796" gespeichert
2017-12-26 14:56:00.863 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:00.864 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergyCountHwc1
2017-12-26 14:56:01.014 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 30891
! 2017-12-26 14:56:01.015 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 30891
! 2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 30891 als Daten
2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 30891
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 30891
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.018 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "30891" gespeichert
2017-12-26 14:56:01.019 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:01.020 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f HcHours
2017-12-26 14:56:01.890 - info: sql.0 No Data
2017-12-26 14:56:01.937 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 567
! 2017-12-26 14:56:01.937 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 567
! 2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 567 als Daten
2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 567
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 567
2017-12-26 14:56:01.940 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.941 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "567" gespeichert
2017-12-26 14:56:01.941 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:01.942 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f undefined
2017-12-26 14:56:01.951 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : ERR: element not found
! 2017-12-26 14:56:01.952 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : ERR: element not found
! 2017-12-26 14:56:01.952 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : ERR: element not found als Daten
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.954 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : ERR: element not found
2017-12-26 14:56:01.954 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.955 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : ERR:_element not found
2017-12-26 14:56:01.955 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.956 - warn: javascript.0 State "eBus.Temperatur.undefined" not found
2017-12-26 14:56:01.970 - warn: javascript.0 at parse (script.js.ebusd.eBus_anfang_4_blauholsten:108:1)
2017-12-26 14:56:01.971 - warn: javascript.0 at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4_blauholsten:70:1)
2017-12-26 14:56:01.971 - warn: javascript.0 at emitOne (events.js:96:13)
2017-12-26 14:56:01.972 - warn: javascript.0 at Socket.emit (events.js:188:7)
2017-12-26 14:56:01.972 - warn: javascript.0 at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 14:56:01.972 - warn: javascript.0 at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 14:56:01.973 - warn: javascript.0 at TCP.onread (net.js:547:20)
2017-12-26 14:56:01.973 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "ERR: element not found" gespeichert</anonymous>nun wird ein durchlauf zuviel gestartet `
Joo, Fehler habe ich denke erkannt. Melde mich nachher noch mal
EDIT:
kannst du es mal probieren? Und nochmals eine Info geben. Bin leider nicht an meinen Heim PC
`// ============================================================================= // --- Abfragen von Werten vom "ebusd" // ============================================================================= var logging = true; // "true" oder "false" wenn nicht gewünscht var HOST = 'RPi2-2'; // Hostname oder IP-Adresse auf dem der ebusd läuft var PORT = 8888; // Portnummer auf dem der ebusd hört var step = -1; var pfad = 'eBus.Temperatur.'; // Pfad innerhalb der Instanz wo die Daten gespeichert werden // ============================================================================= var net = require('net'); var client = new net.Socket(); // ============================================================================= var Elemente = ['PrEnergySumHwc1','PrEnergyCountHwc1','HcHours']; var ElementeNamen = ['Betriebsstunden im Heizbetrieb','Betriebsstunden','Stunden' ]; // ============================================================================= // ============================================================================= // Datenpunkte anlegen // ============================================================================= function anlegen(){ if (logging) log('--> Start -> es gibt ' + Elemente.length + ' Elemente'); for(var i=0;i <elemente.length;i++) {/createstate(pfad/+/elemente[i],/0,/{name:/elementenamen[i]});/if/(logging)/log('0.'/i/'/datenpunkt:/pfad/-="">' + ElementeNamen[i] + ' angelegt'); }} // ============================================================================= // ============================================================================= // --- function zum Abfragen der Werte // ============================================================================= function readElement(){ if(Elemente.length < 1){ log('keine Elemente zum abfragen'); client.destroy(); return; } if(step < Elemente.length){ step++ if (logging) log('0.->Neue Abfrage'); // --- hier dann die function mit werten aufrufen var req = 'read -f ' + Elemente[step]; // der Befehl wird zusammengesetzt var ele = Elemente[step]; var eleN = ElementeNamen[step]; client.write(req + '\n'); if (logging) log('1\. BEFEHL wurde gesendet : ' + req); } else{ step = -1; setTimeout(readElement, 60000); //Wenn alle Werte abgefragt sind--> Neustart in 1 Minute return; } } // ============================================================================= // --- Aufruf --- DATEN lesen // ============================================================================= client.on('data', function(data) { if (logging) log('3\. Daten werden empfangen : ' + data); // --- die empfangenen Daten werden gewandelt und aufgeteilt (SUB-Funktion) --- var datastr = data.toString(); if (logging) log('3a. RX-Daten (String) : ' + datastr); //------------------------------------------------------------------------------ var databuf = ''; var prev = 0, next; if (logging) log('3b.Durchlauf : ' + prev); while ((next = datastr.indexOf('\n\n', prev)) > -1) { databuf += datastr.substring(prev, next); if (logging) log('3c. Funktion aufrufen mit : ' + databuf + " als Daten"); //--- SUB-Funktion aufrufen --- parse(databuf); databuf = ''; // Datenbuffer leeren prev = next + 1; } databuf += datastr.substring(prev); readElement();//Abfragen des nächsten Wertes //------------------------------------------------------------------------------ }); // ============================================================================= // ============================================================================= // Verbindungsabbau // ============================================================================= client.on('close', function() { if (logging) { log( 'Verbindung geschlossen .'); client.destroy(); }}); // ============================================================================= // ============================================================================= // --- SUB-Funktion --- Daten-String aufteilen // ============================================================================= function parse(data) { var arr = data.toString().split(/\r?;/); // wie viele Werte werden durch ";" getrennt if (logging) log("3d. Menge an Daten durch ; getrennt : " + arr.length); var fields = data.toString().split('\;'); // hier wird auf den = getriggert if (logging) log('anzahl an Feldern : ' + fields.length); if(fields.length > 0) { // wenn mehrere Felder gefunden wurden if (logging) log('WertVor : ' + fields[0]); var WertVor =fields[0]; if (logging) log("WertNach : " + fields[1]); fields[0] = fields[0].replace(' ','_'); if (logging) log("Feld 1 : " + fields[0]); if (logging) log("Feld 2 : " + fields[1]); setState(pfad + Elemente[step], WertVor); // Werte setzen if (logging) log('im Datenpunkt "' +pfad + '" wird "' + WertVor + '" gespeichert'); } } // ============================================================================= // ============================================================================= // --- Function --- Fehler abfangen und ausgeben // ============================================================================= client.on('error', function(err) { client.destroy(); if (logging) log(' Es ist ein Fehler aufgetreten : '+ err); }); // ============================================================================= // ============================================================================= // Verbindungsaufbau // ============================================================================= client.connect(PORT, HOST, function(){ readElement(); if (logging) log('1\. Verbindungsaufbau zu : ' + HOST + ':' + PORT); }); // ============================================================================= anlegen();//States anlegen //setInterval(readElement, 60000);</elemente.length;i++)>`[/i][/i][/i]
-
schon besser:
log
! ````
2017-12-26 14:56:00.653 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_4_blauholsten
2017-12-26 14:56:00.662 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: --> Start -> es gibt 3 Elemente
2017-12-26 14:56:00.664 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.0 Datenpunkt: eBus.Temperatur. -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 14:56:00.664 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.1 Datenpunkt: eBus.Temperatur. -> Betriebsstunden angelegt
2017-12-26 14:56:00.665 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.2 Datenpunkt: eBus.Temperatur. -> Stunden angelegt
2017-12-26 14:56:00.667 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: registered 0 subscriptions and 0 schedules
2017-12-26 14:56:00.730 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:00.731 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 14:56:00.731 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 14:56:00.858 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 9185796
! 2017-12-26 14:56:00.858 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 9185796
! 2017-12-26 14:56:00.859 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:00.859 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 9185796 als Daten
2017-12-26 14:56:00.860 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 9185796
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:00.861 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 9185796
2017-12-26 14:56:00.862 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:00.863 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "9185796" gespeichert
2017-12-26 14:56:00.863 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:00.864 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergyCountHwc1
2017-12-26 14:56:01.014 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 30891
! 2017-12-26 14:56:01.015 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 30891
! 2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 30891 als Daten
2017-12-26 14:56:01.016 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 30891
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 30891
2017-12-26 14:56:01.017 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.018 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "30891" gespeichert
2017-12-26 14:56:01.019 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:01.020 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f HcHours
2017-12-26 14:56:01.890 - info: sql.0 No Data
2017-12-26 14:56:01.937 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : 567
! 2017-12-26 14:56:01.937 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : 567
! 2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : 567 als Daten
2017-12-26 14:56:01.938 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : 567
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.939 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : 567
2017-12-26 14:56:01.940 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.941 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "567" gespeichert
2017-12-26 14:56:01.941 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 0.->Neue Abfrage
2017-12-26 14:56:01.942 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 1. BEFEHL wurde gesendet : read -f undefined
2017-12-26 14:56:01.951 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3. Daten werden empfangen : ERR: element not found
! 2017-12-26 14:56:01.952 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3a. RX-Daten (String) : ERR: element not found
! 2017-12-26 14:56:01.952 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3b.Durchlauf : 0
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3c. Funktion aufrufen mit : ERR: element not found als Daten
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 14:56:01.953 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: anzahl an Feldern : 1
2017-12-26 14:56:01.954 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertVor : ERR: element not found
2017-12-26 14:56:01.954 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: WertNach : undefined
2017-12-26 14:56:01.955 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 1 : ERR:_element not found
2017-12-26 14:56:01.955 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: Feld 2 : undefined
2017-12-26 14:56:01.956 - warn: javascript.0 State "eBus.Temperatur.undefined" not found
2017-12-26 14:56:01.970 - warn: javascript.0 at parse (script.js.ebusd.eBus_anfang_4_blauholsten:108:1)
2017-12-26 14:56:01.971 - warn: javascript.0 at Socket. <anonymous>(script.js.ebusd.eBus_anfang_4_blauholsten:70:1)
2017-12-26 14:56:01.971 - warn: javascript.0 at emitOne (events.js:96:13)
2017-12-26 14:56:01.972 - warn: javascript.0 at Socket.emit (events.js:188:7)
2017-12-26 14:56:01.972 - warn: javascript.0 at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 14:56:01.972 - warn: javascript.0 at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 14:56:01.973 - warn: javascript.0 at TCP.onread (net.js:547:20)
2017-12-26 14:56:01.973 - info: javascript.0 script.js.ebusd.eBus_anfang_4_blauholsten: im Datenpunkt "eBus.Temperatur." wird "ERR: element not found" gespeichert</anonymous>nun wird ein durchlauf zuviel gestartet `
Probiert?
-
warn: javascript.0 State "eBus.Temperatur.undefined" not found
anbei das LOG
! ````
2017-12-26 22:13:41.044 - info: javascript.0 Start javascript script.js.ebusd.eBus_anfang_5_blauholsten
2017-12-26 22:13:41.068 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: --> Start -> es gibt 3 Elemente
2017-12-26 22:13:41.070 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 0.0 Datenpunkt: eBus.Temperatur. -> Betriebsstunden im Heizbetrieb angelegt
2017-12-26 22:13:41.071 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 0.1 Datenpunkt: eBus.Temperatur. -> Betriebsstunden angelegt
2017-12-26 22:13:41.071 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 0.2 Datenpunkt: eBus.Temperatur. -> Stunden angelegt
2017-12-26 22:13:41.072 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: registered 0 subscriptions and 0 schedules
2017-12-26 22:13:41.133 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 0.->Neue Abfrage
2017-12-26 22:13:41.141 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergySumHwc1
2017-12-26 22:13:41.142 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 1. Verbindungsaufbau zu : RPi2-2:8888
2017-12-26 22:13:41.293 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3. Daten werden empfangen : 9338400
! 2017-12-26 22:13:41.293 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3a. RX-Daten (String) : 9338400
! 2017-12-26 22:13:41.294 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3b.Durchlauf : 0
2017-12-26 22:13:41.294 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3c. Funktion aufrufen mit : 9338400 als Daten
2017-12-26 22:13:41.296 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 22:13:41.296 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: anzahl an Feldern : 1
2017-12-26 22:13:41.297 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertVor : 9338400
2017-12-26 22:13:41.297 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertNach : undefined
2017-12-26 22:13:41.297 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 1 : 9338400
2017-12-26 22:13:41.298 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 2 : undefined
2017-12-26 22:13:41.299 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: im Datenpunkt "eBus.Temperatur." wird "9338400" gespeichert
2017-12-26 22:13:41.299 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 0.->Neue Abfrage
2017-12-26 22:13:41.300 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 1. BEFEHL wurde gesendet : read -f PrEnergyCountHwc1
2017-12-26 22:13:41.452 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3. Daten werden empfangen : 31323
! 2017-12-26 22:13:41.453 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3a. RX-Daten (String) : 31323
! 2017-12-26 22:13:41.453 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3b.Durchlauf : 0
2017-12-26 22:13:41.453 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3c. Funktion aufrufen mit : 31323 als Daten
2017-12-26 22:13:41.454 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 22:13:41.454 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: anzahl an Feldern : 1
2017-12-26 22:13:41.454 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertVor : 31323
2017-12-26 22:13:41.454 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertNach : undefined
2017-12-26 22:13:41.455 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 1 : 31323
2017-12-26 22:13:41.455 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 2 : undefined
2017-12-26 22:13:41.456 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: im Datenpunkt "eBus.Temperatur." wird "31323" gespeichert
2017-12-26 22:13:41.456 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 0.->Neue Abfrage
2017-12-26 22:13:41.457 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 1. BEFEHL wurde gesendet : read -f HcHours
2017-12-26 22:13:41.604 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3. Daten werden empfangen : 572
! 2017-12-26 22:13:41.604 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3a. RX-Daten (String) : 572
! 2017-12-26 22:13:41.604 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3b.Durchlauf : 0
2017-12-26 22:13:41.605 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3c. Funktion aufrufen mit : 572 als Daten
2017-12-26 22:13:41.605 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 22:13:41.605 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: anzahl an Feldern : 1
2017-12-26 22:13:41.605 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertVor : 572
2017-12-26 22:13:41.605 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertNach : undefined
2017-12-26 22:13:41.606 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 1 : 572
2017-12-26 22:13:41.606 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 2 : undefined
2017-12-26 22:13:41.607 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: im Datenpunkt "eBus.Temperatur." wird "572" gespeichert
2017-12-26 22:13:41.607 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 0.->Neue Abfrage
2017-12-26 22:13:41.607 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 1. BEFEHL wurde gesendet : read -f undefined
2017-12-26 22:13:41.640 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3. Daten werden empfangen : ERR: element not found
! 2017-12-26 22:13:41.640 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3a. RX-Daten (String) : ERR: element not found
! 2017-12-26 22:13:41.640 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3b.Durchlauf : 0
2017-12-26 22:13:41.641 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3c. Funktion aufrufen mit : ERR: element not found als Daten
2017-12-26 22:13:41.641 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: 3d. Menge an Daten durch ; getrennt : 1
2017-12-26 22:13:41.641 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: anzahl an Feldern : 1
2017-12-26 22:13:41.641 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertVor : ERR: element not found
2017-12-26 22:13:41.641 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: WertNach : undefined
2017-12-26 22:13:41.642 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 1 : ERR:_element not found
2017-12-26 22:13:41.642 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: Feld 2 : undefined
2017-12-26 22:13:41.642 - warn: javascript.0 State "eBus.Temperatur.undefined" not found
2017-12-26 22:13:41.643 - warn: javascript.0 at parse (script.js.ebusd.eBus_anfang_5_blauholsten:110:1)
2017-12-26 22:13:41.643 - warn: javascript.0 at Socket. <anonymous>(script.js.ebusd.eBus_anfang_5_blauholsten:72:1)
2017-12-26 22:13:41.643 - warn: javascript.0 at emitOne (events.js:96:13)
2017-12-26 22:13:41.644 - warn: javascript.0 at Socket.emit (events.js:188:7)
2017-12-26 22:13:41.644 - warn: javascript.0 at readableAddChunk (_stream_readable.js:176:18)
2017-12-26 22:13:41.645 - warn: javascript.0 at Socket.Readable.push (_stream_readable.js:134:10)
2017-12-26 22:13:41.645 - warn: javascript.0 at TCP.onread (net.js:547:20)
2017-12-26 22:13:41.645 - info: javascript.0 script.js.ebusd.eBus_anfang_5_blauholsten: im Datenpunkt "eBus.Temperatur." wird "ERR: element not found" gespeichert</anonymous>