Guten Abend ruhr70,
könne nochmal deine Unterstützung brauchen wenn du so nett bist….
habe dein Skript wie folgt umgebaut:
var request = require("request");
var myJson = {};
var pfad = "Fronius_SmartMeter";
var idEnergyReal_WAC_Sum_Produced = pfad + "EnergyReal_WAC_Sum_Produced";
var idEnergyReal_WAC_Sum_Consumed = pfad + "EnergyReal_WAC_Sum_Consumed";
var idEnergyReal_WAC_Plus_Absolute = pfad + "EnergyReal_WAC_Plus_Absolute";
var idEnergyReal_WAC_Minus_Absolute = pfad + "EnergyReal_WAC_Minus_Absolute";
createState(idEnergyReal_WAC_Sum_Produced, 0, {
name: 'Sum Produced',
desc: 'Sum Produced',
type: 'number',
role: 'value',
unit: 'Wh'
});
createState(idEnergyReal_WAC_Sum_Consumed, 0, {
name: 'Sum Consumed',
desc: 'Sum Consumed',
type: 'number',
role: 'value',
unit: 'Wh'
});
createState(idEnergyReal_WAC_Plus_Absolute, 0, {
name: 'WAC Plus',
desc: 'WAC Plus',
type: 'number',
role: 'value',
unit: 'Wh'
});
createState(idEnergyReal_WAC_Minus_Absolute, 0, {
name: 'WAC Minus',
desc: 'WAC Minus',
type: 'number',
role: 'value',
unit: 'Wh'
});
function parseJson(text) {
if (text === "") return {};
try {
json = JSON.parse(text);
} catch (ex) {
json = {};
}
if(!json) json = {};
return json;
}
function readJson(url, callback) {
request(url, function (err, state, body){
if (body) {
var json = parseJson(body);
callback(null, json);
} else {
var error = "(" + err + ") ERROR bei Abfrage von: " + url;
log(error, "warn");
callback(error, null);
}
});
}
var url = 'http://10.0.0.6/solar_api/v1/GetMeterRealtimeData.cgi?Scope=Device&DeviceId=0';
function main() {
readJson(url, function(err,json) {
if(!err) {
myJson = json;
log("EnergyReal_WAC_Sum_Produced: " + myJson.Body.Data.EnergyReal_WAC_Sum_Produced.Values[1],"info");
log("EnergyReal_WAC_Sum_Consumed: " + myJson.Body.Data.EnergyReal_WAC_Sum_Consumed.Values[1],"info");
log("EnergyReal_WAC_Plus_Absolute: " + myJson.Body.Data.EnergyReal_WAC_Plus_Absolute.Values[1],"info");
log("EnergyReal_WAC_Minus_Absolute: " + myJson.Body.Data.EnergyReal_WAC_Minus_Absolute.Values[1],"info");
setState(idEnergyReal_WAC_Sum_Produced ,myJson.Body.Data.EnergyReal_WAC_Sum_Produced.Values[1]);
setState(idEnergyReal_WAC_Sum_Consumed ,myJson.Body.Data.EnergyReal_WAC_Sum_Consumed.Values[1]);
setState(idEnergyReal_WAC_Plus_Absolute ,myJson.Body.Data.EnergyReal_WAC_Plus_Absolute.Values[1]);
setState(idEnergyReal_WAC_Minus_Absolute ,myJson.Body.Data.EnergyReal_WAC_Minus_Absolute.Values[1]);
} else {
log("Fehler beim Auslesen des JSON. Keine Daten erhalten.","warn");
myJson = {};
}
});
}
schedule("*/15 * * * *", function () { // alle 15 Minuten die Werte abfragen
main();
});
// Beim Skriptstart die Werte abfragen
setTimeout(main,500);
damit ich dann diesen String auslesen kann:
{
"Head" : {
"RequestArguments" : {
"DeviceClass" : "Meter",
"DeviceId" : "0",
"Scope" : "Device"
},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2016-04-14T22:20:20+02:00"
},
"Body" : {
"Data" : {
"Details" : {
"Serial" : "15520147",
"Model" : "Fronius SmartMeter",
"Manufacturer" : "Fronius"
},
"TimeStamp" : 1460665219,
"Enable" : 1,
"Visible" : 1,
"PowerReal_P_Sum" : 7345.59,
"Meter_Location_Current" : 0,
"PowerReal_P_Phase_1" : 3272.18,
"PowerReal_P_Phase_2" : 2110.06,
"PowerReal_P_Phase_3" : 1963.35,
"PowerReactive_Q_Sum" : -96.62,
"PowerReactive_Q_Phase_1" : -71.61,
"PowerReactive_Q_Phase_2" : 38.35,
"PowerReactive_Q_Phase_3" : -63.36,
"Current_AC_Phase_1" : 14.174,
"Current_AC_Phase_2" : 9.031,
"Current_AC_Phase_3" : 8.433,
"Voltage_AC_Phase_1" : 231.2,
"Voltage_AC_Phase_2" : 233.8,
"Voltage_AC_Phase_3" : 233,
"Voltage_AC_PhaseToPhase_12" : 402.7,
"Voltage_AC_PhaseToPhase_23" : 404.3,
"Voltage_AC_PhaseToPhase_31" : 402,
"Frequency_Phase_Average" : 50,
"PowerApparent_S_Sum" : 7346,
"PowerFactor_Sum" : 0.99,
"PowerFactor_Phase_1" : 0.99,
"PowerFactor_Phase_2" : 1,
"PowerFactor_Phase_3" : 0.99,
"EnergyReal_WAC_Sum_Produced" : 345066,
"EnergyReal_WAC_Sum_Consumed" : 1113042,
"EnergyReactive_VArAC_Sum_Produced" : 769590,
"EnergyReactive_VArAC_Sum_Consumed" : 603290,
"EnergyReal_WAC_Plus_Absolute" : 1113042,
"EnergyReal_WAC_Minus_Absolute" : 345066
}
}
}
im Log steht dann aber:
22:27:40.471 [info] javascript.0 Start javascript script.js.Fronius.HausStrom.Fronius_SmartMeter
22:27:40.472 [info] javascript.0 script.js.Fronius.HausStrom.Fronius_SmartMeter: registered 0 subscriptions and 1 schedule
22:27:41.597 [error] TypeError: Cannot read property '1' of undefined at script.js.Fronius.HausStrom.Fronius_SmartMeter:75:107 at Request._callback (script.js.Fronius.HausStrom.Fronius_SmartMeter:59:13) at Request.self.callback (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:199:22) at Request.EventEmitter.emit (events.js:98:17) at Request. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:1036:10) at Request.EventEmitter.emit (events.js:117:20) at IncomingMessage. (/opt/iobroker/node_modules/iobroker.javascript/node_modules/request/request.js:963:12) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13)
Danke!!! dir SolarElch