Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. HTML Table für Alexa Smart Devices

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    HTML Table für Alexa Smart Devices

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky last edited by liv-in-sky

      hallo , suche mutige tester für diese tabelle - es werden alle smart devices unter alexa aufgezeichnet, sie können sortiert werden und die "nicht von iobroker erstellten" devices konnen auch geschalten werden - ich selbst habe nur schalter, falls jmd farbsteuerung hat, müßte dies noch integriert werden - dazu bräuchte ich aber die datenpunkte
      die suche nach diesen datenpunkten im admin finde ich zu anstrengend - daher versuche es ich mal mit dieser tabelle

      • es müssen wie immer bei diesen html tables die datenpunkte selbst angelegt und auch im script eingegeben werden - typen stehen im script
      • zusätzlich müssen auch die ordner zum durchsuchen der datenpunkt-zuordnung angegeben werden - const select - zeile 17 - " wo sind die datenpunkte, die dem smart devices zugeordnet sind "
      • nach dem anlegen eines neuen smart devices im iot oder der alexa app, muss dieses script neugestartet werden - der cache verhindert ein update
      • es kann zu fehlern kommen, wenn die smart home definition im datenpunkt etwas "wirr" ist - daher unbedingt log checken
      • dieses script ist für die vis - in iqontrol werden die sortier-buttons nicht funktionieren
      • in spalte 4 können die datenpunkte geschalten werden (mit dem blauen icon), nummern oder evtl farben können nicht verändert werden

      !!!vorsicht!!! - alle icons unter spalte 2 und 3 haben eine wirkung !- sie enablen oder disabeln und löschen smart devices - daher aufpassen

      alexa.gif

         //@liv-in-sky 2020  17.3.-19:42
      
      
      //HIER WIRD PFAD UND FILENAME DEFINIERT
      const path = "/htmlexample.html";                   //FIlenamen definieren
      const home ='vis.0'                                 //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
      let   braucheEinFile=false;                          // bei true wird ein file geschrieben
      let   braucheEinVISWidget=true;                     // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
      let dpVIS="controll-own.0.TABELLEN.AlexaSmartDevices"         //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget  type string
      let dpSort="controll-own.0.TABELLEN.AlexaSmartDevices_Sort"   //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget  type number
      let dpRefresh="controll-own.0.TABELLEN.AlexaSmartDevices_Refresh"  //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget type:bool
      let mySchedule="  */2 * * * * ";                       //
      let sortierungSchalter=true;
      const farbeSchalterON="lightblue"               // farbe des schalters für ON
      const farbeSchalterOFF="grey"               // farbe des schalters für OFF
      let farbeSchalterBackground="#6E6E6E";
      let farbeSchalterSchrift="lightgreen";
      
      
      const select=["controll-own.0","0_userdata.0","fritzdect.0","fritzdect.1","javascript.0","javascript.1","javascript.2"]   // dies ist ein beispiel mit meinen datenpunkten - muss angeglichen werden an euer system
      
      
      // var symbolOK="✅";  // auch möglich: ="✅"}      
      //var symbolKO="❌";     //z.b. auch "<font color=\"red\"><b>X</b>" für ein rotes kreuz ❌"  ⚪  ⚫ ⭕  🔴 🔵 ⏱ 💀 👍 👎 📑 💲 👀
      var symbolWARN="⚠️";    // ="⚠️"
      var symbolSwitch="🔄"
      var symbolLink="🌎";
      var symbolSort="👁️‍🗨️";
      var symbolEnable="🟢";
      var symbolDisable="🔴";
      var symbolDelete="⭕";
      var symbolValueOK="✅";  // auch möglich: ="✅"}      
      var symbolValueKO="❌"; 
      
      //---------------------------------------
      
      //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 5
      var htmlFeld1='(#) Name';       var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
      var htmlFeld2='Enabled';        var Feld2lAlign="center";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
      var htmlFeld3='Del';         var Feld3lAlign="center";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
      var htmlFeld4='Creator';        var Feld4lAlign="left";                    // überschrift Tabellen Spalte4 und  Ausrichtung left,right or center
      var htmlFeld5='Value';        var Feld5lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
      var htmlFeld6='Number';        var Feld6lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
      var htmlFeld7='Smart ID';        var Feld7lAlign="left";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
      var htmlFeld8='(Pos) ID';        var Feld8lAlign="left";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
      
      //-----------------------------------
      
      
      
      //hier werden die styles für die tabelle definiert
      //ÜBERSCHRIFT ÜBER TABELLE
      let   htmlUberschrift=true;                           // mit Überschrift über der tabelle
      let   htmlSignature=false;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
      const htmlFeldUeber='Alexa Smart Devices';              // Überschrift und Signature
      const htmlFarbUber="white";                         // Farbe der Überschrift
      const htmlSchriftWeite="normal";                       // bold, normal - Fettschrift für Überschrift
      const htmlÜberFontGroesse="18px";                       // schriftgröße überschrift
      //MEHRERE TABELLEN NEBENEINANDER
      let   mehrfachTabelle=1;                              // bis zu 4 Tabellen werden nebeneinander geschrieben-  verkürzt das Ganze, dafür etwas breiter - MÖGLICH 1,2,3,oder 4 !!!
      const trennungsLinie="2";                             //extra trennungslinie bei mehrfachtabellen - evtl auf 0 stellen, wnn htmlRahmenLinien auf none sind
      const farbetrennungsLinie="white";
      const htmlFarbZweiteTabelle="white";                // Farbe der Überschrift bei jeder 2.ten Tabelle
      const htmlFarbTableColorUber="#BDBDBD";               // Überschrift in der tabelle - der einzelnen Spalten
      //ÜBERSCHRIFT SPALTEN
      const UeberSchriftHöhe="35";                          //Überschrift bekommt mehr Raum - darunter und darüber - Zellenhöhe
      const LinieUnterUeberschrift="2";                   // Linie nur unter Spaltenüberschrift - 
      const farbeLinieUnterUeberschrift="white";
      const groesseUeberschrift=16;
      const UeberschriftStyle="normal"                     // möglich "bold"
      //GANZE TABELLE
      let abstandZelle="2";
      let farbeUngeradeZeilen="#000000";                     //Farbe für ungerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2
      let farbeGeradeZeilen="#151515";                        //Farbe für gerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2
      let weite="auto";                                     //Weite der Tabelle
      let zentriert=true;                                   //ganze tabelle zentriert
      const backgroundAll="#000000";                        //Hintergrund für die ganze Seite - für direkten aufruf oder iqontrol sichtber - keine auswirkung auf vis-widget
      const htmlSchriftart="Ubuntu-Regular" //"Jura-Medium"     //"Comfortaa-Regular"        //"Candal"    //"Arimo-Bold"   //"Helvetica";
      const htmlSchriftgroesse="14px";
      //FELDER UND RAHMEN
      let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
      const htmlFarbFelderschrift="#BDBDBD";                  // SchriftFarbe der Felder
      const htmlFarbFelderschrift2="#D8D8D8";                 // SchriftFarbe der Felder für jede 2te Tabelle
      const htmlFarbTableColorGradient1="#1c1c1c";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
      const htmlFarbTableColorGradient2="#1c1c1c";          //  Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
      const htmlFarbTableBorderColor="grey";             // Farbe des Rahmen - is tdieser gleich den gradienten, sind die rahmen unsichtbar
      let htmlRahmenLinien="cols";                            // Format für Rahmen: MÖGLICH: "none" oder "all" oder "cols" oder "rows"
      const htmlSpalte1Weite="auto";                    //  Weite der ersten beiden  Spalten oder z.b. 115px
      
      // HIER NICHTS  ÄNDERN
      let eigenerWert;
      let borderHelpBottum;
      let borderHelpRight;
      let htmlcenterHelp;
      let htmlcenterHelp2;
      
      if(htmlRahmenLinien=="rows") {borderHelpBottum=1;borderHelpRight=0;}
      if(htmlRahmenLinien=="cols") {borderHelpBottum=0;borderHelpRight=1;}
      if(htmlRahmenLinien=="none") {borderHelpBottum=0;borderHelpRight=0;}
      if(htmlRahmenLinien=="all")  {borderHelpBottum=1;borderHelpRight=1;}
      zentriert ? htmlcenterHelp="auto" : htmlcenterHelp="left";
      zentriert ? htmlcenterHelp2="center" : htmlcenterHelp2="left";
      
      
      const htmlZentriert='<center>'
      const htmlStart=    "<!DOCTYPE html><html lang=\"de\"><head><title>Vorlage</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"+
                         "<style> * {  margin: 0;} body {background-color: "+backgroundAll+"; margin: 0 auto;  }"+
                         " p {padding-top: 10px; padding-bottom: 10px; text-align: "+htmlcenterHelp2+"}"+
                        // " div { margin: 0 auto;  margin-left: auto; margin-right: auto;}"+
                         " td { padding:"+abstandZelle+"px; border:0px solid "+htmlFarbTableBorderColor+";  border-right:"+borderHelpRight+"px solid "+htmlFarbTableBorderColor+";border-bottom:"+borderHelpBottum+"px solid "+htmlFarbTableBorderColor+";}"+ 
                         " table { width: "+weite+";  margin: 0 "+htmlcenterHelp+"; border:1px solid "+htmlFarbTableBorderColor+"; border-spacing=\""+abstandZelle+"0px\" ; }"+   // margin macht center
                         "td:nth-child(1) {width: "+htmlSpalte1Weite+"}"+"td:nth-child(2) {width:"+htmlSpalte1Weite+"}"+
                         " </style></head><body> <div>";
      //const htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-weight: bold\">"+htmlFeldUeber+"</p>";                    
      const htmlTabStyle= "<table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\"2px\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+abstandZelle+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+";  font-size:"+htmlSchriftgroesse+
                            "; font-family:"+htmlSchriftart+";background-image: linear-gradient(42deg,"+htmlFarbTableColorGradient2+","+htmlFarbTableColorGradient1+");\">";
      const htmlTabUeber1="<tr height=\""+UeberSchriftHöhe+"\" style=\"color:"+htmlFarbTableColorUber+"; font-size: "+groesseUeberschrift+"px; font-weight: "+UeberschriftStyle+" ;  border-bottom: "+LinieUnterUeberschrift+"px solid "+farbeLinieUnterUeberschrift+" \">";
      const htmlTabUeber3="</tr>";
      
      let sortNumber=4;
      //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 5
      var buttonScript =  '<script> function setOnDblClickCustom( myvalue ) {	var Self = this; var objID = myvalue;	Self.servConn.getStates(objID, (error, states) => {  console.log(states);  Self.servConn.setState(objID, !states[objID].val); }); Self.servConn.setState(\''+dpRefresh+'\', '+sortNumber+'); } '+
                           'function setOnSort( myvalue ) {	var Self = this;  Self.servConn.setState(\''+dpSort+'\', myvalue); Self.servConn.setState(\''+dpRefresh+'\', true) }'+
                            'function getInputValue(var2, myValueEingabe) { console.log(var2); console.log(myValueEingabe); var Self = this; var inputVal = document.getElementById(myValueEingabe).value;console.log(myValueEingabe);Self.servConn.setState(var2, inputVal);Self.servConn.setState(\''+dpRefresh+'\', true)}</script>'
      
      var htmlTabUeber2="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+">&ensp;"+htmlFeld1+"&ensp;<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnSort\(0)\">"+symbolSort + "</button>"+
                       "</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+">&ensp;"+htmlFeld2+"&ensp;</td><td  align="+Feld3lAlign+">&ensp;"+htmlFeld3+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+htmlFeld4+"&ensp;<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnSort\(3)\">"+symbolSort + "</button>"+
                       "<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; length\:400px  ;text\-align:left\" value=\"toggle\" onclick=\"setOnSort\(666)\">"+symbolSort + "</button>"+
                       "</td><td  align="+Feld5lAlign+">&ensp;"+htmlFeld5+"&ensp;<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnSort\(4)\">"+symbolSort + "</button>"+
                       "</td><td  align="+Feld6lAlign+">&ensp;"+htmlFeld6+"&ensp;&ensp;</td><td  align="+Feld7lAlign+">&ensp;"+htmlFeld7+"&ensp;"+
                       "<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnSort\(6)\">"+symbolSort + "</button>"+
                       "</td><td  align="+Feld8lAlign+">&ensp;"+htmlFeld8+"&ensp;<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnSort\(7)\">"+symbolSort + "</button>"+
                       "</td>";
                       
      var htmlTabUeber2_1="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+
                         "&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld4+
                         "&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld5+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld6+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld7+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld8+"&ensp;</td>";
                             //------------------------------------------------------
      
      
      let myPower;
      let myCountId;
      var htmlOut="";
      var mix;
      var counter;
      var val1; var val2; var val0; var val3; var val4; var val5; var val6; var val7;
      var htmlTabUeber="";
      setState(dpSort,4)
      let mySmarties=[]
      let anzahlSmarties;
      
      
      function writeHTML(){
         myCountId=0;
      
      myPower=[];
      
      htmlOut="";
      
      counter=-1;
      htmlTabUeber="";
      switch (mehrfachTabelle) { 
         case 1: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber3;  break;
         case 2: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
         case 3: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2+htmlTabUeber2+htmlTabUeber3; break;
         case 4: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
      }; 
      if (!UeberschriftSpalten) {htmlTabUeber=""}  
      
      //--------------------------------------------------------------------------------------------------------------------------------------------------
      //---------hier kommt eure schleife rein counter++, tabelleBind() und tabelleFinish() müssen so integriert bleiben !!!------------------------------
      //---------alle valx werte müssen von euch bestimmt werden - val0,val1,val2,val3,val4!!!------------------------------------------------------------
      //--------------------------------------------------------------------------------------------------------------------------------------------------
      let mySort=[];
      let sortNumberAlt=sortNumber
      sortNumber=getState(dpSort).val;// log (sortNumber)
      //if (sortNumber==sortNumberAlt) { if (sortNumber==4) { sortNumber=3 } else if (sortNumber==3) sortNumber=4}
      let position=0;
      $('alexa2.0.Smart-Home-Devices.*.#enabled').each(function(id, i) {           // hier eigene schleife definieren
              var ida = id.split('.');
              if( !(id.includes("scriptEnabled") || id.includes("scriptProblem") ||  id.includes("ssss") )){
                position++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name ;
              //  log(getState(id).val)
                let val1help=getState(id).val;
      /*         
      val1help ? val1="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+id+"\')\">"+symbolEnable + "</button> <font color=\""+farbeSchalterON+"\">" :
                val1="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+id+"\')\">"+symbolDisable+"</button> <font color=\""+farbeSchalterOFF+"\">";*/
                 val1help ? val1="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+id+"\')\">"+symbolEnable + "</button> " :
                val1="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+id+"\')\">"+symbolDisable+"</button> ";
      
               // if (!val1help) {val1="❌"} else{val1="✅"}   
                //let val1help=getState(id).val;
              //  val2=getState(id.replace("#enabled","#delete")).val;
              val2=  "<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+id.replace("#enabled","#delete")+"\')\">"+symbolDelete + "</button>"
               // let val2help2;
                val3=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).native.manufacturerName ;
                if (existsState(id.replace("#enabled","powerState"))){
                    let val4help;  
                             if (val3.indexOf("ioBroker")<0) {  val4help=getState(id.replace("#enabled","powerState")).val; ichWillSchalten(id.replace("#enabled","powerState"),val4help);} else{ val4=""; }} else {val4=" - ";}
                 
                //val1=Math.floor( ((val1help)/60/60/24) )+"d "+ Math.floor(((val1help)/60/60) % 24) +"h "+ Math.floor( ((val1help)/60) % 60 )+" m" ;
               // val4=""
               if (existsState(id.replace("#enabled","percentage"))){
      
               }     
                
                val5="";
                val6="ohne Datenpunkt";
                for(var index in mySmarties){
                 if (mySmarties[index][0].includes(val0)) {val6=mySmarties[index][1];
                                                      if (existsState(val6)){
                                                          val4=(getState(val6).val).toString();
                                                           let val444help; 
                                                           if (val4=="false")   {val444help=false;ichWillSchalten(val6,val444help)} else if (val4=="true") {val444help=true; ichWillSchalten(val6,val444help)}
                                                           else {myCountId++;ichWillWertEingeben(val6);}}
                                                      else {val4="<font color=\""+"red"+"\">kein State-Ändern!!!<\/font>"}
                                                            } //<button style\=\"border:2px\; background-color\:"+farbeSchalterBackground+"\; color\:"+farbeSchalterSchrift+"\; font\-size\:80%\; text\-align:center\" value=\"toggle\" onclick=\"setOnDblClickCustom\(6)\">"+eigenerWert+"</button>
      
                }                                 
                      
                                                                   //{val4=symbolValueKO } else if (val4=="true") {val4=symbolValueOK}   
                
                val7=(getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3])._id).replace(/.+\.(.+$)/,"$1")+"("+position+") " ;
                if(sortNumber==666 && val3.indexOf("ioBroker")<0 ){
                let help=[val0,val1,val2,val3,val4,val5,val6,val7]; 
                mySort.push(help);
                } 
                if(sortNumber==4 || sortNumber==6 || sortNumber==7 || sortNumber==0 || sortNumber==4 || sortNumber==3){
                let help=[val0,val1,val2,val3,val4,val5,val6,val7]; 
                mySort.push(help);
                }
      
         //  tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          
         }}); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!
         // let sortNumber=6;
        //  if (!sortierungSchalter){
          //  log("sortiere mit"+sortNumber)
            if(sortNumber==666) sortNumber=3
         mySort.sort(function (alpha, beta) {
                  if ((alpha[sortNumber].toUpperCase()).trim() > (beta[sortNumber].toUpperCase()).trim())
                     return 1;
                  if ((beta[sortNumber].toUpperCase()).trim() > (alpha[sortNumber].toUpperCase()).trim())
                     return -1;
                  return 0;
                 });
                 
      
               
      
                  for(var i=0;i<mySort.length;i++) {
                     counter++
                     val0="("+counter+") "+(mySort[i][0]) ;
                     val1=mySort[i][1] ;
                     val2=mySort[i][2] ;
                     val3=mySort[i][3] ;
                     val4=mySort[i][4] ;
                     val5=mySort[i][5] ;
                     val6=mySort[i][6] ;
                     val7=mySort[i][7] ;
                   //  log(val5)
      
                  tabelleBind();  
       }
      
      //-------------------------------------------------------------------------------------------------------------------------------------------------
      //--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
      //-------------------------------------------------------------------------------------------------------------------------------------------------
      
            tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
           
      } // function ende
      
      //MAIN:
       
      schedule(mySchedule,  function () {
       writeHTML();
       if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
      }); 
       schedule('* */2 * * *',  function () {
       getMySmarties();
      
      }); 
      getMySmarties();
       writeHTML();
      
         				 function tabelleBind(){
           //HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT - hat man oben 5 Felder definiert, braucht man hier 5 Werte
         
             switch (mehrfachTabelle) {  
               case 1:  if(counter%2==0){  htmlOut=htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td align="+Feld8lAlign+">"+val7+"</td></tr>"; break;} else 
                                        {  htmlOut=htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td align="+Feld8lAlign+">"+val7+"</td></tr>"; break;}
      
              case 2:  if(counter%4==0) {
                        if(counter%2==0)            {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">"+val7+"</td>"; } 
                                    else {htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val7+"</td></tr>";} break;
                             }else{  
                        if(counter%2==0)            {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">"+val7+"</td>"; } 
                                    else {htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val7+"</td></tr>";} break;}
      
      
      
      
              case 3: if(counter%2==0 ) {
                         if(counter%3==0)           {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">"+val7+"</td>"; } 
                                    else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">"+val7+"</td>";} 
                                                     else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td align="+Feld8lAlign+">"+val7+"</td></tr>";}
                                               } break; }else{
                         if(counter%3==0)                {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">"+val7+"</td>"; } 
                                    else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td align="+Feld8lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\">"+val7+"</td>";} 
                                                     else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val3+"</td><td align="+Feld5lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td align="+Feld8lAlign+">"+val7+"</td></tr>";}
                                               } break;      }
      
      
      
      
              case 4: if(counter%8==0)  {
                         if(counter%4==0)               {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val4+"</td><td align="+Feld5lAlign+">"+val3+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">"+val7+"</td>"; } 
                                        else {if(counter%4==1 )  { htmlOut = htmlOut+"<td  align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td align="+Feld8lAlign+" style=\border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\">"+val7+"</td>";} 
                                                     else    {if(counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\>"+val7+"</td></tr>";} 
                                                                       else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >"+val0+"</td><td>"+val1+"</td><td align="+Feld2lAlign+">"+val2+"</td><td align="+Feld3lAlign+">"+val3+"</td><td align="+Feld4lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">"+val7+"</td>";}}
                                               } break;  }else{
                         if(counter%4==0)               {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >"+val0+"</td><td align="+Feld2lAlign+">"+val1+"</td><td align="+Feld3lAlign+">"+val2+"</td><td align="+Feld4lAlign+">"+val4+"</td><td align="+Feld5lAlign+">"+val3+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">"+val7+"</td>"; } 
                                        else {if(counter%4==1 )  { htmlOut = htmlOut+"<td  align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td align="+Feld8lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\">"+val7+"</td>";} 
                                                     else    {if(counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">"+val0+"</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val1+"</td><td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val2+"</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val3+"</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val4+"</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val5+"</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val6+"</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">"+val7+"</td></tr>";} 
                                                                       else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >"+val0+"</td><td>"+val1+"</td><td align="+Feld2lAlign+">"+val2+"</td><td align="+Feld3lAlign+">"+val3+"</td><td align="+Feld4lAlign+">"+val4+"</td><td align="+Feld6lAlign+">"+val5+"</td><td align="+Feld7lAlign+">"+val6+"</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">"+val7+"</td>";}}
                                               } break;       }
      
           } //switch ende
      
      
      
      }
      
      function tabelleFinish() {
      
            // tabelle fertigstellen
            switch (mehrfachTabelle) {  
             case 1:    break;
      
             case 2:    
                       if(counter%2==0)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');  
                      
                        break;
      
             case 3:   if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                       if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');         
                       if(counter%3==0)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");
                     
                        break;
             case 4:   if(counter%4==3)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                       if(counter%4==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');  
                       if(counter%4==1)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");    
                       if(counter%4==0)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>"); 
                       break; }
           
                          var htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: "+htmlÜberFontGroesse+"; font-weight:"+htmlSchriftWeite+ "\">"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</p>"; 
             var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 70%; text-align: right;\" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
              
              if (!htmlSignature) htmlUnter="";
                //Ausgabe über VIS html widget - tabelle in datenpunkt schreiben - html tabelle ohne html header und body
                 var htmlOutVIS="";
               //  htmlUberschrift ? htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>" : htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>";
                  if (htmlUberschrift) 
                      { zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript  ;
      
                    } else {
                     zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript  :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript ;
      
                       }
      
      // log("bin raus aus tabelleBind");
                 if (braucheEinVISWidget) setState(dpVIS, htmlOutVIS );
      
       var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
      
       if (!htmlSignature) htmlUnter="";
       var htmlEnd="</table>"+htmlUnter+"</div></body>";
       //mit oder ohne überschrift - zentriert oder links
      htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd;
       //log(htmlOut);
       
      myCountId=0;
      
      }
      
      function ichWillSchalten(id,val4help) {
         // val4help;   
           //     val4help ? val4=(" <font color=\""+farbeSchalterON+"\"> ")+"ON" : val4=(" <font color=\""+farbeSchalterOFF+"\"> ")+"OFF";
               // if (true){
              let valButton=id;
                val4help ? val4="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+valButton+"\')\">"+symbolSwitch + "</button> <font color=\""+farbeSchalterON+"\"> "+"ON&nbsp;</font>" :
                val4="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+valButton+"\')\">"+symbolSwitch+"</button> <font color=\""+farbeSchalterOFF+"\"> "+"OFF</font>";
                //} 
      }
      
      function ichWillWertEingeben(id,val4help) {
         // val4help;   
           //     val4help ? val4=(" <font color=\""+farbeSchalterON+"\"> ")+"ON" : val4=(" <font color=\""+farbeSchalterOFF+"\"> ")+"OFF";
               // if (true){
              let valButton=id;
              let valId="myEIDI"+id.replace(/.+\.(.+)$/,"$1")+myCountId;  
             // log(valId)
                val4="<table style=\"width:auto\"><tr><td>"+val4+"</td><td><form  onsubmit=\"return false\"><input type=\"text\"  style\=\"border:0px; font\-size\:80%\; width:45px; background-color\:"+farbeSchalterBackground+"\; color\:"+farbeSchalterSchrift+"\;\"  id=\""+valId+"\"> <input  width=\"25px\" type=\"submit\" style=\"visibility: hidden; \" value=\"myValueEingabe\" onclick=\"getInputValue(\'"+valButton+"\',\'"+valId+"\');\"></form></td></tr></table>"; // eigenerWert
             //   val4="<table ><tr><td>"+val4+"</td><td style=\"width: 40px\"><form  onsubmit=\"return false\"><input type=\"text\"  style\=\"border:0px; font\-size\:80%\;  background-color\:"+farbeSchalterBackground+"\; color\:"+farbeSchalterSchrift+"\;\"  id=\""+valId+"\"> <input  type=\"submit\" style=\"visibility: hidden; width:25 ;\" value=\"myValueEingabe\" onclick=\"getInputValue(\'"+valButton+"\',\'"+valId+"\');\"></form></td></tr></table>"; // eigenerWert
                //} 
      }
      
      on({id: dpRefresh, change: "any"}, function (obj) { 
         5
            
             var timeout2 = setTimeout(function () {
               
         writeHTML(); 
         
         }, 1500);
            // }
         
         });
      
      function getMySmarties(){
      anzahlSmarties=0 
      
             for(let name in select){
       
      
         $(select[name]+".*").each(function (id, i) {
             if(id.indexOf("variables.day")==-1){
       // if (i>4000 && i <4100) log(id)
         if(getObject(id).hasOwnProperty("common")  ){
           if(getObject(id).common.hasOwnProperty("smartName") ){
             if(getObject(id).common.smartName.hasOwnProperty("de") ){
                
            anzahlSmarties++
            let helpStates= Object.keys(getObject(id).common.smartName);
           // log(helpStates.toString()+" id : "+id + "count: "+ counter)
          //  log(getObject(id).common.smartName.de + "id : " +id)
            let help=[(getObject(id).common.smartName.de).replace(/\,/g,";"),id]
            mySmarties.push(help)
         }}}}
      
         });
         }
        // log(anzahlSmarties.toString())
      }
      
      
      /*
      on({id: dpSort, change: "any"}, function (obj) { 
            
            
             var timeout2 = setTimeout(function () {
               
         writeHTML(); 
         
         }, 1500);
            // }
         
         });
      
      
       
      
      on({id: myPower, change: "any"}, function (obj) { 
             
            
             var timeout2 = setTimeout(function () {
               
         writeHTML(); 
         
         }, 1500);
            // }
         
         });
       */
      
      
      
      
      

      1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky last edited by

        man kann jetzt auch werte eingeben und nicht nur logik-werte schalten

        smart.gif

        sigi234 1 Reply Last reply Reply Quote 0
        • sigi234
          sigi234 Forum Testing Most Active @liv-in-sky last edited by

          @liv-in-sky

          Wo habe ich einen Fehler?

          
          javascript.0	2020-03-12 15:46:17.590	error	(18120) at Script.runInContext (vm.js:133:20)
          javascript.0	2020-03-12 15:46:17.590	error	(18120) at script.js.Listen.Smarthome_Geraete:283:1
          javascript.0	2020-03-12 15:46:17.590	error	(18120) at getMySmarties (script.js.Listen.Smarthome_Geraete:426:25)
          javascript.0	2020-03-12 15:46:17.590	error	(18120) at Object.result.each (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\lib\sandbox.js:868:29)
          javascript.0	2020-03-12 15:46:17.590	error	(18120) at script.js.Listen.Smarthome_Geraete:429:20
          javascript.0	2020-03-12 15:46:17.590	error	(18120) TypeError: Cannot read property 'hasOwnProperty' of null
          javascript.0	2020-03-12 15:46:17.590	error	(18120) ^
          javascript.0	2020-03-12 15:46:17.590	error	(18120) if(getObject(id).hasOwnProperty("common") ){
          javascript.0	2020-03-12 15:46:17.590	error	(18120) script.js.Listen.Smarthome_Geraete: script.js.Listen.Smarthome_Geraete:429
          javascript.0	2020-03-12 15:46:17.589	warn	(18120) Object "javascript.0.0_userdata.0.Log-Script.All.visView1.outputJSON" does not exist
          javascript.0	2020-03-12 15:46:17.580	info	(18120) Start javascript script.js.Listen.Smarthome_Geraete
          javascript.0	2020-03-12 15:46:16.682	info	(18120) Stop script script.js.Listen.Smarthome_Geraete
          javascript.0	2020-03-12 15:46:00.216	warn	(18120) at Timer.processTimers (timers.js:223:10)
          
          liv-in-sky 1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @sigi234 last edited by

            @sigi234 scheint ein datenpunkt zu sein (javascript.0.0_userdata.0.Log-Script.All.visView1.outputJSON) der zwar als smartdevice irgendwo definiert wurde aber in wirklichkeit nicht mehr existiert

            schau mal ob dieser datenpunkt existiert oder schau mal unter deinen smart devices in der iot instanz, ob dieser datenpunkt zugewiesen wurde

            sigi234 1 Reply Last reply Reply Quote 0
            • sigi234
              sigi234 Forum Testing Most Active @liv-in-sky last edited by sigi234

              @liv-in-sky

              Den DP gibt es. Skript stürzt ab und legt den JS Adapter lahm.

              Was gehört hier rein?

              const select=["alexa2.0.Smart-Home-Devices"]   // dies ist ein beispiel mit meinen datenpunkten - muss angeglichen werden an euer system
              
              liv-in-sky 2 Replies Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @sigi234 last edited by liv-in-sky

                @sigi234 hier gehören die ordner, die durchsucht werden sollen rein - also nichts mit "alexa2.0"

                wenn du im iot ein neues smart device machst, machst du das indem du einen datenpunkt wählst und diesem dann einen smart device namen gibst. zum beispiel controll-own.0.lampen.flur_rechts ist eine lampe unter controll-own.0 - das sind meine eigenen datenpunkte und viele smart devices drin genutzt - daher gebe ich controll-own.0 ein in "select"

                ich habe auch den temperatur soll wert im fritzdect adapter meiner temperaturthermostaten eingegeben - daher steht auch fritzdect.0 drin

                also nur verzeichnisse, wo datenpunkte drin sind, aus denen ein smart device gemacht worden ist

                besser kann ich es nicht erklären 🙂

                1 Reply Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @sigi234 last edited by

                  @sigi234

                  kannst du mir mal bei gelegeheit zeigen, was im raw vom "javascript.0.0_userdata.0.Log-Script.All.visView1.outputJSON" steht

                  sigi234 1 Reply Last reply Reply Quote 0
                  • sigi234
                    sigi234 Forum Testing Most Active @liv-in-sky last edited by

                    @liv-in-sky sagte in HTML Table für Alexa Smart Devices:

                    @sigi234

                    kannst du mir mal bei gelegeheit zeigen, was im raw vom "javascript.0.0_userdata.0.Log-Script.All.visView1.outputJSON" steht

                    {
                      "from": "system.adapter.javascript.0",
                      "user": "system.user.admin",
                      "ts": 1584009890963,
                      "common": {
                        "name": "JSON-Ausgabe des in whichFilter gewählten Filters",
                        "type": "string",
                        "role": "state",
                        "def": "",
                        "read": true,
                        "write": false
                      },
                      "native": {},
                      "acl": {
                        "object": 1636,
                        "owner": "system.user.admin",
                        "ownerGroup": "system.group.administrator",
                        "state": 1636
                      },
                      "_id": "0_userdata.0.Log-Script.All.visView1.outputJSON",
                      "type": "state"
                    }
                    
                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @sigi234 last edited by

                      @sigi234

                      wegen der fehler - das problem sind die datenpunkte, die keine states haben ( also unbeschrieben sind) - an der stelle, an der wir getestet haben , konnte ich sehen, dass keine werte drin waren

                      mein script findet in deinen datenpunkten ein smart device eintrag und will den state abfragen , da der ja schaltbar sein soll - ist der noch nie beschrieben worden - kommt es zu diesen fehlern - letztlich ist in der states datenbank noch kein eintrag vorhanden - ich habe das mal abgefangen - sieht dann so aus:

                      neues script im ersten post - wir können auch gerne morgen zusammen testen, falls noch ein fehler auftritt- nochmals danke für deine zeit

                      Image 9.png

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      629
                      Online

                      31.6k
                      Users

                      79.4k
                      Topics

                      1.3m
                      Posts

                      javascript monitoring template
                      2
                      9
                      1213
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo