<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[HTML Tabelle Linux-Control Adapter]]></title><description><![CDATA[<p dir="auto">nachdem <a class="plugin-mentions-user plugin-mentions-a" href="/user/scrounger" aria-label="Profile: Scrounger">@<bdi>Scrounger</bdi></a>  mal wieder einen coolen adapter "rausgelassen" hat , habe ich mal versucht, das ganze etwas vis-freundlicher zu gestallten</p>
<p dir="auto"><span style="color:#871d32">edit:</span> leider habe ich festgestellt, dass die html tabelle für mehrere server (bei mir 8 stück) eigentlich sehr unpraktisch ist (wird zu lang) - daher liegt der vorteil bei dem Material Design List Widget - siehe 2ten post</p>
<ul>
<li>
<p dir="auto">grundlage des scriptes ist: <a href="https://forum.iobroker.net/topic/28021/html-table-f%C3%BCr-vis-oder-iqontrol-js-und-blockly">https://forum.iobroker.net/topic/28021/html-table-für-vis-oder-iqontrol-js-und-blockly</a></p>
</li>
<li>
<p dir="auto">adapter thread:<a href="https://forum.iobroker.net/topic/35870/test-adapter-linux-control-v0-x-x/2">https://forum.iobroker.net/topic/35870/test-adapter-linux-control-v0-x-x/2</a></p>
</li>
<li>
<p dir="auto">für übersicht in der vis (tabelle wird über html-widget mit binding angezeigt) oder in iqontrol</p>
</li>
<li>
<p dir="auto">Material Design List Widget - siehe 2ten post !</p>
</li>
<li>
<p dir="auto">wie üblich müssen datenpunkte selbst angelegt werden und im script eingegeben werden (z.b. let <strong>dpVIS</strong>="0_userdata.0.Tabellen.Linux-Control" oder <strong>dpMaterialWidget</strong>)</p>
</li>
<li>
<p dir="auto">im setting bereich des scriptes können die html settings auf wunsch geändert werden (darstellung farbe, ...)<br />
die tabelle refresht jede minute</p>
</li>
<li>
<p dir="auto">die bilder müssen unbedingt in der const=apName verewigt werden und natürlich auch in dr vis upgeloaded werden</p>
</li>
<li>
<p dir="auto"><strong>Restart</strong> und <strong>Shutdown funktionieren</strong> in der html tabelle (sind schalter) !! - <span style="color:#ff0000">kann im setting deaktiviert werden</span></p>
</li>
<li>
<p dir="auto">für mehrere server (proxmox) kann auch eine mehrfach-tabellen-anzeige genutzt werden</p>
</li>
<li>
<p dir="auto">es gibt aber noch mehr settings, die im adapter selbst eingestellt werden <span style="color:#ff0000">müssen</span></p>
</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>tab DATENPUNKTE</th>
<th colspan="2">setting</th>
</tr>
</thead>
<tbody>
<tr>
<td>datenpunkte</td>
<td>unter control: <strong>alle</strong></td>
<td><strong>MUSS</strong></td>
</tr>
<tr>
<td>datenpunkte</td>
<td>unter distribution: <strong>alle</strong></td>
<td>optional</td>
</tr>
<tr>
<td>datenpunkte</td>
<td>unter updates:  <strong>alle</strong></td>
<td>optional</td>
</tr>
<tr>
<td>datenpunkte</td>
<td>unter services: <strong>running</strong></td>
<td>optional</td>
</tr>
<tr>
<td>datenpunkte</td>
<td>unter info</td>
<td>MUSS: <strong>alle</strong></td>
</tr>
</tbody>
<tbody>
<tr>
<td>tab BEFEHLE</td>
<td><strong>name des befehls</strong></td>
<td>MUSS befehle</td>
</tr>
<tr>
<td>------</td>
<td>------</td>
<td>------</td>
</tr>
<tr>
<td>es müssen genau die namen des befehls eingegeben werden</td>
<td colspan="2"><strong>name des befehls</strong></td>
</tr>
<tr>
<td><strong>MUSS-befehl</strong> für <strong>jeden</strong> server !!!</td>
<td><strong>cpu-temp</strong></td>
<td>die temp des servers (bei proxmox lxc,vm ausnahme)</td>
</tr>
<tr>
<td><strong>MUSS-befehl</strong> für <strong>jeden</strong> server !!!</td>
<td><strong>root</strong></td>
<td>das rootverzeichnis um die plattenkapazität zu prüfen</td>
</tr>
</tbody>
</table>
<p dir="auto">befehle, die bei mir funktionieren<br />
cpu-temp (wird angepasst werden müssen):</p>
<pre><code>bei Debian: sensors | grep Package -m 1 | awk '{print $4}' | awk '{print substr($1, length($0)-6,2)}'
bei raspi: vcgencmd measure_temp | awk '{print substr($1, length($0)-5,4)}'
</code></pre>
<p dir="auto">root-verzeichnis - prozent genutzt</p>
<pre><code>df / | grep / | awk '{ print $5}' | sed 's/%//g'
</code></pre>
<p dir="auto">ip adresse: (<span style="color:#ff0000">nicht mehr nötig - ist im adapter plaziert worden</span>)</p>
<pre><code>hostname -I | cut -d' ' -f1
</code></pre>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>tab BEFEHLE</th>
<th>name des befehls</th>
<th>optional</th>
</tr>
</thead>
<tbody>
<tr>
<td>alles was gewünscht</td>
<td>kurz halten!</td>
<td>die befehle müssen vor dem befehlnamen ein "befehle." stehen haben - siehe: <a href="https://forum.iobroker.net/post/475154">https://forum.iobroker.net/post/475154</a></td>
</tr>
<tr>
<td>Speicher</td>
<td>mem</td>
<td>```free -m</td>
<td>awk ' NR == 2 {print $2";"$3";"$4}'```</td>
</tr>
<tr>
<td>Swap</td>
<td>swap</td>
<td>```free -m</td>
<td>awk ' NR == 3 {print $2";"$3";"$4}'```</td>
</tr>
<tr>
<td>Top-Process</td>
<td>top-process</td>
<td>```ps auxh --sort=-c</td>
<td>awk 'NR&lt;=1 {print $3";"$11}'```</td>
</tr>
</tbody>
<tbody>
<tr>
<td>tab ORDNER</td>
<td colspan="2">name des ordners</td>
</tr>
<tr>
<td>------</td>
<td>------</td>
<td>------</td>
</tr>
<tr>
<td>alles was gewünscht</td>
<td>kurz halten!</td>
<td>optional</td>
</tr>
</tbody>
</table>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>tab SERVICE</th>
<th colspan="2">service name</th>
</tr>
</thead>
<tbody>
<tr>
<td>service</td>
<td colspan="2">es <span style="color:#ff0000">sollte mindestens ein service ausgewählt</span> werden (z.b. ssh) ansonsten werden alle angezeigt, was die tabelle "sprengt"</td>
</tr>
<tr>
<td>alles was gewünscht</td>
<td>ist vorgegeben! werden ausgewählt</td>
<td>die namen werden gekürzt wenn zu lang, einstellbar im script</td>
</tr>
</tbody>
</table>
<p dir="auto">bisher sieht die tabelle so aus:</p>
<p dir="auto"><img src="/assets/uploads/files/1597242010048-image-4.png" alt="Image 4.png" class=" img-fluid img-markdown" /> <img src="/assets/uploads/files/1597301812745-image-1.png" alt="Image 1.png" class=" img-fluid img-markdown" /><br />
die temperatur sieht man hier nicht, da ich proxmox nutze und nur der die temp hat<br />
</p><section class="spoiler-wrapper"><button class="spoiler-control btn btn-default">Spoiler</button><section style="display:none" class="spoiler-content"><br />
<img src="/assets/uploads/files/1597242687864-image-9.png" alt="Image 9.png" class=" img-fluid img-markdown" /><br />
</section></section><p></p>
<p dir="auto">mehrfach:<br />
</p><section class="spoiler-wrapper"><button class="spoiler-control btn btn-default">Spoiler</button><section style="display:none" class="spoiler-content"><br />
<img src="/assets/uploads/files/1597241959426-image-3.png" alt="Image 3.png" class=" img-fluid img-markdown" /><br />
</section></section><p></p>
<p dir="auto">wer gerne testen möchte:</p>
<p dir="auto"></p><section class="spoiler-wrapper"><button class="spoiler-control btn btn-default">script zum import</button><section style="display:none" class="spoiler-content"><p></p>
<pre><code>//@liv-in-sky 2020  23.8.-17: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   braucheMaterialDesignWidget=false;             // bei true wird ein json in einen dp geschrieben - MUSS ANGELEGT WERDEN !!!
let dpMaterialWidget="0_userdata.0.Tabellen.Linux-Controll-List-Widget";            // WICHTIG wenn braucheMaterialDesignWidget auf true MATERIALDESIGN List Widget - datenpunkt anlegen : zeichenkette 
let dpVIS="0_userdata.0.Tabellen.Linux-Control"         //WICHTIG wenn "braucheEinVISWidget" auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget
let dpMaterialWidgetExtra="0_userdata.0.Tabellen.Linux-Control-MDList-Extra"   // WICHTIG wenn braucheMaterialDesignWidget auf true MATERIALDESIGN List Widget - datenpunkt anlegen : zeichenkette 
let mySchedule=" * * * * * ";                       //jede minute  

let leerzeile=true;                   // leerzeile vor neuem server
let farbeUeber="#A0C2A0"              //"#4da6ff" (blau)             // farbe der servernamen
let styleUeber="span"                 // style der server namen:  möglich b fett; i kursiv; span normal
var mylum=0.0                         //farbveränderung im bezug zum servernamen von HD uns IP
var mylumFolder=0.0                   //farbveränderung im bezug zur Standarsschriftfarbe von Folder Anzeige
var mylumService=0.0                 //farbveränderung im bezug zur Standarsschriftfarbe von Serviceanzeige 
var mylumButtons=0.0                  //farbveränderung im bezug zur Standarsschriftfarbe von Buttonsanzeige 
var mylumBefehle=0.0                   //farbveränderung im bezug zur Standarsschriftfarbe von Befehleanzeige 
let mysonderFarbeHDundTEMP="#33ff33"   // farbe in MD List Widget von Temp und root-festplatte

var serviceTrue="🟢"                 //"🔵"       //⚪      //emoji für dienste die laufen
var serviceFalse="✖️"                //"🔴"  
var mitShutdownBotton=true;           // zeigt shutdown und restart button an
var symbolLinkRestart="☢️"
var symbolLinkShutdown="☢️"
var symbolLinkCommands="🔘" //"⚠️"
var farbeOffline="#466d46"            //farbe für server , die offline sind
var farbeMDbackgroundOffline= "#484837"          //farbe der kachel in MaterialDesign wenn offline
var farbeMDschriftOffline="#33ff33"//            //farbe der schrift in MaterialDesign wenn offline

var debug=false;                                  // für script debuggen
// zweites MD List Widget
var wantExtra=["Proxmox","IOBroker"]             //  server NAme für extra angezeigte Server - eigenes MD List Widget (dpMaterialWidgetExtra) // leer ist []
var removeOthers=true;                           // wenn true wird die wantExtra Server aus dem Haupt MD List Widget gelöscht
var thresholHD=80;
var thresholTemp=75;
var thresholPakete=0;

var braucheShellInaBox=false;          // SHELL IN A BOX einstellungen
var shellBox="🥟"

var laengeServiceNamen=11;            // dient zum kürzen von langen service namen

var bildergröße=17
const apName = { "FileServer"      : { aname: "https://forum.iobroker.net/assets/uploads/files/1597247720123-fileserver.png"},
                 "IOBroker"        : { aname: "https://upload.wikimedia.org/wikipedia/commons/8/82/IoBroker_Logo.png"},  
                 "MotionEye"       : { aname: "https://forum.iobroker.net/assets/uploads/files/1597247718354-motioneye.png"},
                 "Pi-Hole"         : { aname: "https://forum.iobroker.net/assets/uploads/files/1597247720225-pi-hole.png"},
                 "PlexServer"      : { aname: "https://forum.iobroker.net/assets/uploads/files/1597247718413-plexserver.png"},
                 "Proxmox"         : { aname: "https://forum.iobroker.net/assets/uploads/files/1597247718381-proxmox.png"},
                 "SQLTulla"        : { aname: "https://forum.iobroker.net/assets/uploads/files/1597247720017-sqltulla.png"},
                  "AX--HD-60"        : { aname: "https://forum.iobroker.net/assets/uploads/files/1597941596015-ax-hd60.png"},
                  "GalaxyTab2"        : { aname: "https://forum.iobroker.net/assets/uploads/files/1598105726154-samsung.png"},
                 "Raspi"           : { aname: "https://forum.iobroker.net/assets/uploads/files/1597247719882-raspi.png"}}    // oder lokal gespeichert: vis.0/armin/img//server/IOBroker.png

//---------------------------------------

//HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 4
var htmlFeld1='Server';       var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
var htmlFeld2='';             var Feld2lAlign="center";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
var htmlFeld3='';             var Feld3lAlign="center";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
var htmlFeld4='';             var Feld4lAlign="right";                    // überschrift Tabellen Spalte4 und  Ausrichtung left,right or center
//-----------------------------------



//ÜBERSCHRIFT ÜBER TABELLE
let   htmlUberschrift=false;                           // mit Überschrift über der tabelle
let   htmlSignature=false;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
const htmlFeldUeber='Linux Server';              // Ü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="#BDBDBD";                // 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="3";                   // 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";
const htmlSchriftgroesse="16px";
//FELDER UND RAHMEN
let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
const htmlFarbFelderschrift="#BDBDBD";                  // SchriftFarbe der Felder
const htmlFarbFelderschrift2="#BDBDBD";                 // SchriftFarbe der Felder für jede 2te Tabelle
const htmlFarbTableColorGradient1="#424242";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
const htmlFarbTableColorGradient2="#424242";          //  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="all";                            // 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 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='&lt;center&gt;'
const htmlStart=    "&lt;!DOCTYPE html&gt;&lt;html lang=\"de\"&gt;&lt;head&gt;&lt;title&gt;Vorlage&lt;/title&gt;&lt;meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"&gt;"+
                 "&lt;style&gt; * {  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+"}"+
                 " &lt;/style&gt;&lt;/head&gt;&lt;body&gt; &lt;div&gt;";
//const htmlUeber=    "&lt;p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-weight: bold\"&gt;"+htmlFeldUeber+"&lt;/p&gt;";                    
const htmlTabStyle= "&lt;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+");\"&gt;";
const htmlTabUeber1="&lt;tr height=\""+UeberSchriftHöhe+"\" style=\"color:"+htmlFarbTableColorUber+"; font-size: "+groesseUeberschrift+"px; font-weight: "+UeberschriftStyle+" ;  border-bottom: "+LinieUnterUeberschrift+"px solid "+farbeLinieUnterUeberschrift+" \"&gt;";
const htmlTabUeber3="&lt;/tr&gt;";




//NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 4
//htmlFeld2="last Update"
//htmlFeld4=formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss")


const buttonScript =   '&lt;script&gt; function setOnDblClickCustom1( myvalue ) {var Self = this; objID = myvalue;  console.log(myvalue); Self.servConn.setState(objID, true); console.log(objID)} '+
                      '&lt;/script&gt;'
//------------------------------------------------------

function dlog(message) {
  if(debug)
      console.log(message);
}
var htmlOut="";
var mix;
var counter;
var val1; var val2; var val0; var val3;
var htmlTabUeber="";
let myArr=[];
let myArrFolder=[];
let myArrService=[];
let myArrButtons=[];
let myArrBefehle=[];
let myArrRefresh=[];
let obj1=[]
 let obj2=[]
let   countMYWerte;
let idOld="";
let helpRestart; let helpShutdown;let helpVersion;let upgrade;let up_date;let up_pack;let helpBild;let helpMem;let helpSwap;let helpTopProcess;let helpLastRefresh;
let is_running=false
var myJsonWidget2=[];


function writeHTML(){
   is_running=true
let  htmlFeld4help=formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss")

var htmlTabUeber2="&lt;td width="+htmlSpalte1Weite+" align="+Feld1lAlign+"&gt;&amp;ensp;"+htmlFeld1+"&amp;ensp;&lt;/td&gt;&lt;td width="+htmlSpalte1Weite+" align="+Feld2lAlign+"&gt;&amp;ensp;"+htmlFeld2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld3lAlign+"&gt;&amp;ensp;"+htmlFeld3+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld4lAlign+"&gt;&amp;ensp;"+htmlFeld4help+"&amp;ensp;&lt;/td&gt;";
var htmlTabUeber2_1="&lt;td width="+htmlSpalte1Weite+" align=="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&gt;&amp;ensp;"+""+"&amp;ensp;&lt;/td&gt;&lt;td width="+htmlSpalte1Weite+"  align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&gt;&amp;ensp;"+htmlFeld2+
                   "&amp;ensp;&lt;/td&gt;&lt;td  align=="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&gt;&amp;ensp;"+htmlFeld3+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&gt;&amp;ensp;"+htmlFeld4+
                   "&amp;ensp;&lt;/td&gt;";


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 !!!---------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------------
myArr=[]; myArrFolder=[]; myArrService=[]; myArrButtons=[]; myArrBefehle=[]; myArrRefresh=[];
$('linux-control.0.*.info.is_online').each(function(id, i) {         //YXJtaW4uc2xpdmluc2t5QGdtYWlsLm  // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
       
      var ida = id.split('.');
            //  linux-control.0.Pi-Hole.control.shutdown
              //linux-control.0.Pi-Hole.info.is_online
       
                val0= ida[2]
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".root") ? val1=getState(ida[0]+"."+ida[1]+"."+ida[2]+".root").val : val1="missing"
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".info.ip") ? val2=getState(ida[0]+"."+ida[1]+"."+ida[2]+".info.ip").val : val2="missing"
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".cpu-temp") ? val3=getState(ida[0]+"."+ida[1]+"."+ida[2]+".cpu-temp").val :val3=""
                //helpRestart;  
              //  if ( existsState(id.replace("info.is_online","control.restart")))  {mitShutdownBotton ?  helpRestart=id.replace("info.is_online","control.restart") : helpRestart=""} else{helpRestart=""}
                mitShutdownBotton ?  helpRestart=id.replace("info.is_online","control.restart") : helpRestart=""
                //helpShutdown; 
              //  log(id)
               // log ( existsState(id.replace("info.is_online","control.shutdown")).toString())
              //  if ( existsState(id.replace("info.is_online","control.shutdown"))) {mitShutdownBotton ? helpShutdown=id.replace("info.is_online","control.shutdown") : helpShutdown="";} else{helpShutdown=""}
                mitShutdownBotton ? helpShutdown=id.replace("info.is_online","control.shutdown") : helpShutdown="" 
             //  log(helpShutdown)
                //helpVersion
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".distribution.fullname") ? helpVersion=getState(ida[0]+"."+ida[1]+"."+ida[2]+".distribution.fullname").val.replace(/.+ (.+ )\((.+)\)/,"$2 ($1)") : helpVersion=" unknown "
                //upgrade
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".updates.upgradable") ? upgrade=(getState(ida[0]+"."+ida[1]+"."+ida[2]+".updates.upgradable").val) : up_pack="missing"
                upgrade ? upgrade="Ja" : upgrade="Nein"
                //up_date                                                                  
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".updates.lastUpdate") ? up_date=formatDate(getDateObject(((new Date(getState(ida[0]+"."+ida[1]+"."+ida[2]+".updates.lastUpdate").val).getTime()))), "TT.MM.YY") : up_date="missing"
                //up_pack;
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".updates.newPackages") ? up_pack=(getState(ida[0]+"."+ida[1]+"."+ida[2]+".updates.newPackages").val) : up_pack="missing"
                //helpMem
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".mem") ? helpMem=getState(ida[0]+"."+ida[1]+"."+ida[2]+".mem").val :helpMem=""
                
                //helpSwap
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".swap") ? helpSwap=getState(ida[0]+"."+ida[1]+"."+ida[2]+".swap").val :helpSwap=""
                //helpTopProcess
                existsState(ida[0]+"."+ida[1]+"."+ida[2]+".top-process") ? helpTopProcess=getState(ida[0]+"."+ida[1]+"."+ida[2]+".top-process").val :helpTopProcess=""
                //helpLastRefresh
                if ( existsState(id.replace("info.is_online","info.lastRefresh")))  {helpLastRefresh=getState(id.replace("info.is_online","info.lastRefresh")).val } else{helpLastRefresh=""}

                //helpBild;
                helpBild="&lt;img src=https://upload.wikimedia.org/wikipedia/commons/8/82/IoBroker_Logo.png height=\""+bildergröße+"\" width=\""+bildergröße+"\"&gt;"
              for(let device_name in apName) { 
                     if (val0==device_name) {helpBild="&lt;img src="+apName[device_name].aname+" height=\""+bildergröße+"\" width=\""+bildergröße+"\"&gt;"; }}
           
              let helpOnline=getState(ida[0]+"."+ida[1]+"."+ida[2]+".info.is_online").val
             
              let myhelp=[val0,val1,val2,val3,helpRestart,helpShutdown,helpVersion,helpBild,helpOnline,upgrade,up_date,up_pack,helpMem,helpSwap,helpTopProcess,helpLastRefresh]        ; 
              dlog(myhelp.toString())
              myArr.push(myhelp)
