// @Liv-in-sky Okt. 2019 // WICHTIG // hier muss die instanz der eigenen datenpunkte angegeben werden oder zusätzlich, die man prüfen möchte , "alexa2.0" //oder auch nur einzelne ornder in der datenstruktur z.b. "javascript.2.WLANUnifi" const instanzArr=[ "controll-own.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="#819FF7"; // Hintergrund webseite var colorHeadlines="darkblue"; // Farbe Überschriften in der VIS Anzeige var colorHeadlinesDP="#36d5ec "; // Farbe Überschriften in der WebSeite Anzeige var warnFarbe = "#36d5ec"; //Farbe für Warnungen in vis und Webseite //------------------------------------------AB HIER NICHTS ÄNDERN-------------------------------------------------------- const versionNr = "15102019-1.2" const warnColor = warnFarbe ; const format = "Putzer"; const htmlTable=""; const htmlReset="

!!! ohne Javascript Instanzen !!! kann enabled werden

" const htmlHeaders = "style=\"color:"+colorHeadlines+";\""; const htmlHeadersDP = "style=\"color:"+colorHeadlinesDP+";\""; // var htmlOhneAnzahl="

!!! ohne DatenpunktZählung !!! kann enabled werden

" const htmlError="

Script hat Fehler - bitte Log checken !!!

