// @Liv-in-sky Okt. 2019
// WICHTIG
const instanzArr=[ "EigeneDatenpunkte.0"]; // hier muss die instanz der eigenen datenpunkte angegeben werden oder zusätzlich, die man prüfen möchte , "alexa2.0"
// beispiel const instanzArr=[ "eigeneDatenpunkte.0", "ping.0",];
var color_in_table="black" //Farbe text in webseite
let schriftart="Helvetica"; //möglich: Helvetica,Serif
var color_gradient1="yellow" // Hintergrund webseite
//------------------------------------------AB HIER NICHTS ÄNDERN--------------------------------------------------------
const versionNr = "15102019-1.0"
var endehtml= "
Letztes File Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss")+"
";
var endehtmlDP= "Letztes Table Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss")+"
";
const format = "Putzer";
const htmlTable="";
const htmlReset="!!! ohne Javascript Instanzen !!! kann enabled werden
"
// var htmlOhneAnzahl="!!! ohne DatenpunktZählung !!! kann enabled werden
"
const htmlError="Script hat Fehler - bitte Log checken !!!
"
var allInstArr=[];
const dpPrefix = "javascript."+ instance +".";
var mylogs=false;
var htmlDP=[];
var htmlMSG=[];
var counterAll=0;
var htmlHelper="";
createState(dpPrefix + "ProofingDatapoints.HTMLTable", { name: 'HTMLTable', type: 'string', read: true, write: true,});
createState(dpPrefix + "ProofingDatapoints.ScriptVersion", versionNr,{ name: 'ScriptVersion', type: 'string', read: true, write: true,});
createState(dpPrefix + "ProofingDatapoints.RunScript", { name: 'RunScript', type: 'boolean', role:"switch", read: true, write: true,});
createState(dpPrefix + "ProofingDatapoints.JavaInstanzCheck", true,{ name: 'JavaInstanzCheck', type: 'boolean', role:"switch", read: true, write: true,});
createState(dpPrefix + "ProofingDatapoints.ObjectAnzahlCheck", true,{ name: 'ObjectAnzahlCheck', type: 'boolean', role:"switch", read: true, write: true,});
createState(dpPrefix + "ProofingDatapoints.MonsterSearch", false,{ name: 'MonsterSearch', type: 'boolean', role:"switch", read: true, write: true,});
//------------------------------------------Zähle Objecte der INSTANZEN--------------------------------------------------------
function countDP(idb){
var counter4=0;
$(idb).each(function(id, i) {
counter4++; })
mylog(idb+counter4);
htmlDP.unshift(idb);
htmlMSG.unshift(counter4.toString());
counterAll=counterAll+counter4;
}
//------------------------------------------CHECK INSTANZEN--------------------------------------------------------
function instanzCount(){
var counter=0; var counter2=0;var counter3=0;
$('system.adapter.*.alive').each(function(id, i) {
var ida = id.split('.');
allInstArr.push(ida[2]+"."+ida[3]+".*");
if(!id.includes("vis")){
counter++;
if (getState(id).val==null) {;counter2++; mylog(ida[2]+ida[3]+"--------------------der hier wurde nie gestartet");
htmlDP.push(ida[2]+"."+ida[3]);
htmlMSG.push("Instanzen ohne Werte");} //else{instanzArr.push(ida[2]+"."+ida[3])}
if (getState(id).val==false) {counter3++;mylog(ida[2]+ida[3]+"-----------------------der hier ist ausgeschalten");
htmlDP.push(ida[2]+"."+ida[3]);
htmlMSG.push("nicht aktiviert");} /*else{instanzArr.push(ida[2]+"."+ida[3])}*/
}
});
mylog("______________________________________________Anzahl Instanzen: " + counter.toString());
htmlDP.push("");
htmlMSG.push("");
htmlDP.push("Anzahl Instanzen");
htmlMSG.push(counter.toString());
mylog("______________________________________________Anzahl gestoppter Instanzen ohne Werte: " + counter2.toString())
htmlDP.push("Instanzen ohne Werte");
htmlMSG.push(counter2.toString());
htmlDP.push("Instanzen nicht aktiviert");
htmlMSG.push(counter3.toString());
}
//------------------------------------------CHECK ZUORDNUNG--------------------------------------------------------
function checkTypes(select) {
var counter=0;
htmlMSG.push("");
htmlDP.push("");
mylog(select)
$(select).each(function (id, i) {
counter++
if (!id.includes('scriptEnabled') && !id.includes('scriptProblem') /*&& !id.includes('Log-Script') && !id.includes('Ereignisliste') && !id.includes('GETPROCESS')*/ ){
if (!JSON.stringify(getObject(id)).includes("type")) {
console.log("no"+id);
htmlDP.push(id+": "+valType);
htmlMSG.push("missing TYPE !!" );}
else{ var dpType = getObject(id).common.type;
var valType = typeof getState(id).val;
if(dpType != "mixed" ) {
if(dpType !== valType && !(dpType == 'array' && valType == 'object')) {
mylog(id + ': Datenpunkttyp: ' + dpType + ', Wert: ' + valType);
htmlDP.push(id+": "+valType);
htmlMSG.push(dpType );}
}}
/*
if(dpType != valType && !(dpType == 'array' && valType == 'object')) {
log(id + ': Datenpunkttyp: ' + dpType + ', Wert: ' + valType);
htmlDP.push(dpType);
htmlMSG.push(valType);
}*/
}
});
htmlDP.push("ID+IST WERT");
htmlMSG.push("SOLL WERT");
htmlDP.push("geprüfte Instanz");
htmlMSG.push(""+select+"");
mylog("fertg" + counter.toString())
}
//------------------------------------------CHECK WERTE--------------------------------------------------------
function checkWerte(select) {
mylog("bin in check Werte");
var counter=0;
mylog(select);
$(select).each(function (id, i) {
counter++
if (!id.includes('scriptEnabled') && !id.includes('scriptProblem') && !id.includes('alexa') /* && !id.includes('Ereignisliste') && !id.includes('GETPROCESS')*/ ){
// var dpType = getObject(id).common.type;
var valType = getState(id).val;
//if(dpType != "mixed" ) {}
if(valType === null) {mylog(id + ': Datenpunkttyp: ' /*+ dpType */+ ", Wert: "+valType);
htmlDP.push(id);
htmlMSG.push("missing");}
}
});
mylog("bin raus aus check Werte");
}
//---------------------------------------------------------------------------------------------------------------------
function mylog(message) {
if(mylogs)
console.log(message);
}
//---------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------SCHALTER MAIN------------------------------------------------
on({id:dpPrefix + "ProofingDatapoints.RunScript", val: true}, function (obj) {
let java= getState(dpPrefix + "ProofingDatapoints.JavaInstanzCheck").val;
let instanzAnzahl= getState(dpPrefix + "ProofingDatapoints.ObjectAnzahlCheck").val;
let monster= getState(dpPrefix + "ProofingDatapoints.MonsterSearch").val;
setState(dpPrefix + "ProofingDatapoints.ScriptVersion",versionNr);
htmlHelper="";
setState(dpPrefix + "ProofingDatapoints.HTMLTable",htmlReset+endehtml+htmlError);
writeFile(null, "/ProofingDatapoints/htmlputz.html" ,htmlReset+endehtml+htmlError+"", function (error) {mylog('file written'); });
htmlHelper="";
setStateDelayed(dpPrefix + "ProofingDatapoints.RunScript",false,2500);
htmlDP=[];
htmlMSG=[];
instanzCount();
htmlDP.push("INSTANZ INFO"); htmlMSG.push(""); htmlDP.push(""); htmlMSG.push("");
mylog(instanzArr.length+"==================="+instanzArr.toString());
if (monster) instanzArr=allInstArr; //ACHTUNG MONSTERSEARCH
for(let name in instanzArr){
checkWerte(instanzArr[name]+".*")
mylog("!!!!!!!!!!!!!!!!!!!!: "+instanzArr[name])};
if (instanzAnzahl){
htmlDP.unshift(""); htmlMSG.unshift("");htmlDP.unshift("Objekte in Instanz"); htmlMSG.unshift("Anzahl");
for(let name in allInstArr){
countDP(allInstArr[name]);}
htmlDP.unshift("Gesamt Objekte in Instanzen"); htmlMSG.unshift(""+counterAll.toString()+""); }
//console.log("=============: "+counterAll);}
if (java) checkWerte('javascript.*');
htmlDP.push("ID ohne WERT");
htmlMSG.push("");
for(let name in instanzArr){
checkTypes(instanzArr[name]+".*")
mylog("!!!!!!!!!!!!!!!!!!!!: "+instanzArr[name])};
htmlDP.push("ID falscher TYPE");
htmlMSG.push("");
if (java) checkTypes('javascript.*');
for(var i= htmlDP.length-1; i>-1; i--) {
htmlHelper= htmlHelper+""+htmlDP[i]+" | "+htmlMSG[i]+" |
"
}
if (monster){endehtml="!!! Monster Suche wird automatisch deaktiviert !!!
"+endehtml;
endehtmlDP="!!! Monster Suche wird automatisch deaktiviert !!! Bericht nur über WebSeite
"+endehtmlDP;}
if (!instanzAnzahl){endehtml="!!! ohne DatenpunktZählung !!! kann enabled werden
"+endehtml;
endehtmlDP="!!! ohne DatenpunktZählung !!! kann enabled werden
"+endehtmlDP;}
if (!java){ endehtml="!!! ohne Javascript Instanzen !!! kann enabled werden
"+endehtml;
endehtmlDP="!!! ohne Javascript Instanzen !!! kann enabled werden
"+endehtmlDP;}
if(!monster) { setStateDelayed(dpPrefix + "ProofingDatapoints.HTMLTable",endehtmlDP+""+htmlHelper,900);} else{setStateDelayed(dpPrefix + "ProofingDatapoints.HTMLTable",endehtmlDP,900);}
if(true) writeFile(null, "/ProofingDatapoints/htmlputz.html" ,format+endehtml+htmlTable+htmlHelper+"
", function (error) { mylog('file written'); });
endehtml="";
setState(dpPrefix + "ProofingDatapoints.MonsterSearch",false); //setzt monstersearch zurück
});