//--------------------------Folder               
              let mySelektor="linux-control.0."+ida[2]+".folders.*.size"
            //  let mymycount=0
              $(mySelektor).each(function(id2, i) { 
                   var ids = id2.split('.');
                    myArrFolder.push([ids[2],ids[4],getState(ids[0]+"."+ids[1]+"."+ids[2]+"."+ids[3]+"."+ids[4]+"."+ids[5]).val,i,getObject(ids[0]+"."+ids[1]+"."+ids[2]+"."+ids[3]+"."+ids[4]+"."+ids[5]).common.unit,id] )
                     }); 
//--------------------------Services                      
              mySelektor="linux-control.0."+ida[2]+".services.*.running"      
              $(mySelektor).each(function(id3, i) { 
                   var idx = id3.split('.');
                //   log(idx[4].replace(/(.+)server.+/g,"$1"))
                  //  myArrService.push([idx[2],idx[4].substring(0,laengeServiceNamen),getState(id3).val,i,id3] )
                    idx[4]=idx[4].replace(/(.+)service/g,"$1")
                    idx[4]=idx[4].replace(/(.+)server\*+/g,"$1")
                    idx[4]=idx[4].substring(0,laengeServiceNamen)

                    myArrService.push([idx[2],idx[4],getState(id3).val,i,id3] )
                     });  
//--------------------------Buttons            
              let mycounty=-1
              mySelektor="state[id=linux-control.0."+ida[2]+".*][role=button]"
                    $(mySelektor).each( function( id4, i){  
                      var idy = id4.split('.'); if  (idy.length==4)  mycounty++
                      if  (idy.length==4)  {myArrButtons.push([idy[2],idy[3],mycounty,id4] ); myArrRefresh.push(id4)}
                     });   
     /////-----------für refresh
                mycounty=-1
              mySelektor="state[id=linux-control.0."+ida[2]+".*][role=value]"
                    $(mySelektor).each( function( id4, i){  
                      var idy = id4.split('.'); if  (idy.length==4)  mycounty++
                      if  (idy.length==4)  {/*myArrButtons.push([idy[2],idy[3],mycounty,id4] );*/ myArrRefresh.push(id4)}
                     });        
//--------------------------Befehle            
              let mycounty2=-1
              mySelektor="linux-control.0."+ida[2]+".befehle.*"     
                    $(mySelektor).each( function( id5, i){  mycounty2++
                      var idz = id5.split('.');  // log(id);mycounty2++
                        myArrBefehle.push([idz[2],idz[4],mycounty2,getState(id5).val] ) ; myArrRefresh.push(id5)
                     });                                 
              
      // counter++; tabelleBind()
   }); 
  dlog("Länge Server: "+myArr.length.toString())         // ;log(myArr.toString())
  dlog("Länge Folder: "+myArrFolder.length.toString())    //dlog(myArrFolder.toString())
  dlog("Länge Service: "+myArrService.length.toString())   //dlog(myArrService.toString())
  dlog("Länge Buttons: "+myArrButtons.length.toString())   //dlog(myArrButtons.toString())
  dlog("Länge Buttons: "+myArrRefresh.length.toString())   //;log(myArrRefresh.toString())
  dlog("Länge Buttons: "+myArrBefehle.length.toString())   //;log(myArrBefehle.toString())
  

  
  
  countMYWerte=0;
   

                   for(var i=0;i&lt;myArr.length;i++) {
                    dlog(myArr[i][0] +" und "+idOld)
               //  if(myArr[i][0]!=idOld){ dlog("erster Ablauf Durchlauf")
                      countMYWerte++
                      tabelleMachSchoen()
                      counter=-1
                      if(leerzeile){
                                    if(countMYWerte&gt;1) for(var a=0;a&lt;mehrfachTabelle;a++ ) { //leerzeile
                                          val0=""; val1=""; val2="";val3="";counter++;tabelleBind();
                                     } }

          if (myArr[i][8])     {  
// ----------------------------erste zeile Zeile                                   
             for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) { if (i==0 &amp;&amp; ic==0)  dlog("Verarbeite erste Zeile");
                  if  (ic==0) { val0=myArr[i][7]+"&amp;ensp; &lt;span style=\"font-size:130%\"&gt;&lt;font color=\""+farbeUeber +"\"&gt;&lt;"+styleUeber+"&gt;"+myArr[i][0]+"&lt;span&gt;";
                                if(braucheShellInaBox) {val0=val0+" &lt;a style=\" font-size:70% \" href=\"https:\/\/"+ myArr[i][2] + ":4200\" target=\"_blank\" onclick=\"window.open(this.href,this.target,\'width=760,height=640\'); return false;\"&gt;"+shellBox+"&lt;/a&gt;"}
                    // val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][1];
                      myArr[i][1]!="" ? val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;HD: "+myArr[i][1]+" %" : val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][1];
                      myArr[i][2]!="" ? val2="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][2] : val2="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][2];
                      myArr[i][3]!="" ? val3="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][3]+" °C" : val3="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][3];
                      //Threshold
                     if( myArr[i][1]!="" &amp;&amp; myArr[i][1]&gt;thresholHD ) val1="&lt;font color=\""+"red" +"\"&gt;HD: &lt;b&gt;"+myArr[i][1]+" %&lt;/b&gt;";
                     if( myArr[i][3]!="" &amp;&amp; myArr[i][1]&gt;thresholTemp) val3="&lt;font color=\""+"red" +"\"&gt;&lt;b&gt;"+myArr[i][3]+" °C&lt;/b&gt;" ;
                     
                      } else {val0=""
                              val1="";
                              val2="";
                              val3=""} 
            counter++;
            tabelleBind();}
// ----------------------------zweite Zeile
for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) { if (i==0 &amp;&amp; ic==0)  dlog("Verarbeite erste Zeile");
             if(myArr[i][12]!="")  { let myMemTab=myArr[i][12].split(";");
                if  (ic==0) { val0="&lt;font color=\""+ColorLuminance(farbeUeber,mylumFolder) +"\"&gt;"+"Memory(MB)"; 
                      if (i==0 &amp;&amp; ic==0 )  dlog("Verarbeite zweite Zeile");
             
                     val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;Total: "+myMemTab[0]
                     val2="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;Used: "+myMemTab[1]
                     val3="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;Free :"+myMemTab[2]
                    
                       } else {val0=""
                               val1="";
                               val2="";
                               val3=""} 
            counter++;
            tabelleBind();}}
// ----------------------------zweite Zeile
for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) { if (i==0 &amp;&amp; ic==0)  dlog("Verarbeite erste Zeile");
             if(myArr[i][13]!="")  { let myMemTab=myArr[i][13].split(";");
                if  (ic==0) { val0="&lt;font color=\""+ColorLuminance(farbeUeber,mylumFolder) +"\"&gt;"+"Swap(MB)"; 
                      if (i==0 &amp;&amp; ic==0 )  dlog("Verarbeite zweite Zeile");
             
                     val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;Total: "+myMemTab[0]
                     val2="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;Used: "+myMemTab[1]
                     val3="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;Free :"+myMemTab[2]
                    
                       } else {val0=""
                               val1="";
                               val2="";
                               val3=""} 
            counter++;
            tabelleBind();}       }      
// ----------------------------zweite Zeile
for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) { if (i==0 &amp;&amp; ic==0)  dlog("Verarbeite erste Zeile");
                if  (ic==0) { val0="&lt;font color=\""+ColorLuminance(farbeUeber,mylumFolder) +"\"&gt;"+"Updates"; 
                      if (i==0 &amp;&amp; ic==0 )  dlog("Verarbeite zweite Zeile");
             
                     val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][9]
                     val2="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][11]+" Paket(e)"
                     val3="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+" zuletzt: "+myArr[i][10]
                    
                       } else {val0=""
                               val1="";
                               val2="";
                               val3=""} 
            counter++;
            tabelleBind();
             }            
// ----------------------------dritte Zeile
for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) { if (i==0 &amp;&amp; ic==0)  dlog("Verarbeite erste Zeile");
                if  (ic==0) { val0=""; if (i==0 &amp;&amp; ic==0 )  dlog("Verarbeite dritte Zeile");
             
                      myArr[i][6]!="" ? val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][6]+"" : val1="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+myArr[i][6];
                      let valButton=myArr[i][4]; 
                      myArr[i][4]!="" ? val2="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+ "Restart!&amp;emsp;"+"&lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'"+valButton+"\')\"&gt;"+symbolLinkRestart  + "&lt;/button&gt;" : val2="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;-" ;
                      valButton=myArr[i][5]
                      myArr[i][5]!="" ? val3="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;"+"Shutdown!&amp;emsp;"+"&lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'"+valButton+"\')\"&gt;"+symbolLinkShutdown + "&lt;/button&gt;" : val3="&lt;font color=\""+ColorLuminance(farbeUeber,mylum) +"\"&gt;-";
                    
                       } else {val0=""
                               val1="";
                               val2="";
                               val3=""} 
            counter++;
            tabelleBind();
          }
          
               } else{
            for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) {    
                   if  (ic==0) { val0=myArr[i][7]+"&amp;ensp; &lt;span style=\"font-size:130%\"&gt;&lt;font color=\""+farbeMDschriftOffline +"\"&gt;&lt;"+styleUeber+"&gt;&lt;i&gt;"+myArr[i][0]+"&lt;/i&gt;&lt;span&gt;";
                    
                       myArr[i][1]!="" ? val1="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;HD: "+myArr[i][1]+" %&lt;/i&gt;" : val1="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;"+myArr[i][1];
                       myArr[i][2]!="" ? val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;"+myArr[i][2]+"&lt;/i&gt;" : val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;"+myArr[i][2];
                       myArr[i][3]!="" ? val3="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;"+myArr[i][3]+" °C&lt;/i&gt;" : val3="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;"+myArr[i][3];
                      
                       } else {val0=""
                               val1="";
                               val2="";
                               val3=""} 
             counter++;
             tabelleBind();}