" var allInstArr=[]; var instanzArrHelp=[]; const dpPrefix = "javascript."+ instance +"."; var mylogs=false; var htmlDP=[]; var htmlMSG=[]; var counterAll=0; var directSearch=false; var switchOn=false; var helplogs=false; var htmlHelper=""; var htmlHelperFile=""; 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",false, { 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,}); createState(dpPrefix + "ProofingDatapoints.ohneInstanzAnzeige", false,{ name: 'ohneInstanzAnzeige', type: 'boolean', role:"switch", read: true, write: true,}); createState(dpPrefix + "ProofingDatapoints.OrdnerCheck", "", { name: 'OrdnerCheck', type: 'string', read: true, write: true,}); //------------------------------------------CHECK INSTANZEN-------------------------------------------------------- function instanzCount(){ var ohneInstanz = getState(dpPrefix + "ProofingDatapoints.ohneInstanzAnzeige").val; 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 (!ohneInstanz && !directSearch) { 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])}*/ }} }); if (!ohneInstanz) { 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) { helplog("bin in check types"); var counter=0; htmlMSG.push(""); htmlDP.push(""); var sub= select.substring(select.length-1, select.length); log("---------: "+sub);//console.log("----------select: "+select); mylog(select) $(select).each(function (id, i) { counter++ // console.log("===============id vor null - kein value zu: "+id); if (!id.includes('scriptEnabled') && !id.includes('scriptProblem') && getState(id).val !== null /*&& !id.includes('Log-Script') && !id.includes('Ereignisliste') && !id.includes('GETPROCESS')*/ ){ //console.log("===============id vor null - kein value zu: "+id); //console.log("status0-checkType"); if (getState(id).val==null) console.log("===============nullwert - kein value zu: "+id); //console.log("status1-checkType"); if (!JSON.stringify(getObject(id)).includes("type") && !JSON.stringify(getObject(id)).includes("name") /*&& !JSON.stringify(getObject(id)).includes("meta")*/ ) { //console.log("===============id nach stringify - kein value zu: "+id); var valType = typeof getState(id).val; htmlDP.push(id+": "+valType); htmlMSG.push("missing DP-OBEJCT !!" );} else{ //console.log("status2-checkType"); var dpType = getObject(id).common.type; var valType = typeof getState(id).val; if(dpType != "mixed" ) { if(dpType !== valType && !(dpType == 'array' && valType == 'object' && dpType == 'meta.user') /*&& !(dpType =='text' && valType=='string') && !(dpType =='string' && valType=='text')*/ ) { mylog(id + ': Datenpunkttyp: ' + dpType + ', Wert: ' + valType); htmlDP.push(id+": "+valType); htmlMSG.push(dpType ); /* später testing) console.log("======1=============no type: "+id +"object: "+JSON.stringify(getObject(id))); if(!getObject(id).common.hasOwnProperty("type")) console.log("--------------kein TYPE: "+id) ; console.log("======2=============no type: "+id +"object: "+JSON.stringify(getObject(id).common)); */ } }} /* 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+""); htmlDP.push("-col-geprüfte Instanz"); htmlMSG.push("-col-"+select+""); helplog("fertg in checkType mit:" + counter.toString()+ " Durchläufen") } //------------------------------------------CHECK WERTE-------------------------------------------------------- function checkWerte(select) { helplog("bin in check Werte"); var counter=0; mylog(select); $(select).each(function (id, i) { counter++ if (!id.includes('scriptEnabled') && !id.includes('scriptProblem') /* ) && !id.includes('Ereignisliste') && !id.includes('GETPROCESS')*/ ){ //var dpType = getObject(id).common.type; if (!JSON.stringify(getObject(id)).includes("type") && !JSON.stringify(getObject(id)).includes("name") ) { //CHECK MISSING OBJECT)) valType = typeof getState(id).val; htmlDP.push(id+": "+valType); htmlMSG.push("missing DP-OBEJCT !!" );} else { var valType = getState(id).val; // if(dpType != "mixed" ) {} //console.log("status1"); if(valType === null) {mylog(id + ': Datenpunkttyp: ' /*+ dpType */+ ", Wert: "+valType); htmlDP.push(id); var ddd = new Date().getTime()-getObject(id).ts; htmlMSG.push("missing seit " + Math.floor((ddd)/1000/60/60/24)+"d "+Math.floor((ddd)/1000/60/60 %24)+"h "+Math.floor((ddd)/1000/60 %60)+"m "); } //console.log("status2"); if(getObject(id).common.hasOwnProperty("states") /*&& JSON.stringify(getObject(id).common.states)!=null && JSON.stringify(getObject(id).common.states)!=undefined */){ // console.log("======2=============no type: "+id +"object: "+JSON.stringify(getObject(id).common.states)); //console.log("der hier: " +id); try{ var helpStates= Object.keys(getObject(id).common.states); } catch (e) {console.log("------------ERROR: "+e + "bei id: " + id); extendObject(id, {common: {states:{"0":"script"}}})} var helpType= getObject(id).common.type; // console.log(helpType); //console.log(helpStates.toString()); // console.log(helpStates[0] + helpStates[1] ); if (helpType=="number" || helpType=="boolean") { var alarmString=false;var alarmString2=false; for (var i=0; i < helpStates.length ;i++){ // console.log( helpStates[i]); mylog(isNaN(helpStates[i]).toString()) ; if (isNaN(helpStates[i]) && helpType=="number") alarmString=true; //type number - stehen da nummern drin var helpTypeBool= helpStates[i].toString() + helpType; if (helpType=="boolean") {if (helpTypeBool !="falseboolean" && helpTypeBool != "trueboolean") alarmString2=true;} //type boolean - stehen da booleans } if (alarmString){ htmlDP.push(id); htmlMSG.push("-col-ACHTUNG Multstate must be number")} if (alarmString2){ htmlDP.push(id); htmlMSG.push("-col-ACHTUNG Multstate must be boolean")} } else {htmlDP.push(id); htmlMSG.push("-col-ACHTUNG Multstate wrong Def.")} } //ende states check /* else { htmlDP.push(id); htmlMSG.push("ACHTUNG Multstate wrong Def.")}*/ } //ende check missing object } // ende script enabled check }); // ende selct.each helplog("bin raus aus check Werte"); } //--------------------------------------------------------------------------------------------------------------------- function mylog(message) { if(mylogs) console.log(message); }function helplog(message) { if(helplogs) console.log(message); } //------------------------------------------Zähle Objecte der INSTANZEN-------------------------------------------------------- function countDP(idb){ mylog("bin richtig in count"); var counter4=0; $(idb+".*").each(function(id, i) { counter4++; }) mylog(idb+counter4); htmlDP.unshift(idb); htmlMSG.unshift(counter4.toString()); counterAll=counterAll+counter4; mylog("bin raus aus count"); } //----------------------------------------------Direct Suchen on({id:dpPrefix + "ProofingDatapoints.OrdnerCheck", ack: false, change: "any"}, function (obj) { directSearch=true; instanzArrHelp=[]; setState(dpPrefix + "ProofingDatapoints.RunScript",true); }); //-----------------------------------------------SCHALTER MAIN------------------------------------------------ on({id:dpPrefix + "ProofingDatapoints.RunScript", ack: false, 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; var ohneInstanz = getState(dpPrefix + "ProofingDatapoints.ohneInstanzAnzeige").val; var endehtmlConst= "

Letztes File Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss")+"

"; var endehtmlDPConst= "

Letztes Table Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss")+"

