@gargano sagte in Forecast.solar mit dem Systeminfo Adapter:
Lösch mal die Zeile
var graphData = {};
OK, damit ist der Fehler aus Zeile 121 weg - ein fehler in Zeile 90 bleibt noch. Liegt bestimmt auch an meinen Drag & Drop "Künsten" 
Im übrigen gibt es keine "makeResponse" - das hat mich sowieso gewundert.
const SolarJSON1 = "javascript.0.SolarForecast.JSON1";
const SolarJSON2 = "javascript.0.SolarForecast.JSON2";
const SolarJSONAll1 = "javascript.0.SolarForecast.JSONAll1";
const SolarJSONAll2 = "javascript.0.SolarForecast.JSONAll2";
const SolarJSONGraphAll1 = "javascript.0.SolarForecast.JSONGraphAll1";
const SolarJSONGraphAll2 = "javascript.0.SolarForecast.JSONGraphAll2";
const SolarJSONTable = "javascript.0.SolarForecast.JSONTable";
const SolarJSONGraph = "javascript.0.SolarForecast.JSONGraph";
const creatStateList = [
{name :SolarJSON1, type:"string", role : "value"},
{name :SolarJSON2, type:"string", role : "value"},
{name :SolarJSONAll1, type:"string", role : "value"},
{name :SolarJSONAll2, type:"string", role : "value"},
{name :SolarJSONGraphAll1, type:"string", role : "value"},
{name :SolarJSONGraphAll2, type:"string", role : "value"},
{name :SolarJSONTable, type:"string", role : "value"},
{name :SolarJSONGraph, type:"string", role : "value"}
]
creatStateList.forEach (function(item) {
createState(item.name, {
type: item.type,
min: 0,
def: 0,
role: item.role
});
});
var request = require('request');
var options1 = {url: 'https://api.forecast.solar/estimate/xx.35/xx.24/40/90/7.26', method: 'GET', headers: { 'User-Agent': 'request' }};
var options2 = {url: 'https://api.forecast.solar/estimate/xx.35/xx.24/40/-90/2.64', method: 'GET', headers: { 'User-Agent': 'request' }};
var urls = [
{myUrl:options1,mySolarJSON:SolarJSON1,mySolarJSONAll:SolarJSONAll1,mySolarJSONGraphAll:SolarJSONGraphAll1},
{myUrl:options2,mySolarJSON:SolarJSON2,mySolarJSONAll:SolarJSONAll2,mySolarJSONGraphAll:SolarJSONGraphAll2}
]
var promises = urls.map(myAsyncRequest);
schedule('6 6-22 * * *', getSolar);
getSolar();
function myAsyncRequest(myUrl) {
log('Request '+myUrl.myUrl.url);
return new Promise((resolve, reject) => {
request(myUrl.myUrl.url, function(error, response, body) {
if (!error && response.statusCode == 200) {
let today = formatDate(new Date(), 'YYYY-MM-DD');
let watts = JSON.parse(body).result.watts;
setState(myUrl.mySolarJSONAll, JSON.stringify(watts), true);
let table = [];
for(let time in watts) {
let pos = time.indexOf(':00:00');
if(pos != -1) {
let entry = {};
entry.Uhrzeit = time;
entry.Leistung = watts[time];
table.push(entry);
}
}
log ('JSON: '+myUrl.mySolarJSON);
setState(myUrl.mySolarJSON, JSON.stringify(table), true);
// make GraphTable
let graphTimeData = [];
for(let time in watts) {
let pos1 = time.indexOf(':00:00');
let pos2 = time.indexOf(':30:00');
if((pos1 != -1) || (pos2 != -1)) {
let graphEntry ={};
graphEntry.t = Date.parse(time);
graphEntry.y = watts[time];
graphTimeData.push(graphEntry);
}
var graph = {};
var graphData ={};
var graphAllData = [];
graphData.data = graphTimeData;
graphAllData.push(graphData);
graph.graphs=graphAllData;
setState(myUrl.mySolarJSONGraphAll, JSON.stringify(graph), true);
resolve (body);
}
});
})
}
function makeTable () {
log ('MakeTable');
let watts1 = JSON.parse(getState(SolarJSON1).val);
let watts2 = JSON.parse(getState(SolarJSON2).val);
log ('Items: '+watts1.length);
let today = formatDate(new Date(), 'YYYY-MM-DD');
let table = [];
let graphTimeData = [];
for(var n=0;n<watts1.length;n++) {
let entry = {};
let graphEntry ={};
let thisTime = watts1[n].Uhrzeit;
log (thisTime);
entry.Uhrzeit = watts1[n].Uhrzeit;
entry.Leistung1 = watts1[n].Leistung;
entry.Leistung2 = watts2[n].Leistung;
entry.Summe = watts1[n].Leistung + watts2[n].Leistung;
table.push(entry);
graphEntry.t = Date.parse(thisTime);
graphEntry.y = watts1[n].Leistung + watts2[n].Leistung;
graphTimeData.push(graphEntry);
}
var graph = {};
var graphAllData = [];
var graphData = {"datalabel_rotation":-90,"datalabel_color":"lightgreen","datalabel_fontSize":10};
graphData.data = graphTimeData;
graphAllData.push(graphData);
graph.graphs=graphAllData;
setState(SolarJSONTable, JSON.stringify(table), true);
setState(SolarJSONGraph, JSON.stringify(graph), true);
}
function getSolar() {
Promise.all(promises)
.then(function(bodys) {
console.log("All url loaded");
makeTable();
})
}