for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) {  
              if  (ic==0) { val0="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;"+"Updates"+"&lt;/i&gt;" ; 
                      if (i==0 &amp;&amp; ic==0 )  dlog("Verarbeite zweite Zeile");
             
                     val1="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;"+myArr[i][9]+"&lt;/i&gt;" 
                     val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;"+myArr[i][11]+"&lt;/i&gt;" 
                     val3="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;"+myArr[i][10]+"&lt;/i&gt;" 
                    
                       } else {val0=""
                               val1="";
                               val2="";
                               val3=""} 
            counter++;
            tabelleBind();}
            
     for(var ic=0;ic&lt;mehrfachTabelle;ic++ ) {        
             if  (ic==0) { val0="";
                       myArr[i][6]!="" ? val1="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;&lt;i&gt;"+myArr[i][6]+"&lt;/i&gt;" : val1="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;"+myArr[i][6];
                       let valButton=myArr[i][4]; 
                       myArr[i][4]!="" ? val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;"+ "&lt;i&gt;Restart!&amp;emsp;&lt;/i&gt; " : val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;-" ;
                       valButton=myArr[i][5]
                       myArr[i][5]!="" ? val3="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;"+"&lt;i&gt;Shutdown!&amp;emsp;&lt;/i&gt; ": val3="&lt;font color=\""+ColorLuminance(farbeOffline,mylum) +"\"&gt;-";
                     
                        } else {val0=""
                                val1="";
                                val2="";
                                val3=""} 
             counter++;
             tabelleBind(); }

               }      
               
            tabelleMachSchoen()
                      counter=-1

                   
      
//  --------------------------------------------(Folder)                      
         for(var ib=0;ib&lt;myArrFolder.length;ib++) {  if (i==0 &amp;&amp; ib==0) dlog("Verarbeite Folder");
                              
         if (myArrFolder[ib][0]==myArr[i][0]){  
                      
                if (myArr[i][8])     {  
                        myArrFolder[ib][3]==0? val0="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumFolder) +"\"&gt;"+"Folder"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumFolder) +"\"&gt;"+myArrFolder[ib][1]
                        val3="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumFolder) +"\"&gt;"+myArrFolder[ib][2] +" "+myArrFolder[ib][4]
                        counter++; tabelleBind();
                        } else{
                   /*     myArrFolder[ib][3]==0? val0="&lt;font color=\""+ColorLuminance(farbeOffline,mylumFolder) +"\"&gt;&lt;i&gt;"+"Folder&lt;/i&gt;"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylumFolder) +"\"&gt;&lt;i&gt;"+myArrFolder[ib][1]+"&lt;/i&gt;"
                        val3="&lt;font color=\""+ColorLuminance(farbeOffline,mylumFolder) +"\"&gt;&lt;i&gt;"+myArrFolder[ib][2] +" "+myArrFolder[ib][4]+"&lt;/i&gt;"   
                        counter++; tabelleBind();*/
                        }
                         }   }
//  --------------------------------------------(Service)                          
       tabelleMachSchoen()
       counter=-1
                     
         for(var ia=0;ia&lt;myArrService.length;ia++) {  if (i==0&amp;&amp; ia==0) dlog("Verarbeite Service");
         if (myArrService[ia][0]==myArr[i][0]){  
               if (myArr[i][8])     {  
                        myArrService[ia][3]==0? val0="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumService) +"\"&gt;"+"Service"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumService) +"\"&gt;"+myArrService[ia][1]
                        myArrService[ia][2] ? val3=serviceTrue :val3=serviceFalse 
                        counter++; tabelleBind();
                      } else {
                   /*     myArrService[ia][3]==0? val0="&lt;font color=\""+ColorLuminance(farbeOffline,mylumService) +"\"&gt;&lt;i&gt;"+"Service&lt;/i&gt;"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylumService) +"\"&gt;&lt;i&gt;"+myArrService[ia][1]+"&lt;/i&gt;"
                        val3=serviceFalse   
                        counter++; tabelleBind();   */
                      }    
                         } }
//  --------------------------------------------Buttons)
      tabelleMachSchoen()
      counter=-1
                     
          for(var ix=0;ix&lt;myArrButtons.length;ix++) {  if (i==0 &amp;&amp; ix==0) dlog("Verarbeite Buttons");
          if (myArrButtons[ix][0]==myArr[i][0]){ 
                if (myArr[i][8])     {  
                        myArrButtons[ix][2]==0? val0="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumButtons) +"\"&gt;" +"Buttons"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumButtons) +"\"&gt;" +myArrButtons[ix][1]
                        let valButton=myArrButtons[ix][3];
                      val3="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumButtons) +"\"&gt;" +"(press) &lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:right\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'"+valButton+"\')\"&gt;"+symbolLinkCommands; //  myArrButtons[ia][2] ? val3=serviceTrue :val3=serviceFalse 
                      counter++; tabelleBind();
                      } else {
              /*    myArrButtons[ix][3]==0? val0="&lt;font color=\""+ColorLuminance(farbeOffline,mylumFolder) +"\"&gt;&lt;i&gt;"+"Buttons&lt;/i&gt;"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylumButtons) +"\"&gt;&lt;i&gt;"+myArrButtons[ix][1]+"&lt;/i&gt;"
                        val3=serviceFalse  
                        counter++; tabelleBind(); */
                      }    
                         }    } 
// --------------------------------------------ENDE Buttons


 //  --------------------------------------------Befehle)
      tabelleMachSchoen()
      counter=-1
                     
          for(var ix=0;ix&lt;myArrBefehle.length;ix++) {  if (i==0 &amp;&amp; ix==0) dlog("Verarbeite Befehle");
          if (myArrBefehle[ix][0]==myArr[i][0]){ 
                if (myArr[i][8])     {  
                        myArrBefehle[ix][2]==0? val0="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumBefehle) +"\"&gt;"+"Sonstiges"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumBefehle) +"\"&gt;"+myArrBefehle[ix][1]
                        val3="&lt;font color=\""+ColorLuminance(htmlFarbFelderschrift,mylumBefehle) +"\"&gt;"+myArrBefehle[ix][3]
                        counter++; tabelleBind();
                      } else {
                /*        myArrBefehle[ix][2]==0? val0="&lt;font color=\""+ColorLuminance(farbeOffline,mylumService) +"\"&gt;&lt;i&gt;"+"Sonstiges&lt;/i&gt;"  :val0="";
                        val1="";
                        val2="&lt;font color=\""+ColorLuminance(farbeOffline,mylumService) +"\"&gt;&lt;i&gt;"+myArrBefehle[ix][1]+"&lt;/i&gt;"
                        val3="&lt;font color=\""+ColorLuminance(farbeOffline,mylumService) +"\"&gt;"+" - " 
                        counter++; tabelleBind();     */
                      }    
                         }    } 
// --------------------------------------------ENDE Befehle

             
            //  idOld=""//myArr[i][0];

     //  }
    }



//-------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------------------

      tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
    let  timeout22 = setTimeout(function () {
        is_running=false
}, 5000);
      
} // function ende

//MAIN:

 
schedule(mySchedule,  function () {
 writeHTML();
 if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
}); 
writeHTML();