"; setState(dpPrefix + "ProofingDatapoints.ScriptVersion",versionNr); htmlHelper=""; htmlHelperFile=""; setState(dpPrefix + "ProofingDatapoints.HTMLTable",htmlReset+endehtml+htmlError); writeFile(null, "/ProofingDatapoints/htmlputz.html" ,htmlReset+endehtml+htmlError+"", function (error) {mylog('file written'); }); counterAll=0; instanzArrHelp=[]; allInstArr=[]; setStateDelayed(dpPrefix + "ProofingDatapoints.RunScript",false,2500); htmlDP=[]; htmlMSG=[]; instanzCount(); //überprüft instanzen und stellt allInstArr her htmlDP.push("-col-INSTANZ INFO"); htmlMSG.push(""); htmlDP.push(""); htmlMSG.push(""); mylog(instanzArr.length+"==================="+instanzArr.toString()); if (monster) {instanzArrHelp=allInstArr;} else {instanzArrHelp=instanzArr} //ACHTUNG MONSTERSEARCH if (directSearch) {instanzArrHelp=[]; instanzArrHelp.push(getState(dpPrefix + "ProofingDatapoints.OrdnerCheck").val);} for(let name in instanzArrHelp){ checkWerte(instanzArrHelp[name]+".*") //checkt alle werte in intanzArr mylog("!!!!!!!!!!!!!!!!!!!!: "+instanzArrHelp[name]);} if (instanzAnzahl){ htmlDP.unshift(""); htmlMSG.unshift("");htmlDP.unshift("OBJECTE IN INSTANZ"); htmlMSG.unshift("Anzahl"); for(let name in instanzArrHelp){ countDP(instanzArrHelp[name]);mylog("bin in zhlen");} if (java && !monster) countDP("javascript") htmlDP.unshift("-col-GESAMT GEPRÜFTE OBJECTE IN INSTANZEN"); htmlMSG.unshift("-col-"+counterAll.toString()+""); } mylog("=============: "+counterAll); if (java && !monster && !ohneInstanz && !directSearch) checkWerte('javascript.*'); //checkt alle javainstanzen htmlDP.push("-col-ID's OHNE WERT:"); htmlMSG.push(""); for(let name in instanzArrHelp){ checkTypes(instanzArrHelp[name]+".*") mylog("!!!!!!!!!!!!!!!!!!!!: "+instanzArrHelp[name])}; htmlDP.push(""); htmlMSG.push(""); htmlDP.push("-col-IDs MIT FALSCHEN TYPE:"); htmlMSG.push(""); if (java && !monster && !ohneInstanz && !directSearch ) checkTypes('javascript.*'); //console.log(htmlMSG.length+"--"+htmlDP.length) for(var i= htmlDP.length-1; i>-1; i--) { //console.log(htmlDP[i]+"anerer :"+htmlMSG[i]); // if (htmlMSG[i].includes("-col-")) console.log(htmlMSG[i]); let htmlDPVis; let htmlDPFile;let htmlMSGVis;let htmlMSGFile; if(htmlDP[i].includes("-col-")) {htmlDPVis=htmlDP[i].replace("-col-", (htmlHeadersDP+">")); htmlDPVis=" "+htmlDPVis } else {htmlDPVis=">"+htmlDP[i]} if(htmlMSG[i].includes("-col-")) {htmlMSGVis=htmlMSG[i].replace("-col-", (htmlHeadersDP+">"));htmlMSGVis=" "+htmlMSGVis } else {htmlMSGVis=">"+htmlMSG[i]} htmlHelper= htmlHelper+"" // if(htmlDP[i].includes("-col-")) {htmlDP[i]=htmlDP[i].replace("-col-", (htmlHeaders+">")); htmlDPFile=htmlDP[i]; htmlDPFile= " "+htmlDPFile ; } else {htmlDPFile=">"+htmlDP[i]} if(htmlDP[i].includes("-col-")) {htmlDPFile=htmlDP[i].replace("-col-", (htmlHeaders+">")); htmlDPFile= " "+htmlDPFile ; } else {htmlDPFile=">"+htmlDP[i]} if(htmlMSG[i].includes("-col-")) {htmlMSGFile=htmlMSG[i].replace("-col-", (htmlHeaders+">")); htmlMSGFile=" "+htmlMSGFile; } else {htmlMSGFile=">"+htmlMSG[i]} htmlHelperFile= htmlHelperFile+"" } var endehtml=endehtmlConst; var endehtmlDP=endehtmlDPConst; if (monster){endehtml="

!!! Monster Suche wird automatisch deaktiviert !!!

"+endehtml; endehtmlDP="

!!! ACHTUNG: SYSTEM WIRD BELASTET !!!

!!! Monster Suche wird automatisch deaktiviert !!!

BERICHT/AUSWERTUNG NUR ÜBER WEBSEITE

"+endehtmlDP;} if (!instanzAnzahl){endehtml="

!!! Auswertung ohne DatenpunktZählung !!! kann enabled werden

"+endehtml; endehtmlDP="

!!! Auswertung ohne DatenpunktZählung !!! kann enabled werden

"+endehtmlDP;} if (!java){ endehtml="

!!! Auswertung ohne Javascript Instanzen !!! kann enabled werden

"+endehtml; endehtmlDP="

!!! Auswertung ohne Javascript Instanzen !!! kann enabled werden

"+endehtmlDP;} if(!monster) { setStateDelayed(dpPrefix + "ProofingDatapoints.HTMLTable",endehtmlDP+"
"+htmlHelper,900);} else{setStateDelayed(dpPrefix + "ProofingDatapoints.HTMLTable",endehtmlDP,900);} mylog("================================schreibe file") ; writeFile(null, "/ProofingDatapoints/htmlputz.html" ,format+endehtml+htmlTable+htmlHelperFile+"
", function (error) { mylog('file written'); }); // endehtml=endehtmlConst; // endehtmlDP=endehtmlDPConst; setState(dpPrefix + "ProofingDatapoints.MonsterSearch",false); //setzt monstersearch zurück directSearch=false; });