@sborg sagte in VIS-Tabelle für WLAN Wetterstation:
@nashra sagte in VIS-Tabelle für WLAN Wetterstation:
Was ich aber gerade gesehen hab, mein Skript sieht an der Stelle anders aus
Dann wundert es mich nicht, dass es nicht funktioniert
Nimm den, dann funktioniert es auch
if (typeof(formathelp)=="object") {helper=getState(id).val[0];}
else if (typeof(formathelp)=="string") { helper=getState(id).val;
helper=JSON.parse(helper.substring(1, helper.length-1));
}
else { helper=JSON.parse(getState(id).val); }
helper={ ...helper, ...obj2, ...obj3}
myArrAll.push(JSON.stringify(helper))
});
Bereich ausgetauscht, leider kommt dies
09:36:20.259 error javascript.0 (430) script.js.Wetter.Statistik-tabelle: SyntaxError: Unexpected token : in JSON at position 12
09:36:20.260 error javascript.0 (430) at script.js.Wetter.Statistik-tabelle:64:56
09:36:20.260 error javascript.0 (430) at dataStuff (script.js.Wetter.Statistik-tabelle:56:15)
09:36:20.260 error javascript.0 (430) at main (script.js.Wetter.Statistik-tabelle:167:4)
Das ist das komplette Skript mit der Änderung
// @liv-in-sky 4.10.2021 11:45
//forum: https://forum.iobroker.net/topic/38286/vis-tabelle-f%C3%BCr-wlan-wetterstation
const dataInputPath="0_userdata.0.Statistik.Wetter.Data"; //SEHR WICHTIG !!!!!!!!!
const inhaltFarbe="white";
const inhaltHintergrund="#353C42"; //"#183D51";
const monatFarbe="yellow";
const hintergrund="#353C42"; //"#183D51";
const htmlFarbTableBorderColor="6b6b6b"; //"#44739E";
const abstandZelle=3;
const htmlRahmenLinien="all";
const htmlSchriftgroessehtmlSchriftart=""; //nicht verwendbar!
const htmlFarbFelderschrift="red"; //nicht verwendbar!
const htmlSchriftgroesse="14px";
const htmlSchriftart="RobotoCondensed-Regular"; //"monospace"; //oder z.b. "Helvetica"
const weite="1300px"; //oder "500px"
let myTable="table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\"1px\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+abstandZelle+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+"; font-size:"+htmlSchriftgroesse+
"; font-family:"+htmlSchriftart+";\"";
const varData={
Hoechstwert: { einheit:"°C", name:"Maximum Temperatur"},
Tiefstwert: { einheit:"°C", name:"Minimum Temperatur"},
Temp_Durchschnitt:{ einheit:"°C", name:"Durchschnittstemperatur"},
Max_Windboe: { einheit:'km/h', name:"Max Windböe"},
Max_Regenmenge: { einheit:'l/m2', name:"Max. Regen/Tag"},
Regenmenge_Monat: { einheit:'l/m2', name:"Regen"},
Regentage: { einheit:"", name:"Regentage"},
warme_Tage: { einheit:"", name:"Warme Tage (über 20°C)"},
Sommertage: { einheit:"", name:"Sommertage (über 25°C)"},
heisse_Tage: { einheit:"", name:'Heiße Tage (über 30°C)'},
Tropennaechte: { einheit:"", name:"Tropennächte (Min. über 20°C)"},
Wuestentage: { einheit:"", name:"Wüstentage (über 35°C)"},
Frost_Tage: { einheit:"", name:"Frosttage (Min. unter 0°C)"},
Eistage: { einheit:"", name:"Eistage (Max. unter 0°C)"},
kalte_Tage: { einheit:"", name:"Kalte Tage (Max. unter 10°C)"},
sehr_kalte_Tage: { einheit:"", name:"Sehr kalte Tage (Min. unter -10°C)"}
}
const table_rowspan = Object.keys(varData).length + 1;
const monate =["JANUAR","FEBRUAR","MÄRZ","APRIL","MAI","JUNI","JULI","AUGUST","SEPTEMBER","OKTOBER","NOVEMBER","DEZEMBER"];
//--------------------------nix mehr ändern ab hier--------------------------------------
let myObj;
let myArrAll=[]
let myArrErstellt=[]
let tableContent;
let monWahlVIS;
let lastThree;
//----------------------------------------------------------------------------------------
function dataStuff(){
let myArrAll=[]
let mySelector=dataInputPath+'.*.*'
$(mySelector).each(function(id, i) {
let ida=id.split("."); let lang=ida.length; let jahri=lang-2; let moni=lang-1;
let obj2 = { jahr: ida[jahri]};
let obj3 = { monat: ida[moni]};
let formathelp= getState(id).val
let helper;
if (typeof(formathelp)=="object") {helper=getState(id).val[0];}
else if (typeof(formathelp)=="string") { helper=getState(id).val;
helper=JSON.parse(helper.substring(1, helper.length-1));
}
else { helper=JSON.parse(getState(id).val); }
helper={ ...helper, ...obj2, ...obj3}
myArrAll.push(JSON.stringify(helper))
});
//log(myArrAll)
tableContent = ""
myObj=JSON.parse("["+myArrAll.toString()+"]")
if (lastThree==0) {
//KOPFZEILE
let choseMonth=monate[monWahlVIS-1]
let choseMonthArr=choseMonth.split('')
let test=""
for (let i=0;i<choseMonthArr.length;i++){
// log(choseMonthArr[i])
test=test+choseMonthArr[i]+`
`
}
//log(test)
//tableContent+='<td class=\"test-klein\" rowspan=\"14\"\">'+choseMonth+'</td><td>Wetterwerte</td>'
//tableContent+='<td class=\"myWetterStation\" width=\"25px\" style=\"color:'+monatFarbe+';font-size:26px; background-color:'+hintergrund+' ; vertical-align:middle; text-align:center \" rowspan=\"17\"\">'+test+'</td><td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\>Wetterwerte</td>'
tableContent+='<td class=\"myWetterStation\" width=\"25px\" style=\"color:'+monatFarbe+';font-size:26px; background-color:'+hintergrund+' ; vertical-align:middle; text-align:center \" rowspan='+table_rowspan+'\">'+test+'</td><td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\>Wetterwerte</td>'
for (let i=0;i<myObj.length;i++) {
if(parseInt(myObj[i].monat)==monWahlVIS){
tableContent += '<td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\ align=center>' + myObj[i].jahr+'</td>'}
}; tableContent="<tr style=\"font-weight\:bold\">"+tableContent+"</tr>"
//RESTZEILEN
for(var index in varData){
tableContent+='<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\">'+varData[index].name+'</td>'
for (let i=0;i<myObj.length;i++) {
if(myObj[i].monat==monWahlVIS){
tableContent += '<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\" align=right>' + myObj[i][index] + ' '+ varData[index].einheit+'</td>'}
}; tableContent="<tr>"+tableContent+"</tr>"
}
} //lastThree
else {
//log(myObj[0].monat)
myObj.sort(function (alpha, beta) {
if (parseInt(alpha.monat) > parseInt(beta.monat))
return 1;
if (parseInt(beta.monat) > parseInt(alpha.monat))
return -1;
return 0;});
// log(myObj[0].monat)
//KOPFZEILE LASTTHREE
let choseJahr=lastThree.toString()//formatDate(getDateObject((new Date().getTime())), "JJJJ")//monate[monWahlVIS-1]
let choseMonthArr=choseJahr.split('')
let test=""
for (let i=0;i<choseMonthArr.length;i++){
// log(choseMonthArr[i])
test=test+choseMonthArr[i]+`
`
}
//log(test)
//tableContent+='<td class=\"test-klein\" rowspan=\"14\"\">'+choseMonth+'</td><td>Wetterwerte</td>'
tableContent+='<td class=\"myWetterStation\" width=\"25px\" style=\"color:'+monatFarbe+';font-size:26px; background-color:'+hintergrund+' ; vertical-align:middle; text-align:center \" rowspan='+table_rowspan+'\">'+test+'</td><td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\>Wetterwerte</td>'
for (let i=0;i<myObj.length;i++) {
// if( parseInt(myObj[i].jahr)==parseInt(choseJahr) && (parseInt(myObj[i].monat)==parseInt(monWahlVIS) || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-1 || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-2)){
if( parseInt(myObj[i].jahr)==parseInt(choseJahr) ){
tableContent += '<td style=\"color:'+monatFarbe+'; background-color:'+hintergrund+'"\ align=center>' + monate[parseInt(myObj[i].monat)-1]+'</td>';}
}; tableContent="<tr style=\"font-weight\:normal\">"+tableContent+"</tr>"
//RESTZEILEN
for(var index in varData){
tableContent+='<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\">'+varData[index].name+'</td>'
for (let i=0;i<myObj.length;i++) {
// if( parseInt(myObj[i].jahr)==parseInt(choseJahr) && (parseInt(myObj[i].monat)==parseInt(monWahlVIS) || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-1 || parseInt(myObj[i].monat)==parseInt(monWahlVIS)-2)){
if( parseInt(myObj[i].jahr)==parseInt(choseJahr) ){
tableContent += '<td style=\"color:'+inhaltFarbe+'; background-color:'+inhaltHintergrund+'\" align=right>' + myObj[i][index] + ' '+ varData[index].einheit+'</td>'}
}; tableContent="<tr>"+tableContent+"</tr>"
}
}
tableContent = '<'+myTable+' ><tbody>'+tableContent+'</tbody></table >'
//log(tableContent)
setState("javascript." + instance + ".Wetterstation.MonthlyDaten",tableContent)
}
//--------------------------------------------------------------------------------------------------
async function main() {
if (!(await existsStateAsync("javascript." + instance + ".Wetterstation.MonthlyDaten"))) {
await createStateAsync("Wetterstation.MonthlyDaten", "leer", {type: "string", name: "MonthlyDaten", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Wetterstation.MonatAuswahl"))) {
await createStateAsync("Wetterstation.MonatAuswahl", 10, {type: "number", name: "MonatAuswahl", role: "value", read: true, write: true, } ); }
if (!(await existsStateAsync("javascript." + instance + ".Wetterstation.AuswahlJahr"))) {
await createStateAsync("Wetterstation.AuswahlJahr", 0, {type: "number", name: "AuswahlJahr", role: "value", read: true, write: true, } ); }
lastThree = (await getStateAsync("javascript." + instance + ".Wetterstation.AuswahlJahr")).val //? lastThree=true : lastThree=false;
monWahlVIS=((await getStateAsync("javascript." + instance + ".Wetterstation.MonatAuswahl")).val )
dataStuff();
}
//-----------------------------------------------------------------------------------------------------
main()
on({id: "javascript." + instance + ".Wetterstation.MonatAuswahl", change: "any"}, async function (obj) {
main()
});
on({id: "javascript." + instance + ".Wetterstation.AuswahlJahr", change: "any"}, async function (obj) {
main()
});
schedule(' */30 * * * *', function() {
setState("javascript." + instance + ".Wetterstation.MonatAuswahl", parseInt(formatDate(getDateObject((new Date().getTime())), "MM"))) ;
setStateDelayed("javascript." + instance + ".Wetterstation.AuswahlJahr", parseInt(formatDate(getDateObject((new Date().getTime())), "JJJJ")),10000) ;
});