function tabelleBind(){
     //HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT - hat man oben 4 Felder definiert, braucht man hier 4 Werte 
   
       switch (mehrfachTabelle) {  
        case 1:  if(counter%2==0){  htmlOut=htmlOut+"&lt;tr bgcolor=\""+farbeGeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;"; break;} else
                                 {  htmlOut=htmlOut+"&lt;tr bgcolor=\""+farbeUngeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;"; break;}
        case 2: if(counter%4==0){ 
                 if(counter%2==0)  {htmlOut = htmlOut+"&lt;tr bgcolor=\""+farbeGeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                    ";\"align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;"; } 
                              else {htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;";} break;
                    }else{
                 if(counter%2==0)  {htmlOut = htmlOut+"&lt;tr bgcolor=\""+farbeUngeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                    ";\" align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;"; } 
                              else {htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;";} break;}                  
        case 3:  if(counter%2==0)   {
                  if(counter%3==0 )  {htmlOut = htmlOut+"&lt;tr bgcolor=\""+farbeGeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                        ";\" align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;"; } 
                              else { if(counter%3==1 )  { htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                        ";color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;";} 
                                               else    {htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;";}
                                         } break;}else{
                  if(counter%3==0 )  {htmlOut = htmlOut+"&lt;tr bgcolor=\""+farbeUngeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                        ";\" align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;"; } 
                              else { if(counter%3==1 )  { htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+
                                                        ";color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;";} 
                                               else    {htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;";}
                                         } break;}

        case 4:  if(counter%8==0)   {
                 if(counter%4==0)  {htmlOut = htmlOut+"&lt;tr bgcolor=\""+farbeGeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;"; } 
                                  else {if(counter%4==1 )  { htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;";} 
                                               else    {if(counter%4==3)  { htmlOut= htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&amp;ensp;&gt;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ "color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;";} 
                                                                 else    {htmlOut  = htmlOut+"&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;";}}
                                         } break;}else{
                 if(counter%4==0)   {htmlOut = htmlOut+"&lt;tr bgcolor=\""+farbeUngeradeZeilen+"\"&gt;&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ ";\" align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;"; } 
                                  else {if(counter%4==1 )  { htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+ ";color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;";} 
                                               else    {if(counter%4==3)  { htmlOut= htmlOut+"&lt;td align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&amp;ensp;&gt;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  align="+Feld4lAlign+"  color:"+htmlFarbFelderschrift2+"\"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;&lt;/tr&gt;";} 
                                                                 else    {htmlOut = htmlOut+"&lt;td align="+Feld1lAlign+"&gt;&amp;ensp;"+val0+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld2lAlign+"&gt;&amp;ensp;"+val1+"&amp;ensp;&lt;/td&gt;&lt;td align="+Feld3lAlign+"&gt;&amp;ensp;"+val2+"&amp;ensp;&lt;/td&gt;&lt;td  style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld4lAlign+"&gt;&amp;ensp;"+val3+"&amp;ensp;&lt;/td&gt;";}}
                                         } break;     }                   

     } //switch ende

}


function tabelleFinish() {
     dlog("verbeite tableFinish")
     // tabelle fertigstellen


       switch (mehrfachTabelle) {  
       case 1:    break;

       case 2:    
                  if(counter%2==0)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, '&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;');   
                
                  break;

       case 3:   if(counter%3==2)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;/tr&gt;");
                 if(counter%3==1)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, '&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;');      
                 if(counter%3==0)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");
               
                  break;
       case 4:   if(counter%4==3) {  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;/tr&gt;");}
                 if(counter%4==2)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");
                 if(counter%4==1)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");    
                 if(counter%4==0)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");      
                 break; } 


         var htmlUeber=    "&lt;p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: "+htmlÜberFontGroesse+"; font-weight:"+htmlSchriftWeite+ "\"&gt;"+htmlFeldUeber+"&amp;ensp;&amp;ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"&lt;/p&gt;"; 
       var htmlUnter= "&lt;div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 70%; text-align: right;\" &gt;"+htmlFeldUeber+"&amp;ensp;&amp;ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"&lt;/div&gt;";
        
        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+"&lt;/table&gt;" : htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"&lt;/table&gt;";
            if (htmlUberschrift) 
                { zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"&lt;/table&gt;"+htmlUnter+ buttonScript : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"&lt;/table&gt;"+htmlUnter+ buttonScript ;

              } else {
               zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"&lt;/table&gt;"+htmlUnter+ buttonScript :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"&lt;/table&gt;"+htmlUnter+ buttonScript;

                 }

  // log("bin raus aus tabelleBind");
           if (braucheEinVISWidget) setState(dpVIS, htmlOutVIS );

 var htmlUnter= "&lt;div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" &gt;"+htmlFeldUeber+"&amp;ensp;&amp;ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"&lt;/div&gt;"

 if (!htmlSignature) htmlUnter="";
 var htmlEnd="&lt;/table&gt;"+htmlUnter+"&lt;/div&gt;&lt;/body&gt;";
 //mit oder ohne überschrift - zentriert oder links
htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd;
 //log(htmlOut);

if (braucheMaterialDesignWidget) {
     
     makeJsonWidget(myArr,myArrFolder,myArrService,myArrButtons,myArrBefehle)
     if(wantExtra)    getProxmox()
     removeOthers  ?  setState(dpMaterialWidget,JSON.stringify(obj2)) : setState(dpMaterialWidget,JSON.stringify(myJsonWidget2));  ; 
      
 
       myJsonWidget2=[];
}

}


function tabelleMachSchoen(){

switch (mehrfachTabelle) {  
       case 1:    break;

       case 2:    
                  if(counter%2==0)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, '&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;');   
                
                  break;

       case 3:   if(counter%3==2)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;/tr&gt;");
                 if(counter%3==1)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, '&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;');      
                 if(counter%3==0)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");
               
                  break;
       case 4:   if(counter%4==3) {  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;/tr&gt;");}
                 if(counter%4==2)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");
                 if(counter%4==1)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");    
                 if(counter%4==0)  htmlOut = htmlOut.replace(/&lt;\/td&gt;$/, "&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\"&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;td&gt;&amp;ensp;&lt;/td&gt;&lt;/tr&gt;");      
                 break; } 

}


function ColorLuminance(hex, lum) {

   // validate hex string
   hex = String(hex).replace(/[^0-9a-f]/gi, '');
   if (hex.length &lt; 6) {
   	hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];
   }
   lum = lum || 0;

   // convert to decimal and change luminosity
   var rgb = "#", c, i;
   for (i = 0; i &lt; 3; i++) {
   	c = parseInt(hex.substr(i*2,2), 16);
   	c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16);
   	rgb += ("00"+c).substr(c.length);
   }

   return rgb;
}

function makeJsonWidget(vax1,vax2,vax3,vax4,vax5) {


//	log(myJsonWidget)
if (braucheMaterialDesignWidget) {
  //  log(vax1.toString())
    //log(vax2.toString())
    //log(vax3.toString())
    
    for (var iii=0;iii&lt;vax1.length;iii++){      
let  mystatuscolorbar=""; 
   //  vax1[iii][8] ? mystatuscolorbar=farbeUeber : mystatuscolorbar=farbeOffline
let  myimage=""; 
let myschriftgroesse=(parseInt(htmlSchriftgroesse.replace("px",""))+10)+"px"
let mytext
let mybkgd;
//myshellIp= `&lt;a href="https://${vax1[iii][2]}:4200"&gt; target="_blank" onclick="window.open(this.href,this.target,width=760,height=640)&gt; &lt;/a&gt; ${shellBox} `
let   myshellIp= ""
 if(braucheShellInaBox) myshellIp= " &lt;a href=\"https:\/\/"+ vax1[iii][2] + ":4200\" target=\"_blank\" onclick=\"window.open(this.href,this.target,\'width=800,height=640\'); return false;\"&gt;"+shellBox+"&lt;/a&gt;"
  vax1[iii][8] ? mytext=`&lt;span style="color:  ${farbeUeber}; font-size: ${(myschriftgroesse)}"&gt; ${vax1[iii][0]}  &lt;/span&gt;${myshellIp}&lt;span style="color:  ${farbeUeber}; font-size: ${(htmlSchriftgroesse)}"&gt;${vax1[iii][6]}`  :
                 mytext=`&lt;span style="color:  ${farbeMDschriftOffline}; font-size: ${(htmlSchriftgroesse)}"&gt; ${vax1[iii][0]}  &lt;/span&gt;&lt;span style="color:  ${farbeMDschriftOffline}; font-size: ${(myschriftgroesse)}"&gt;OFFLINE` ;

 vax1[iii][8] ? mybkgd="" : mybkgd=farbeMDbackgroundOffline

    myimage="https://upload.wikimedia.org/wikipedia/commons/8/82/IoBroker_Logo.png"
for(let device_name in apName) { //log(device_name)                           //Abfrage welches bild
                    for (var i=0;i&lt;vax1.length;i++){
                     if (vax1[iii][0].trim()==device_name.trim()) myimage=apName[device_name].aname; }}//" height=\""+bildergröße+"\" width=\""+bildergröße+"\"&gt;"; } } // log(myimage)

 //ColorLuminance(farbeUeber,0.6); log(mysonderFarbe)
let mysubText
//let mytemp; vax1[iii][3]!="" ? mytemp="CPU Temp: "+vax1[iii][3] + "°C"  :  mytemp="";
let mysonderFarbeHDundTEMP2;
let mysonderFarbeHDundTEMP3;
let blinkklasse=""
let blinkklasse2=""
let arrMem;let arrSwap;let arrTProc; let myMem="";let mySwap="";let myTProc=""; let myMemTable="";let myProcess="";let mySwapRow;let myMemRow
if(vax1[iii][12]!=""){arrMem=vax1[iii][12].split(";");myMemRow="MEM"} else{arrMem=["","",""];myMemRow=""}
if(vax1[iii][13]!=""){arrSwap=vax1[iii][13].split(";");mySwapRow="SWAP"} else{arrSwap=["","",""];mySwapRow=""}
if(vax1[iii][14]!=""){arrTProc=vax1[iii][14].split(";")} else{arrTProc=["","",""]}
//if(vax1[iii][12]!="") log(arrMem[0]+"  " +arrSwap[0] +"  " +arrTProc[0])
if(arrMem[0]!="" || arrSwap[0]!="") {myMemTable=`&lt;/br&gt;
                 &lt;table  rules="cols" align="center" &gt; &lt;tr&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;(in MB)&lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Total&lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Used&lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Free&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;${myMemRow}&lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align="center"&gt; ${arrMem[0]} &lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align="center"&gt; ${arrMem[1]} &lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align="center"&gt; ${arrMem[2]}&lt;/td&gt;&lt;/tr&gt;
                &lt;tr&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;${mySwapRow}&lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align="center"&gt; ${arrSwap[0]} &lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align="center"&gt; ${arrSwap[1]}  &lt;/td&gt;&lt;td style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse}; align="center"&gt;${arrSwap[2]}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;`} else{myMemTable=""}
if( arrTProc[0]!="") {myProcess=`&lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt; Top-Proc: &lt;span style="font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse+2}; color: ${mysonderFarbeHDundTEMP};" &gt;${arrTProc[0]}%&lt;/span&gt; ${arrTProc[1].substring(0,15)} &lt;/div&gt;`} else {myProcess=""}

if(vax1[iii][3]&gt;thresholTemp) { mysonderFarbeHDundTEMP2="yellow"; blinkklasse="blinkklasse" } else {mysonderFarbeHDundTEMP2=mysonderFarbeHDundTEMP;blinkklasse="nix"}
let mytemp; vax1[iii][3]!="" ? mytemp="CPU Temp: "+`&lt;span class=${blinkklasse} style="font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse+2}; color: ${mysonderFarbeHDundTEMP2};" &gt;${vax1[iii][3]} &lt;/span&gt;` + `&lt;span lass=${blinkklasse} style="color: ${mysonderFarbeHDundTEMP2};"&gt;°C&lt;/span&gt; ` :  mytemp="";   
if(vax1[iii][1]&gt;thresholHD) {mysonderFarbeHDundTEMP2="yellow"; blinkklasse="blinkklasse"} else {mysonderFarbeHDundTEMP2=mysonderFarbeHDundTEMP; blinkklasse="nix"}
if(vax1[iii][11]&gt;thresholPakete) {mysonderFarbeHDundTEMP3="yellow";blinkklasse2="blinkklasse"} else {mysonderFarbeHDundTEMP3=mysonderFarbeHDundTEMP;blinkklasse2="nix"}
vax1[iii][8] ?  mysubText =    
                ` &lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt; ${vax1[iii][2]}&lt;/div&gt;
                &lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt; ${mytemp}&lt;/div&gt;
                &lt;div  style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Festplatte: &lt;span  class=${blinkklasse} style="font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse+2}; color: ${mysonderFarbeHDundTEMP2};" &gt;${vax1[iii][1]}&lt;/span&gt;&lt;span style="font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse+2}; color: ${mysonderFarbeHDundTEMP2};" &gt; %&lt;/span&gt;&lt;/div&gt;
                ${myProcess}
                 &lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Update:  ${vax1[iii][9]} &lt;span class=${blinkklasse2} style="font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse+2}; color: ${mysonderFarbeHDundTEMP3};" &gt;${vax1[iii][11]}&lt;/span&gt; Paket(e)&lt;/div&gt;
                ${myMemTable}
                `  :
                 mysubText =   ` &lt;/br&gt;

                 &lt;div style="color: ${farbeMDschriftOffline}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt; ${vax1[iii][2]}&lt;/div&gt;
                 &lt;div style="color: ${farbeMDschriftOffline}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Festplatte:  ${vax1[iii][1]}%&lt;/div&gt;
                 &lt;div style="color: ${farbeMDschriftOffline}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Update:  ${vax1[iii][9]} ${vax1[iii][11]} Paket(e)&lt;/div&gt; 
                 `

if (vax1[iii][8]) {
              mysubText=mysubText.concat(`&lt;/br&gt;
                                          &lt;table align="center" &gt;&lt;tr&gt;&lt;td valign="top"&gt; &lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Folder:&lt;/div&gt;
                                           `)
              mysubText=mysubText.concat(`&lt;span display: flex; flex-direction: row;&gt; &lt;table align="center" &gt;`)
for (var i=0;i&lt;vax2.length;i++){
             if (vax2[i][0]==vax1[iii][0]) {
               mysubText=mysubText.concat(`&lt;tr&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;${vax2[i][1]}&lt;/td&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;&amp;ensp;${vax2[i][2]} ${vax2[i][4]}&lt;/td&gt;&lt;/tr&gt;` ) 
                }  }
                mysubText=mysubText.concat(`&lt;/table&gt;&lt;/span&gt;&lt;/td&gt;`) 

                
                mysubText=mysubText.concat(`&lt;td valign="top"&gt;&lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Service:&lt;/div&gt;
                                           `)
                mysubText=mysubText.concat(`&lt;span display: flex; flex-direction: row;&gt; &lt;table align="center" &gt;`)
for (var i=0;i&lt;vax3.length;i++){
             if (vax3[i][0]==vax1[iii][0]) {
                let helpextra; vax3[i][2] ? helpextra=serviceTrue :helpextra=serviceFalse  
               mysubText=mysubText.concat( `&lt;tr&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"  align=\"left\"&gt;&amp;ensp;${vax3[i][1]}&lt;/td&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;${helpextra}&lt;/td&gt;&lt;/tr&gt;`)
                }  }   
                mysubText=mysubText.concat("&lt;/table&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"  )   

//---------------------BUTTONS                 
let arrcounter=0
for (var i=0;i&lt;vax4.length;i++){
             if (vax4[i][0]==vax1[iii][0]) {arrcounter++;
             }} //log(vax1[iii][0]+ "   "+ arrcounter.toString())                 

if (arrcounter&gt;0) {mysubText=mysubText.concat(`&lt;/br&gt;
                                             &lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Buttons:&lt;/div&gt;
                                           `)
                mysubText=mysubText.concat(`&lt;span display: flex; flex-direction: row;&gt; &lt;table align="center"  &gt;`)

arrcounter=arrcounter-1;
//
let mynewi=-1
for (var i=0;i&lt;vax4.length;i++){
        
             if (vax4[i][0]==vax1[iii][0]) { 
                 mynewi++
   			//  log(mynewi+"  "+ arrcounter)
   			 if (arrcounter&gt;=1){
   			    if(mynewi%2==1 &amp;&amp; mynewi&lt;=arrcounter) mysubText=mysubText.concat( `&lt;tr &gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"  align=\"left\"&gt;&amp;ensp;${vax4[i-1][1]}&lt;/td&gt;&lt;td  align=\"left\"&gt;&amp;ensp; &lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:${htmlSchriftgroesse}\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'${vax4[i-1][3]}')\"&gt;${symbolLinkCommands} &lt;/td&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;&amp;ensp;${vax4[i][1]}&lt;/td&gt;&lt;td  align=\"left\"&gt;&amp;ensp; &lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:${htmlSchriftgroesse}\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'${vax4[i][3]}')\"&gt;${symbolLinkCommands} &lt;/td&gt;&lt;/tr&gt;`)
   				if(mynewi%2==0 &amp;&amp; mynewi==arrcounter) mysubText=mysubText.concat( `&lt;tr&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;&amp;ensp;${vax4[i][1]}&lt;/td&gt;&lt;td align=\"left\"&gt;&amp;ensp; &lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:${htmlSchriftgroesse}\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'${vax4[i][3]}')\"&gt;${symbolLinkCommands} &lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;`)
   			 
   			 } else {
   			 mysubText=mysubText.concat( `&lt;tr&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;&amp;ensp;${vax4[i][1]}&lt;/td&gt;&lt;td align=\"left\"&gt;&amp;ensp; &lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:${htmlSchriftgroesse}\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'${vax4[i][3]}')\"&gt;${symbolLinkCommands} &lt;/td&gt;&lt;/tr&gt;`)
   			 }
   			 
   			 
             //  mysubText=mysubText.concat( `&lt;tr&gt;&lt;td align=\"left\"&gt;&amp;ensp;${vax4[i][1]}&lt;/td&gt;&lt;td align=\"left\"&gt;&amp;ensp;(press) &lt;button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom1\(\'${helpextra}')\"&gt;${symbolLinkCommands} &lt;/td&gt;&lt;/tr&gt;`)
                }  // wenn servername stimmt 
                }  // durch button array
                mysubText=mysubText.concat("&lt;/table&gt;&lt;/span&gt;")  
//				 
    } //buttons größer 0	

//---------------------Ssonstiges                 

arrcounter=0
for (var i=0;i&lt;vax5.length;i++){
             if (vax5[i][0]==vax1[iii][0]) {arrcounter++;
             }} //log(vax1[iii][0]+ "   "+ arrcounter.toString())                 

if (arrcounter&gt;0) {
mysubText=mysubText.concat(`&lt;/br&gt;
                                          &lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;Sonstige:&lt;/div&gt;
                                           `)
              mysubText=mysubText.concat(`&lt;span display: flex; flex-direction: row;&gt; &lt;table align="center" &gt;`)
for (var i=0;i&lt;vax5.length;i++){
             if (vax5[i][0]==vax1[iii][0]) { let mybool = vax5[i][3] ;  if(mybool=="true") mybool= serviceTrue  ;
               mysubText=mysubText.concat(`&lt;tr&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;${vax5[i][1]}&lt;/td&gt;&lt;td style="color: ${htmlFarbFelderschrift}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};" align=\"left\"&gt;&amp;ensp;${vax5[i][3]} &lt;/td&gt;&lt;/tr&gt;` ) 
                }  }
                mysubText=mysubText.concat(`&lt;/table&gt;&lt;/span&gt;`) 
}

 }  //ist online - alle arrays
//  log(vax1[iii][15])                  //+formatDate(getDateObject(((new Date(vax1[iii][15]).getTime()))), "SS:mm:ss")
  vax1[iii][8] ?  mysubText = mysubText+    
                ` &lt;div style="color: ${farbeUeber}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;last refresh: ${formatDate(getDateObject(((new Date(vax1[iii][15]).getTime()))), "SS:mm:ss")}&lt;/div&gt;
               
                `  :
                 mysubText = mysubText + ` &lt;/br&gt;

                 &lt;div style="color: ${farbeMDschriftOffline}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;last refresh: ${formatDate(getDateObject(((new Date(vax1[iii][15]).getTime()))), "SS:mm:ss")}&lt;/div&gt;
                 &lt;div style="color: ${farbeMDschriftOffline}; font-family: ${htmlSchriftart}; font-size: ${htmlSchriftgroesse};"&gt;         am:     ${formatDate(getDateObject(((new Date(vax1[iii][15]).getTime()))), "TT.MM.JJJJ")}&lt;/div&gt;
                 `
//log(mytext)

   //    if(vax3&lt;=1)   vax5=farbeNurEinTag               
    
     myJsonWidget2.push({
               text: mytext,
               subText: mysubText,
               statusBarColor: mystatuscolorbar,
               image: myimage,
               background: mybkgd,
               imageColor: "",
               listType: "text",
               showValueLabel: false,
               name: "",
               status: "",
               Wert : "",
               Hersteller : ""
           });
}
 }}

// struktur der array
// server:     servername,   Hd  ,   ip  , temp,     restart-pfad,     shutdown-pfad.,  version    ,bild mit style,   isOnline,     upgrade,   last update,   anzahl update, mem,  swap , top-process
// folder:     servername,ordnername,ordnergröße,lauf. zähler ordner,einheit,id
// service:    servername,servicename,lauf. anzahl service, id
// buttons:    servername,buttonname,lauf. anzahl button,id
// befehle:    servername,befehlnname,lauf. anzahl befehl, Wert vin id



function getProxmox () {
let merker=0;
let mynewObj
 let mynewObj2
 obj1=[]
  obj2=[]
for(var index in myJsonWidget2 ) {
      merker=0;
   for(var me in wantExtra){
     
   if(myJsonWidget2[index].text.replace(/.+px\"\&gt; (.+) \&lt;\/span\&gt;.+/g,"$1").trim()== wantExtra[me]) { //log(me)
          mynewObj=JSON.parse(JSON.stringify(myJsonWidget2[index]));
          obj1.push(mynewObj)
          merker=1
          } //proxarr
       /*   else { log("jetzt  "+ myJsonWidget2[index].text.replace(/.+px\"\&gt; (.+) \&lt;\/span\&gt;.+/g,"$1")+ "  "+ wantExtra[me] )
           if(parseInt(me)==0){    mynewObj2=JSON.parse(JSON.stringify(myJsonWidget2[index]));
               obj2.push(mynewObj2)}
          } */
   
  
   }
    if(merker==0) {mynewObj2=JSON.parse(JSON.stringify(myJsonWidget2[index])); 
                  obj2.push(mynewObj2) ;
                  merker=0;}


} setState(dpMaterialWidgetExtra,JSON.stringify(obj1)) ;}



    on({id: myArrRefresh ,  change: "ne"}, function (obj) { 
  
  let timeout = setTimeout(function () {
 dlog("BIN DRIN in Refresh")
    if (!is_running) writeHTML();
    if (braucheEinFile &amp;&amp; !is_running) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
}, 5000);
     
   });









</code></pre>
<p dir="auto"></p></section></section><p></p>
]]></description><link>https://forum.iobroker.net/topic/35880/html-tabelle-linux-control-adapter</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 07:02:08 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/35880.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Aug 2020 14:22:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 01 Nov 2021 13:36:59 GMT]]></title><description><![CDATA[<p dir="auto">Hallo <a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a>!!!!!</p>
<p dir="auto">Vielen Dank für die Info's!!!<br />
So langsam komme ich hinter des "Pudels Kern"!<br />
Ich werde mich da mal reinfuchsen, aber ich glaube die Grundidee habe ich verstanden :-)</p>
<p dir="auto">Auf jeden Fall bis dahin vielen Dank!</p>
<p dir="auto">Wünsche Dir noch einen schönen Tag!!!!</p>
<p dir="auto">Gruß<br />
Jörg</p>
]]></description><link>https://forum.iobroker.net/post/696667</link><guid isPermaLink="true">https://forum.iobroker.net/post/696667</guid><dc:creator><![CDATA[Der Nordmann]]></dc:creator><pubDate>Mon, 01 Nov 2021 13:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 01 Nov 2021 12:16:23 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/der-nordmann" aria-label="Profile: der-nordmann">@<bdi>der-nordmann</bdi></a> sagte in <a href="/post/696618">HTML Tabelle Linux-Control Adapter</a>:</p>
<blockquote>
<p dir="auto">cat /sys/class/thermal/thermal_zone0/temp | awk '{print substr($1, length($0)-5,2)}'</p>
</blockquote>
<p dir="auto">hast du raspi 4</p>
<p dir="auto">temperatur</p>
<pre><code>vcgencmd measure_temp | awk '{print substr($1, length($0)-5,4)}'
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1635768346404-image-6.png" alt="Image 6.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">memory auf raspi4:</p>
<pre><code>free -m  | awk ' NR == 2 {print $2";"$3";"$4}'
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1635768253705-image-5.png" alt="Image 5.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">kommt mit ; getrennt und muss in einem script aufgeteilt werden</p>
<p dir="auto">willst du einzelne datenpunkte dann z.b.</p>
<pre><code>free -m  | awk ' NR == 2 {print $2}'
</code></pre>
]]></description><link>https://forum.iobroker.net/post/696637</link><guid isPermaLink="true">https://forum.iobroker.net/post/696637</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Mon, 01 Nov 2021 12:16:23 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 01 Nov 2021 11:28:43 GMT]]></title><description><![CDATA[<p dir="auto">Hallo <a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a>!</p>
<p dir="auto">Nachdem mir in einem anderen Beitrag geholfen wurde die CPU Temperatur eines anderen Pi's auszulesen, bin ich auf diesen Forenbeitrag gestoßen.<br />
Nun bin ich noch ein ziemlicher Neuling, was die angesprochene "Materie" angeht.<br />
Wenn ich den Befehl <em><strong>cat /sys/devices/virtual/thermal/thermal_zone0/temp | awk '{print substr($1, length($0)-5,4)}'</strong></em> eingebe, kommt ja eine vierstellige Zahl heraus.<br />
Ist das eine "Real-Zahl" und kann man sie formatieren? Bsp. 1234 wird zu 12,34?<br />
Man möge mir meine Unwissenheit verzeihen?</p>
<p dir="auto">Ich gelange übrigens mit folgendem Befehl auch auf die CPU Temperatur:<br />
<em><strong>cat /sys/class/thermal/thermal_zone0/temp | awk '{print substr($1, length($0)-5,2)}'</strong></em> (Das war der Vorschlag von meiner Anfrage im anderen, oben erwähnten, Beitrag).<br />
Ich hoffe, ich konnte mich einigermaßen klar ausdrücken.</p>
<p dir="auto">Mich würde auch als totaler Anfänger interessieren, wie ich es anstellen kann an andere "Infos" meine PI komme, wie z. B.:<br />
Verfügbarer Memory<br />
Freier Memory<br />
Gesamter Memory<br />
usw.<br />
In den vorherigen Foreneinträgen ist ja so eine ganze Menge gezeigt worden.</p>
<p dir="auto">Viele Fragen, ich weiß. Aber nochmals, ich bin ein blutiger Anfänger :-)</p>
<p dir="auto">Euch allen noch einen schönen Tag!</p>
<p dir="auto">Gruß<br />
Jörg</p>
]]></description><link>https://forum.iobroker.net/post/696618</link><guid isPermaLink="true">https://forum.iobroker.net/post/696618</guid><dc:creator><![CDATA[Der Nordmann]]></dc:creator><pubDate>Mon, 01 Nov 2021 11:28:43 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 01 Nov 2021 10:31:28 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/der-nordmann" aria-label="Profile: der-nordmann">@<bdi>der-nordmann</bdi></a> sagte in <a href="/post/696579">HTML Tabelle Linux-Control Adapter</a>:</p>
<blockquote>
<p dir="auto">Hast Du das in der Zwischenzeit mit der Kommastelle herausbekommen, also wie das Script aussehen muss?</p>
</blockquote>
<p dir="auto">Was meinst du genau?<br />
welches Script?</p>
<p dir="auto">Ich nutze den Linux-Control gar nicht mehr</p>
]]></description><link>https://forum.iobroker.net/post/696585</link><guid isPermaLink="true">https://forum.iobroker.net/post/696585</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Mon, 01 Nov 2021 10:31:28 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 01 Nov 2021 10:25:03 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a></p>
<p dir="auto">Hast Du das in der Zwischenzeit mit der Kommastelle herausbekommen, also wie das Script aussehen muss?</p>
<p dir="auto">Gruß<br />
Jörg</p>
]]></description><link>https://forum.iobroker.net/post/696579</link><guid isPermaLink="true">https://forum.iobroker.net/post/696579</guid><dc:creator><![CDATA[Der Nordmann]]></dc:creator><pubDate>Mon, 01 Nov 2021 10:25:03 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Sun, 24 Jan 2021 20:23:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/chaot" aria-label="Profile: chaot">@<bdi>chaot</bdi></a> sorry- das uhula vis kenn ich nicht</p>
<p dir="auto">der adapter ist material design widgets ( list widget)</p>
<p dir="auto">diese widgets brauchen ein json format als input - das script erstellt das  - du kannst aber alle daten in eigene widgets machen. mein script wurde für die html tabelle entwickelt - die material design kamen auf wusch von anderen. man könnte aber verhinern, dass das script den html teil schreibt. ohne das json gibt es aber kein material design widget - für einen server wäre das ok - bei mehreren servern brauchst du auch ein script, welches scheifen durchläuft und die json's erstellt</p>
]]></description><link>https://forum.iobroker.net/post/566641</link><guid isPermaLink="true">https://forum.iobroker.net/post/566641</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Sun, 24 Jan 2021 20:23:08 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Sun, 24 Jan 2021 19:59:48 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a> Kann sein das ich mich jetzt einfach nur blöd anstelle:</p>
<p dir="auto">Kann ich eigentlich das Widget nutzen ohne das Tabellenscript?<br />
Also die Daten direkt aus dem Adapter erfassen?</p>
<p dir="auto">Welchen Material Design Adapter muss ich dafür installieren wenn ich auch das Design von Uhula verwende. da gibt es doch mit einem Adapter Probleme.</p>
<p dir="auto">Wenn ich das Widget aktuell nur importiere sehe ich nichts. Also fehlt mir ganz viel.<br />
Ich möchte aber ehrlich gesagt nicht 100 Scripte laufen lassen sondern nur reine Datenanzeige aus vorhandenen daten.</p>
]]></description><link>https://forum.iobroker.net/post/566625</link><guid isPermaLink="true">https://forum.iobroker.net/post/566625</guid><dc:creator><![CDATA[Chaot]]></dc:creator><pubDate>Sun, 24 Jan 2021 19:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 17:18:11 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/scrounger" aria-label="Profile: scrounger">@<bdi>scrounger</bdi></a> bin mental mit dir verbunden - daher mein name !!!</p>
<p dir="auto">habe die function als lösung einzeln in skripte hinterlegt und es scheint zu funktionieren - ist aber wieder eine einstellung, die ich vermeiden wollte</p>
<p dir="auto">meine bedenken sind , dass ja dann in jedem json object diese function mit dem selben namen liegt - bei 5 servern ist 5mal eine function mit dem selben namen vorhanden</p>
<p dir="auto">werd wohls ums testen nicht rumkommen - möchte halt nicht, dass im hintergrund fehler entstehen, die im iobroker log nicht sichtbar sind</p>
]]></description><link>https://forum.iobroker.net/post/556929</link><guid isPermaLink="true">https://forum.iobroker.net/post/556929</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Tue, 12 Jan 2021 17:18:11 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 16:50:38 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a><br />
Die Funktion muss natürlich irgendwo definiert sein. Die sicherste Methode ist, dass unter skripte im VIS Editor einzutragen.<br />
Ob man einen script Tag im JSON mit geben kann hab ich noch nie getestet, d.h. musst du einfach mal ausprobieren.</p>
<p dir="auto">Schon lustig, ich bin gestern auf die Idee gekommen ob man die MDWs nicht per html tag überall verfügbar machen könnte, dass könntest du an dieser stelle gut gebrauchen.<br />
Und ich verrate mal nur soviel, es scheint zu funktionieren :-)</p>
]]></description><link>https://forum.iobroker.net/post/556899</link><guid isPermaLink="true">https://forum.iobroker.net/post/556899</guid><dc:creator><![CDATA[Scrounger]]></dc:creator><pubDate>Tue, 12 Jan 2021 16:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 15:01:10 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/scrounger" aria-label="Profile: Scrounger">@<bdi>Scrounger</bdi></a></p>
<p dir="auto">hi - hätte mal frage - mein script schreibt in der htmltabelle am schluss ein kleines script rein (datenpunkt schalten) (html tabelle wird über html-widget angezeigt) - ich erstelle auch ein json für das md list widget. ich habe aber ganz vergessen, dass ich das kleine script aber auch im md list widget im json dieses script mitgebe. so kommt es, dass das md widget zuerst meine htmltabelle braucht, um das script zu finden. Fehler von: <a href="https://forum.iobroker.net/post/556497">https://forum.iobroker.net/post/556497</a></p>
<p dir="auto">meine frage - soll ich in jedem json object, was ja einen server darstellt, immer dieses script im json mitgeben?</p>
<p dir="auto">schwarzer pfeil ist der html teil mit den buttons, die das script brauchen<br />
grüner pfeil, da wird es aufgerufen<br />
blauer pfeil, da müßte es anhgehängt werden, in jeden json-array-element</p>
<p dir="auto"><img src="/assets/uploads/files/1610463653046-image-8.png" alt="Image 8.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">hast du da eine idee ?</p>
]]></description><link>https://forum.iobroker.net/post/556810</link><guid isPermaLink="true">https://forum.iobroker.net/post/556810</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Tue, 12 Jan 2021 15:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 13:20:15 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a> problem ist noch nicht ganz gelöst - aber ich weiß zumindest, woran es liegt</p>
]]></description><link>https://forum.iobroker.net/post/556736</link><guid isPermaLink="true">https://forum.iobroker.net/post/556736</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Tue, 12 Jan 2021 13:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 13:11:02 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a> ... und ob das was ändert <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f44f.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--clap" style="height:23px;width:auto;vertical-align:middle" title=":clap:" alt="👏" /> <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f44f.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--clap" style="height:23px;width:auto;vertical-align:middle" title=":clap:" alt="👏" /> . Jetzt funktionieren die buttons direkt ohne den Umweg über das html widget. Sowohl am PC als auch am Tablet. Ich denke Du hast mein Problem gelöst, werde es in den nächsten Tagen beobachten.<br />
Vielen Dank <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f44d.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--+1" style="height:23px;width:auto;vertical-align:middle" title=":+1:" alt="👍" /> <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f44d.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--+1" style="height:23px;width:auto;vertical-align:middle" title=":+1:" alt="👍" /> .</p>
]]></description><link>https://forum.iobroker.net/post/556732</link><guid isPermaLink="true">https://forum.iobroker.net/post/556732</guid><dc:creator><![CDATA[dirk1962]]></dc:creator><pubDate>Tue, 12 Jan 2021 13:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 12:50:04 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a></p>
<p dir="auto">bitte teste mal was für mich</p>
<p dir="auto">kopiere das in der vis unter "Skripte" tab</p>
<pre><code>function setOnDblClickCustom1( myvalue ) {var Self = this; objID = myvalue;  console.log("von extra script"+myvalue); Self.servConn.setState(objID, true); console.log("von extra script"+objID)}
</code></pre>
<p dir="auto"><img src="/assets/uploads/files/1610455776974-image-7.png" alt="Image 7.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">ändert das was ?</p>
]]></description><link>https://forum.iobroker.net/post/556722</link><guid isPermaLink="true">https://forum.iobroker.net/post/556722</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Tue, 12 Jan 2021 12:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 11:12:21 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a></p>
<p dir="auto">ganz ehrlich  - bin im moment überfragt - leider weiß ich nicht, ob jmd das script am laufen hat und auch nutzt, daher weiß ich nicht, ob es ein script problem ist - bei mir funktioniert es ja.</p>
<p dir="auto">wie erwähnt, wir können mal gemeinsam über anydesk versuchen, ob wir was finden - ich kann den fehler nicht nachvollziehen</p>
]]></description><link>https://forum.iobroker.net/post/556638</link><guid isPermaLink="true">https://forum.iobroker.net/post/556638</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Tue, 12 Jan 2021 11:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 10:35:39 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a> genau die gleichen wie Du.</p>
]]></description><link>https://forum.iobroker.net/post/556600</link><guid isPermaLink="true">https://forum.iobroker.net/post/556600</guid><dc:creator><![CDATA[dirk1962]]></dc:creator><pubDate>Tue, 12 Jan 2021 10:35:39 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 08:27:38 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a><br />
welche version von vis(1.3.6)-, material design widget(0.4.2) , socketio(3.1.2) adapter hast du</p>
<p dir="auto">habe es heute morgen getestet - funktionierte nach einschalten des pc's mit chrome sofort. die html tabelle nutze ich eigenlich nicht</p>
]]></description><link>https://forum.iobroker.net/post/556517</link><guid isPermaLink="true">https://forum.iobroker.net/post/556517</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Tue, 12 Jan 2021 08:27:38 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Tue, 12 Jan 2021 08:00:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a> habe heute Morgen rumprobiert. Auf dem PC konnte ich mit dem materialdesign-Icon List widget Motioneye nicht stoppen. Auch ein browser refresh hat nichts geändert. Dann habe ich es mit dem html widget probiert und ich konnte Motioneye stoppen. Dann habe ich wieder zum materialdesign widget gewechselt und konnte Motioneye starten. Danach konnte ich mit den buttons alles stoppen und starten.<br />
Exakt das gleiche war dann auch beim Tablet und beim Smartphone.<br />
Es sieht so aus, dass ich erst einmal über das html widget schalten muss um die buttons im materialdesign widget zu aktivieren.<br />
Keine Ahnung ob Dir das hilft, aber vielleicht kannst Du es auf Deinem System mal versuchen nachzuvollziehen.</p>
]]></description><link>https://forum.iobroker.net/post/556497</link><guid isPermaLink="true">https://forum.iobroker.net/post/556497</guid><dc:creator><![CDATA[dirk1962]]></dc:creator><pubDate>Tue, 12 Jan 2021 08:00:06 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 11 Jan 2021 14:08:53 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a> hauptsache es funktioniert schon mal auf dem pc in chrome- damit ist die fehlersuche schon mal extrem eingeschränkt worden</p>
]]></description><link>https://forum.iobroker.net/post/556093</link><guid isPermaLink="true">https://forum.iobroker.net/post/556093</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Mon, 11 Jan 2021 14:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 11 Jan 2021 14:07:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a>, auf dem PC geht es mittlerweile. Frag mich aber bitte nicht, was ich gemacht habe. Auf dem Tablet und Handy muss ich noch prüfen. Da weiß ich auch noch nicht, wie ich da die Entwickler-console geöffnet bekomme.<br />
Du hast sicherlich Recht, dass das Problem bei mir liegt <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title=":disappointed:" alt="😞" /> <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title=":disappointed:" alt="😞" /> .</p>
]]></description><link>https://forum.iobroker.net/post/556089</link><guid isPermaLink="true">https://forum.iobroker.net/post/556089</guid><dc:creator><![CDATA[dirk1962]]></dc:creator><pubDate>Mon, 11 Jan 2021 14:07:08 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 11 Jan 2021 13:36:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a></p>
<p dir="auto">hast du lust auf anydesk session - im moment sehe ich bei mir hier kein problem</p>
]]></description><link>https://forum.iobroker.net/post/556074</link><guid isPermaLink="true">https://forum.iobroker.net/post/556074</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Mon, 11 Jan 2021 13:36:44 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 11 Jan 2021 13:29:28 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a></p>
<p dir="auto">script in html tabelle wird ausgeführt - anscheinend ist parameter übergabe im script nicht korrekt</p>
]]></description><link>https://forum.iobroker.net/post/556067</link><guid isPermaLink="true">https://forum.iobroker.net/post/556067</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Mon, 11 Jan 2021 13:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 11 Jan 2021 12:33:12 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a> das kommt beim Drücken auf Motioneye-stop</p>
<p dir="auto"><img src="/assets/uploads/files/1610368381949-console.png" alt="Console.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/555972</link><guid isPermaLink="true">https://forum.iobroker.net/post/555972</guid><dc:creator><![CDATA[dirk1962]]></dc:creator><pubDate>Mon, 11 Jan 2021 12:33:12 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 11 Jan 2021 11:47:19 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a> hast du mal in chrome die entwickler-console geöffnet, vielleicht sieht man da was, wenn du den button drückst</p>
<p dir="auto"><img src="/assets/uploads/files/1610365618317-anim-gif36.gif" alt="anim-gif36.gif" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/555941</link><guid isPermaLink="true">https://forum.iobroker.net/post/555941</guid><dc:creator><![CDATA[liv-in-sky]]></dc:creator><pubDate>Mon, 11 Jan 2021 11:47:19 GMT</pubDate></item><item><title><![CDATA[Reply to HTML Tabelle Linux-Control Adapter on Mon, 11 Jan 2021 11:26:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/liv-in-sky" aria-label="Profile: liv-in-sky">@<bdi>liv-in-sky</bdi></a> sagte in <a href="/post/555815">HTML Tabelle Linux-Control Adapter</a>:</p>
<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dirk1962" aria-label="Profile: dirk1962">@<bdi>dirk1962</bdi></a><br />
egal ob in der tabelle oder im widget - es wird immer das selbe interne script ausgeführt</p>
</blockquote>
<p dir="auto">Das ist mir auch klar. Nur wenn auf 4 verschiedenen Geräten das Schalten per html-Tabelle funktioniert und das Schalten per MD Widget nicht, dann ist der refresh des Browsers für mich nicht nachvollziehbar. <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f615.png?v=ba16ebd4856" class="not-responsive emoji emoji-android emoji--confused" style="height:23px;width:auto;vertical-align:middle" title=":confused:" alt="😕" /></p>
]]></description><link>https://forum.iobroker.net/post/555932</link><guid isPermaLink="true">https://forum.iobroker.net/post/555932</guid><dc:creator><![CDATA[dirk1962]]></dc:creator><pubDate>Mon, 11 Jan 2021 11:26:18 GMT</pubDate></item></channel></rss>