Danke, das hat mir weitergeholfen. Hab es ein wenig umgeschrieben für meine Voraussetzung.
Ist ein wenig schwierig gewesen, da ich bisher nie mit JavaScript geschrieben habe, funktioniert aber.
let myArrSourcA=[];
let myBlacklist=[];
/* -----------------------------------------------------------------------------------------
* Hier den Pfad eintragen
*/
// >>>>>>> Pfad der SourceID eintragen
const Pfad = 'sourceanalytix.0.0_userdata__0__Energiezaehler__Computer';
// >>>>>>> Pfad der zu speichernden JSON Datei eintragen
const save = '0_userdata.0.StromJson.Computer';
/*
* Ende
----------------------------------------------------------------------------------------- */
// Jahresvariable
var aktuellesDatum = new Date(),
jahr = aktuellesDatum.getFullYear(),
vorJahr = jahr-1;
// Pfad Monat
const TextJahr = Pfad + '.' + jahr + '.delivered.months.*';
// Pfad Gesamt
const TextGesamtJetzt = Pfad + '.' + jahr + '.deliveredCumulative';
const TextGesamtVorJahr = Pfad + '.' + vorJahr + '.deliveredCumulative';
const TextKostenJetzt = Pfad + '.' + jahr + '.earningsCumulative';
const TextKostenVorJahr = Pfad + '.' + vorJahr + '.earningsCumulative';
// Beispiel Blacklist: ['sourceanalytix.0.sonoff__0__SonoffPow3__ENERGY_Total','sourceanalytix.0.sonoff__3__Nous1__ENERGY_Total']
async function calcJson(){
myArrSourcA=[];
var a = 0;
$(TextJahr).each( function( id4, i){
let idy = id4.split('.');
if (getObject(id4).common.unit=="kWh" && !myBlacklist.toString().includes(idy[2])){
let helper=idy[2].split('__');
let helper2=helper[helper.length-2];
let theName=getObject(idy[0]+'.'+idy[1]+'.'+idy[2]).common.name //idy[2].split('__');
if(theName == undefined) theName="no Name" ;
}
if(a==0){
myArrSourcA.push({
Computer: 'Gesamt',
Jetzt: getState(id4.replace(id4 ,TextGesamtJetzt)).val.toFixed(2),
Letztes: getState(id4.replace(id4, TextGesamtVorJahr)).val.toFixed(2),
Kosten: getState(id4.replace(id4,TextKostenJetzt)).val.toFixed(2) + ' | ' + getState(id4.replace(id4, TextKostenVorJahr)).val.toFixed(2),
})
a++;
}
myArrSourcA.push({
Computer: a++,
DiesesJahr: getState(id4).val.toFixed(2),
// @ts-ignore
LetztesJahr: getState(id4.replace(jahr,vorJahr)).val.toFixed(2),
Kosten: getState(id4.replace(".delivered.",".earnings.")).val.toFixed(2) + ' | ' + getState(id4.replace(jahr + ".delivered.", vorJahr + ".earnings.")).val.toFixed(2),
})
});
//log(JSON.stringify(myArrSourcA))
return myArrSourcA;
}
async function writeDatapoint(){
// >>>>>>>>>>>> Pfad <<<<<<<<<<<<<
if (!(await existsStateAsync(save))) {
await createStateAsync(save, "",{type: "string", name: "JSON SourcAnalytics", role: "value", read: true, write: true, } ); }
// log(JSON.stringify(await calcJson()))
setState(save,JSON.stringify(await calcJson()));
}
writeDatapoint();
schedule(' */10 * * * *', function () { writeDatapoint();
});