Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Strom Geräte als HTML Tabelle - Vis - Iqontrol

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

Strom Geräte als HTML Tabelle - Vis - Iqontrol

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
289 Beiträge 13 Kommentatoren 36.2k Aufrufe 11 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • liv-in-skyL liv-in-sky

    @sigi234 - hier mal alle substrings raus - wenn das nix bringt - muss ich pause machen

    //@liv-in-sky Januar 2020
    
    //HIER WIRD PFAD UND FILENAME DEFINIERT
    const path = "/htmlenergy.html";                   //FIlenamen definieren
    const home ='vis.0'                                 //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
    let   braucheEinFile=false;                          // bei true wird ein file geschrieben
    let   braucheEinVISWidget=true;                     // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
    let dpVIS="controll-own.0.TABELLEN.ENERGY"         //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget
    let dpAnzahl="controll-own.0.TABELLEN.AnzahlEnergiemesser";  //WICHTIG datenpunkt erstellen vom typ "number" - bei 0 kein alarm und größer 0 die anzahl der schlechten batterien
    let htmlColorDeviceUeberschrift="white"
    let triggerBySonoffPower=true;
    //---------------------------------------
    let mySchedule="  * * * * * "; 
    
    let kwhPreis=0.29;
    
    var pow=true;
    var tuya=true;
    var hs100=true; //tplink
    var homematic=true;
    
    var gosundSP1x=true;
    
    
    var externalOhneInfo=false;  //noch nicht integriert
    var schalter2ch=true; 
    var schalter3ch=true;
    
    //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 5
    var htmlFeld1='Device';       var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
    var htmlFeld2='Status';        var Feld2lAlign="center";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
    var htmlFeld3='Amp';         var Feld3lAlign="center";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
    var htmlFeld4='Volt';        var Feld4lAlign="center";                    // überschrift Tabellen Spalte4 und  Ausrichtung left,right or center
    var htmlFeld5='Power';        var Feld5lAlign="left";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
    var htmlFeld6='Schalter';        var Feld6lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
    var htmlFeld7='';        var Feld7lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
    var htmlFeld8='';        var Feld8lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
    var htmlFeld9='';        var Feld9lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
    var htmlFeld10='';        var Feld10lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
    
    //-----------------------------------
    
    
    //ÜBERSCHRIFT ÜBER TABELLE
    let   htmlUberschrift=true;                           // mit Überschrift über der tabelle
    let   htmlSignature=false;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
    const htmlFeldUeber='Energy Devices';              // Überschrift und Signature
    const htmlFarbUber="white";                         // Farbe der Überschrift
    const htmlSchriftWeite="normal";                       // bold, normal - Fettschrift für Überschrift
    const htmlÜberFontGroesse="18px";                       // schriftgröße überschrift
    //MEHRERE TABELLEN NEBENEINANDER
    let   mehrfachTabelle=1;                              // bis zu 4 Tabellen werden nebeneinander geschrieben-  verkürzt das Ganze, dafür etwas breiter - MÖGLICH 1,2,3,oder 4 !!!
    const htmlFarbZweiteTabelle="white";                // Farbe der Überschrift bei jeder 2.ten Tabelle
    const htmlFarbTableColorUber="#BDBDBD";               // Überschrift in der tabelle - der einzelnen Spalten
    //GANZE TABELLE
    let abstandZelle="1";
    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="Helvetica";
    const htmlSchriftgroesse="14px";
    //FELDER UND RAHMEN
    let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
    const htmlFarbFelderschrift="#BDBDBD";                  // SchriftFarbe der Felder
    const htmlFarbFelderschrift2="#D8D8D8";                 // SchriftFarbe der Felder für jede 2te Tabelle
    const htmlFarbTableColorGradient1="#424242";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
    const htmlFarbTableColorGradient2="#424242";          //  Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
    const htmlFarbTableBorderColor="gray";             // Farbe des Rahmen - is tdieser gleich den gradienten, sind die rahmen unsichtbar
    let htmlRahmenLinien="cols";                            // Format für Rahmen: MÖGLICH: "none" oder "all" oder "cols" oder "rows"
    const htmlSpalte1Weite="auto";                   //  Weite der ersten beiden  Spalten oder z.b. 115px
    
    // HIER NICHTS  ÄNDERN
    
    let borderHelpBottum;
    let borderHelpRight;
    let htmlcenterHelp;
    let htmlcenterHelp2;
    
    if(htmlRahmenLinien=="rows") {borderHelpBottum=1;borderHelpRight=0;}
    if(htmlRahmenLinien=="cols") {borderHelpBottum=0;borderHelpRight=1;}
    if(htmlRahmenLinien=="none") {borderHelpBottum=0;borderHelpRight=0;}
    if(htmlRahmenLinien=="all")  {borderHelpBottum=1;borderHelpRight=1;}
    zentriert ? htmlcenterHelp="auto" : htmlcenterHelp="left";
    zentriert ? htmlcenterHelp2="center" : htmlcenterHelp2="left";
    
    
    const htmlZentriert='<center>'
    const htmlStart=    "<!DOCTYPE html><html lang=\"de\"><head><title>Vorlage</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"+
                       "<style> * {  margin: 0;} body {background-color: "+backgroundAll+"; margin: 0 auto;  }"+
                       " p {padding-top: 10px; padding-bottom: 10px; text-align: "+htmlcenterHelp2+"}"+
                      // " div { margin: 0 auto;  margin-left: auto; margin-right: auto;}"+
                       " td { padding:"+abstandZelle+"px; border:0px solid "+htmlFarbTableBorderColor+";  border-right:"+borderHelpRight+"px solid "+htmlFarbTableBorderColor+";border-bottom:"+borderHelpBottum+"px solid "+htmlFarbTableBorderColor+";}"+ 
                       " table { width: "+weite+";  margin: 0 "+htmlcenterHelp+"; border:1px solid "+htmlFarbTableBorderColor+"; border-spacing=\""+abstandZelle+"0px\" ; }"+   // margin macht center
                       "td:nth-child(1) {width: "+htmlSpalte1Weite+"}"+"td:nth-child(2) {width:"+htmlSpalte1Weite+"}"+
                       " </style></head><body> <div>";
    //const htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-weight: bold\">"+htmlFeldUeber+"</p>";                    
    const htmlTabStyle= "<table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\"2px\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+abstandZelle+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+";  font-size:"+htmlSchriftgroesse+
                          "; font-family:"+htmlSchriftart+";background-image: linear-gradient(42deg,"+htmlFarbTableColorGradient2+","+htmlFarbTableColorGradient1+");\">";
    const htmlTabUeber1="<tr style=\"color:"+htmlFarbTableColorUber+"; font-weight: bold\">";
    const htmlTabUeber3="</tr>";
    
    
    //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 5
    
    
    var htmlTabUeber2="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+">&ensp;"+htmlFeld2+"&ensp;</td><td  align="+Feld3lAlign+">&ensp;"+htmlFeld3+"&ensp;</td><td align="+Feld4lAlign+
                      ">&ensp;"+htmlFeld4+"&ensp;</td><td  align="+Feld5lAlign+">&ensp;"+htmlFeld5+"&ensp;</td><td  align="+Feld6lAlign+">&ensp;"+htmlFeld6+"&ensp;</td><td  align="+Feld7lAlign+">&ensp;"+htmlFeld7+"&ensp;</td><td  align="+Feld8lAlign+">&ensp;"+htmlFeld8+
                      "&ensp;</td><td  align="+Feld9lAlign+">&ensp;"+htmlFeld9+"&ensp;</td><td  align="+Feld10lAlign+">&ensp;"+htmlFeld10+"&ensp;</td>";
    var htmlTabUeber2_1="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+
                       "&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld4+
                       "&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld5+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld6+"&ensp;</td><td align="+Feld7lAlign+
                       " style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld7+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld8+"&ensp;</td><td  align="+Feld9lAlign+">&ensp;"+htmlFeld9+"&ensp;</td><td  align="+Feld10lAlign+">&ensp;"+htmlFeld10+"&ensp;</td>";
                           //------------------------------------------------------
    
    let triggerBySonoffSwitch=false;
    var anzahl;
    var AkkuAlarm=[];
    var htmlOut="";
    var mix;
    var counter;
    var arrTrigger=[];
    var val1; var val2; var val0; var val3; var val4; var val5; var val6; var val7; var val8; var val9;
    var htmlTabUeber="";
    function writeHTML(){
    
    
    anzahl=0;
    htmlOut="";
    counter=-1;
    htmlTabUeber="";
    switch (mehrfachTabelle) { 
       case 1: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber3;  break;
       case 2: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
       case 3: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2+htmlTabUeber2+htmlTabUeber3; break;
       case 4: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
    }; 
    if (!UeberschriftSpalten) {htmlTabUeber=""}  
    
    //--------------------------------------------------------------------------------------------------------------------------------------------------
    //---------hier kommt eure schleife rein counter++, tabelleBind() und tabelleFinish() müssen so integriert bleiben !!!------------------------------
    //---------alle valx werte müssen von euch bestimmt werden - val0,val1,val2,val3,val4!!!------------------------------------------------------------
    //--------------------------------------------------------------------------------------------------------------------------------------------------
    
    if (pow){
    
                 // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
          tabelleAusbessern();
          counter=0;
          val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";val9="";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=0;
          val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>Pow (R2)</b>"; val1=""; val2="";val3="";val4="";
          val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
          val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";
          val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Gesamt"; 
          val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Heute<\/i>";
          val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Gesamt<\/i>";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=-1
    
    //sonoff.0.SonoffPow1.INFO.Module
     $('sonoff.*.*.INFO.Module').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
       
          if (getState(id).val=="Sonoff Pow" || getState(id).val=="Sonoff Pow R2") {
             // log (id)
             anzahl++;
            var ida = id.split('.');
           
              counter++; 
                //log("dad   "+getState(id.replace("Info.Module","alive")).val + " ----" +id.replace("Info.Module","alive"))
              val1=getState(id.replace("INFO.Module","alive")).val;                   //sonoff.0.SonoffPow1.alive          sonoff.0.SonoffPow1.INFO.Module
              val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;
              val4=getState(id.replace("INFO.Module","ENERGY_Power")).val.toString()+ " W"                       //sonoff.0.SonoffPow2.ENERGY_Power
              val2=getState(id.replace("INFO.Module","ENERGY_Current")).val.toFixed(2)+ " A";   //sonoff.0.SonoffPow1.Wifi_RSSIsonoff.0.SonoffPow1.POWER
              val3=getState(id.replace("INFO.Module","ENERGY_Voltage")).val.toString()+" V"; 
              let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
              val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
              val6=getState(id.replace("INFO.Module","ENERGY_Today")).val.toFixed(2)+ " kWh";
              val7=getState(id.replace("INFO.Module","ENERGY_Total")).val.toFixed(2)+ " kWh";
              val8=(getState(id.replace("INFO.Module","ENERGY_Today")).val*kwhPreis).toFixed(1)+" €";
              val9=(getState(id.replace("INFO.Module","ENERGY_Total")).val*kwhPreis).toFixed(1)+" €";
            
              if (!getState(id.replace("INFO.Module","alive")).val) {
                  val1="❌";
                  val4=(" <font color=\"red\"> ")+val1;
                  val2=(" <font color=\"red\"> ")+val2;
                  val3=(" <font color=\"red\"> ")+" 0 %";
                  val5=(" <font color=\"red\"> ")+" --- ";
                  val6=(" <font color=\"red\"> ")+" --- ";
                  val7=(" <font color=\"red\"> ")+" --- ";
                  val0=(" <font color=\"red\"> ")+val0 ;
                  val8=(" <font color=\"red\"> ")+val8;
                  val9=(" <font color=\"red\"> ")+val9}
              else{
                  val1="✅";
                 // val1=(" <font color=\"lightgreen\"> ")+val1
                 // val2=(" <font color=\"green\"> ")+val2
                 // val3=(" <font color=\"green\"> ")+val3
                 // val0=(" <font color=\"green\"> ")+val0
                 }
    
    
             
       
         tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
        
      } }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
    } //ende fritzdect
    
     if (gosundSP1x){
    
                 // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
          tabelleAusbessern();
          counter=0;
          val0=val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=0;
         val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>Gosund</b>"; val1=""; val2="";val3="";val4="";
          val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
          val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";
          val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Gesamt"; 
          val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Heute<\/i>";
          val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Gesamt<\/i>";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=-1
    
    //sonoff.0.SonoffPow1.INFO.Module
     $('sonoff.*.*.INFO.Module').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
       
          if (getState(id).val.includes("Gosund SP1")) {
             // log (id)
             anzahl++;
            var ida = id.split('.');
           
               counter++; 
                //log("dad   "+getState(id.replace("Info.Module","alive")).val + " ----" +id.replace("Info.Module","alive"))
              val1=getState(id.replace("INFO.Module","alive")).val;                   //sonoff.0.SonoffPow1.alive          sonoff.0.SonoffPow1.INFO.Module
              val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;
              val4=getState(id.replace("INFO.Module","ENERGY_Power")).val.toString()+ " W"                       //sonoff.0.SonoffPow2.ENERGY_Power
              val2=getState(id.replace("INFO.Module","ENERGY_Current")).val.toFixed(2)+ " A";   //sonoff.0.SonoffPow1.Wifi_RSSIsonoff.0.SonoffPow1.POWER
              val3=getState(id.replace("INFO.Module","ENERGY_Voltage")).val.toString()+" V"; 
              let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
              val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
              val6=getState(id.replace("INFO.Module","ENERGY_Today")).val.toFixed(2)+ " kWh";
              val7=getState(id.replace("INFO.Module","ENERGY_Total")).val.toFixed(2)+ " kWh";
              val8=(getState(id.replace("INFO.Module","ENERGY_Today")).val*kwhPreis).toFixed(1)+" €";
              val9=(getState(id.replace("INFO.Module","ENERGY_Total")).val*kwhPreis).toFixed(1)+" €";
            
              if (!getState(id.replace("INFO.Module","alive")).val) {
                  val1="❌";
                  val4=(" <font color=\"red\"> ")+val1;
                  val2=(" <font color=\"red\"> ")+val2;
                  val3=(" <font color=\"red\"> ")+" 0 %";
                  val5=(" <font color=\"red\"> ")+" --- ";
                  val6=(" <font color=\"red\"> ")+" --- ";
                  val7=(" <font color=\"red\"> ")+" --- ";
                  val0=(" <font color=\"red\"> ")+val0 ;
                  val8=(" <font color=\"red\"> ")+val8;
                  val9=(" <font color=\"red\"> ")+val9}
              else{
                  val1="✅";
                 // val1=(" <font color=\"lightgreen\"> ")+val1
                 // val2=(" <font color=\"green\"> ")+val2
                 // val3=(" <font color=\"green\"> ")+val3
                 // val0=(" <font color=\"green\"> ")+val0
                 }
    
    
                       
       
         tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
        
      } }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
    } //ende fritzdect
    
    
     if (hs100){
    
                 // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
          tabelleAusbessern();
          counter=0;
          val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";val9="";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=0;
          val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>HS100</b>"; val1=""; val2="";val3="";val4="";
          val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
          val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Now";
          val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Monat"; 
          val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Now<\/i>";
          val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Monat<\/i>";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=-1
    
    //sonoff.0.SonoffPow1.INFO.Module
     $('hs100.*.*.totalNow').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
       
    
             // log (id)
             anzahl++;
            var ida = id.split('.');
           
              counter++; 
             var valVersion=getState(id.replace("totalNow","hw_ver")).val;  
             
              val1=getState(id.replace("totalNow","state")).val;          //    hs100.0.192_168_178_43.power     
              val0=getObject(id).common.name ;
             // val4=(getState(id.replace("totalNow","power")).val).substr(0, 4) + " W"     ;    // log (val4)       //.substring(0,4)  
              val4=getState(id.replace("totalNow","power")).val + " W"     ;    // log (val4)       //.substring(0,4)        
            //  if(valVersion=="1.0")  {val2=(getState(id.replace("totalNow","current")).val).substr(0, 5)+ " A";} else {val2=getState(id.replace("totalNow","current")).val+ " mA";} 
              if(valVersion=="1.0")  {val2=getState(id.replace("totalNow","current")).val + " A";} else {val2=getState(id.replace("totalNow","current")).val+ " mA";}  
             // val3=(getState(id.replace("totalNow","voltage")).val).substring(0, 3)+" V"; 
              val3=getState(id.replace("totalNow","voltage")).val +" V";
              val5=" - "; // let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
              //val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
              //val6=getState(id).val.substring(0,5)+ " kWh";
              val6=getState(id).val + " kWh";
             // val7=(getState(id.replace("totalNow","totalMonthNow")).val).substr(0, 5)+ " kWh";
              val7=getState(id.replace("totalNow","totalMonthNow")).val+ " kWh";
              val8=(parseFloat(getState(id).val)*kwhPreis).toFixed(2)+" €";
              val9=(parseFloat(getState(id.replace("totalNow","totalMonthNow")).val)*kwhPreis).toFixed(2)+" €";
            
              if (!val1) {
                  val1="❌";
                  val4=(" <font color=\"red\"> ")+val1;
                  val2=(" <font color=\"red\"> ")+val2;
                  val3=(" <font color=\"red\"> ")+" 0 %";
                  val5=(" <font color=\"red\"> ")+" --- ";
                  val6=(" <font color=\"red\"> ")+" --- ";
                  val7=(" <font color=\"red\"> ")+" --- ";
                  val0=(" <font color=\"red\"> ")+val0 ;
                  val8=(" <font color=\"red\"> ")+val8;
                  val9=(" <font color=\"red\"> ")+val9}
              else{
                  val1="✅";
                 // val1=(" <font color=\"lightgreen\"> ")+val1
                 // val2=(" <font color=\"green\"> ")+val2
                 // val3=(" <font color=\"green\"> ")+val3
                 // val0=(" <font color=\"green\"> ")+val0
                 }
    
    
             
       
         tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
        
       }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
    } //ende fritzdect
    
     if (homematic){
    
                 // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
          tabelleAusbessern();
          counter=0;
          val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";val9="";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=0;
          val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>Homematic</b>"; val1=""; val2="";val3="";val4="";
          val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
          val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Now";
          val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Monat"; 
          val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Now<\/i>";
          val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Monat<\/i>";
          tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
          tabelleAusbessern();
          counter=-1
    
    //sonoff.0.SonoffPow1.INFO.Module
     $('hm-rpc.*.*.*.ENERGY_COUNTER').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
       
    
             // log (id)
             anzahl++;
            var ida = id.split('.');
           
              counter++; 
          //   var valVersion=getState(id.replace("totalNow","hw_ver")).val;  
             
              val1=" - "; //getState(id.replace("ENERGY_COUNTER","STATE")).val;                  
              val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;  //val0=getObject(id).common.name ;
              val4=getState(id.replace("ENERGY_COUNTER","POWER")).val+ " W"     ;     //log (val4)       //.substring(0,4)        
              val2=getState(id.replace("ENERGY_COUNTER","CURRENT")).val.toFixed(0)+ " mA"; 
              val3=getState(id.replace("ENERGY_COUNTER","VOLTAGE")).val.toFixed(0)+" V"; 
              val5=" - "; // let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
              //val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
              val6=" - "; // getState(id).val.substring(0,5)+ " kWh";
              val7=" - "; // getState(id.replace("totalNow","totalMonthNow")).val.substring(0,5)+ " kWh";
              val8=" - "; // (parseFloat(getState(id).val)*kwhPreis).toFixed(2)+" €";
              val9=" - "; // (parseFloat(getState(id.replace("totalNow","totalMonthNow")).val)*kwhPreis).toFixed(2)+" €";
            
              if (!val1) {
                  val1="❌";
                  val4=(" <font color=\"red\"> ")+val1;
                  val2=(" <font color=\"red\"> ")+val2;
                  val3=(" <font color=\"red\"> ")+" 0 %";
                  val5=(" <font color=\"red\"> ")+" --- ";
                  val6=(" <font color=\"red\"> ")+" --- ";
                  val7=(" <font color=\"red\"> ")+" --- ";
                  val0=(" <font color=\"red\"> ")+val0} 
              else{
                  val1="✅";
                 // val1=(" <font color=\"lightgreen\"> ")+val1
                 // val2=(" <font color=\"green\"> ")+val2
                 // val3=(" <font color=\"green\"> ")+val3
                 // val0=(" <font color=\"green\"> ")+val0
                 }
    
    
             
       
         tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
        
       }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
    } //ende fritzdect
    
    
    //-------------------------------------------------------------------------------------------------------------------------------------------------
    //--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
    //-------------------------------------------------------------------------------------------------------------------------------------------------
    
          tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
        // log(anzahl.toString());
              setState(dpAnzahl,anzahl); 
    } // 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 5 Felder definiert, braucht man hier 5 Werte
       
           switch (mehrfachTabelle) {  
             case 1:                    htmlOut=htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>"; break;
            case 2:  if(counter%2==0)  {htmlOut = htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>"; } 
                                  else {htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>";} break;
                                       
            case 3: if(counter%3==0 )  {htmlOut = htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>"; } 
                                  else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>";} 
                                                   else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>";}
                                             } break;
    
    
            case 4: if(counter%4==0)  {htmlOut = htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>"; } 
                                      else {if(counter%2==1 )  { htmlOut = htmlOut+"<td  align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>";} 
                                                   else    {if(counter%2==1 && counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>";} 
                                                                     else    {htmlOut = htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td>&ensp;"+val1+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>";}}
                                             } break;
    
         } //switch ende
    
    
    
    }
    
    
    function tabelleAusbessern() {
           switch (mehrfachTabelle) {  
             case 1:    break;
             case 2:    mix=Math.abs(((counter+1)%2)-mehrfachTabelle);  
                        if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                        break;
             case 3:    mix =Math.abs(((counter+1)%3)-mehrfachTabelle);
                        if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                        if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');   
                        break;
             case 4:    mix=Math.abs(((counter+1)%4)-mehrfachTabelle);
                        if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');
                        if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');    
                        if(mix==3)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');      
                        break; }
    }
    
    function tabelleFinish() {
    
          // tabelle fertigstellen
           switch (mehrfachTabelle) {  
             case 1:    break;
             case 2:    mix=Math.abs(((counter+1)%2)-mehrfachTabelle);  
                        if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                        break;
             case 3:    mix =Math.abs(((counter+1)%3)-mehrfachTabelle);
                        if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                        if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');   
                        break;
             case 4:    mix=Math.abs(((counter+1)%4)-mehrfachTabelle);
                        if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');
                        if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');    
                        if(mix==3)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');      
                        break; }
         
                        var htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: "+htmlÜberFontGroesse+"; font-weight:"+htmlSchriftWeite+ "\">"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</p>"; 
           var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 70%; text-align: right;\" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
            
            if (!htmlSignature) htmlUnter="";
              //Ausgabe über VIS html widget - tabelle in datenpunkt schreiben - html tabelle ohne html header und body
               var htmlOutVIS="";
             //  htmlUberschrift ? htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>" : htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>";
                if (htmlUberschrift) 
                    { zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter ;
    
                  } else {
                   zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter;
    
                     }
    
    // log("bin raus aus tabelleBind");
               if (braucheEinVISWidget) setState(dpVIS, htmlOutVIS );
    
     var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
     var htmlEnd="</table>"+htmlUnter+"</div></body>";
     if (!htmlSignature) htmlUnter="";
    
     //mit oder ohne überschrift - zentriert oder links
    htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd;
     //log(htmlOut);
     
    
    
    }
    
    
    
    

    sigi234S Online
    sigi234S Online
    sigi234
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #123

    @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

    @sigi234 - hier mal alle substrings raus - wenn das nix bringt - muss ich pause machen

    Screenshot (1366).png

    Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
    Immer Daten sichern!

    1 Antwort Letzte Antwort
    0
    • sigi234S sigi234

      @Glasfaser sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

      @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

      @Glasfaser hast du eine ahnung warum das nicht geht - datenpunkt ist ein string

      val4=getState(id.replace("totalNow","power")).val.substr(0,4) + " W"
      

      Mhh .....

      @sigi234
      Kannst du mal vom Datenpunkt mehr Infos ausgeben :
      1.JPG

      {
        "from": "system.adapter.hs100.0",
        "user": "system.user.admin",
        "ts": 1573318948174,
        "common": {
          "name": "Strom LG TV",
          "type": "string",
          "read": true,
          "write": true,
          "role": "value",
          "desc": "totalNow",
          "def": 0,
          "custom": {
            "history.0": {
              "enabled": true,
              "changesOnly": true,
              "debounce": "1000",
              "maxLength": "10",
              "retention": "31536000",
              "changesRelogInterval": 5,
              "changesMinDelta": 0,
              "aliasId": ""
            }
          },
          "smartName": {
            "smartType": "SMARTPLUG"
          }
        },
        "native": {
          "ip": "192.168.178.23"
        },
        "acl": {
          "object": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator",
          "state": 1636
        },
        "_id": "hs100.0.192_168_178_23.totalNow",
        "type": "state"
      }
      
      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von liv-in-sky
      #124

      @sigi234geht und sieht sch.. aus - mich wunderts, das es bei mir funktoniert - ich mußte die werte von hand eingeben, weil sie duch den import nicht da waren - sonst ist ja alles gleich

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      0
      • liv-in-skyL liv-in-sky

        ok - versuch - alles ersetzen, was unter let myschedule steht

        @sigi234 @HeinrichB - bitte checken ob das jetzt geht

        homematic user

        werden die geräte gefunden ?

        //@liv-in-sky Januar 2020
        
        //HIER WIRD PFAD UND FILENAME DEFINIERT
        const path = "/htmlenergy.html";                   //FIlenamen definieren
        const home ='vis.0'                                 //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
        let   braucheEinFile=false;                          // bei true wird ein file geschrieben
        let   braucheEinVISWidget=true;                     // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
        let dpVIS="controll-own.0.TABELLEN.ENERGY"         //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget
        let dpAnzahl="controll-own.0.TABELLEN.AnzahlEnergiemesser";  //WICHTIG datenpunkt erstellen vom typ "number" - bei 0 kein alarm und größer 0 die anzahl der schlechten batterien
        let htmlColorDeviceUeberschrift="white"
        let triggerBySonoffPower=true;
        //---------------------------------------
        let mySchedule="  * * * * * "; 
        
        let kwhPreis=0.29;
        
        var pow=true;
        var tuya=true;
        var hs100=true; //tplink
        var homematic=true;
        
        var gosundSP1x=true;
        
        
        var externalOhneInfo=false;  //noch nicht integriert
        var schalter2ch=true; 
        var schalter3ch=true;
        
        //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 5
        var htmlFeld1='Device';       var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
        var htmlFeld2='Status';        var Feld2lAlign="center";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
        var htmlFeld3='Amp';         var Feld3lAlign="center";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
        var htmlFeld4='Volt';        var Feld4lAlign="center";                    // überschrift Tabellen Spalte4 und  Ausrichtung left,right or center
        var htmlFeld5='Power';        var Feld5lAlign="left";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld6='Schalter';        var Feld6lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld7='';        var Feld7lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld8='';        var Feld8lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld9='';        var Feld9lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld10='';        var Feld10lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        
        //-----------------------------------
        
        
        //ÜBERSCHRIFT ÜBER TABELLE
        let   htmlUberschrift=true;                           // mit Überschrift über der tabelle
        let   htmlSignature=false;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
        const htmlFeldUeber='Energy Devices';              // Überschrift und Signature
        const htmlFarbUber="white";                         // Farbe der Überschrift
        const htmlSchriftWeite="normal";                       // bold, normal - Fettschrift für Überschrift
        const htmlÜberFontGroesse="18px";                       // schriftgröße überschrift
        //MEHRERE TABELLEN NEBENEINANDER
        let   mehrfachTabelle=1;                              // bis zu 4 Tabellen werden nebeneinander geschrieben-  verkürzt das Ganze, dafür etwas breiter - MÖGLICH 1,2,3,oder 4 !!!
        const htmlFarbZweiteTabelle="white";                // Farbe der Überschrift bei jeder 2.ten Tabelle
        const htmlFarbTableColorUber="#BDBDBD";               // Überschrift in der tabelle - der einzelnen Spalten
        //GANZE TABELLE
        let abstandZelle="1";
        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="Helvetica";
        const htmlSchriftgroesse="14px";
        //FELDER UND RAHMEN
        let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
        const htmlFarbFelderschrift="#BDBDBD";                  // SchriftFarbe der Felder
        const htmlFarbFelderschrift2="#D8D8D8";                 // SchriftFarbe der Felder für jede 2te Tabelle
        const htmlFarbTableColorGradient1="#424242";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
        const htmlFarbTableColorGradient2="#424242";          //  Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
        const htmlFarbTableBorderColor="gray";             // Farbe des Rahmen - is tdieser gleich den gradienten, sind die rahmen unsichtbar
        let htmlRahmenLinien="cols";                            // Format für Rahmen: MÖGLICH: "none" oder "all" oder "cols" oder "rows"
        const htmlSpalte1Weite="auto";                   //  Weite der ersten beiden  Spalten oder z.b. 115px
        
        // HIER NICHTS  ÄNDERN
        
        let borderHelpBottum;
        let borderHelpRight;
        let htmlcenterHelp;
        let htmlcenterHelp2;
        
        if(htmlRahmenLinien=="rows") {borderHelpBottum=1;borderHelpRight=0;}
        if(htmlRahmenLinien=="cols") {borderHelpBottum=0;borderHelpRight=1;}
        if(htmlRahmenLinien=="none") {borderHelpBottum=0;borderHelpRight=0;}
        if(htmlRahmenLinien=="all")  {borderHelpBottum=1;borderHelpRight=1;}
        zentriert ? htmlcenterHelp="auto" : htmlcenterHelp="left";
        zentriert ? htmlcenterHelp2="center" : htmlcenterHelp2="left";
        
        
        const htmlZentriert='<center>'
        const htmlStart=    "<!DOCTYPE html><html lang=\"de\"><head><title>Vorlage</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"+
                           "<style> * {  margin: 0;} body {background-color: "+backgroundAll+"; margin: 0 auto;  }"+
                           " p {padding-top: 10px; padding-bottom: 10px; text-align: "+htmlcenterHelp2+"}"+
                          // " div { margin: 0 auto;  margin-left: auto; margin-right: auto;}"+
                           " td { padding:"+abstandZelle+"px; border:0px solid "+htmlFarbTableBorderColor+";  border-right:"+borderHelpRight+"px solid "+htmlFarbTableBorderColor+";border-bottom:"+borderHelpBottum+"px solid "+htmlFarbTableBorderColor+";}"+ 
                           " table { width: "+weite+";  margin: 0 "+htmlcenterHelp+"; border:1px solid "+htmlFarbTableBorderColor+"; border-spacing=\""+abstandZelle+"0px\" ; }"+   // margin macht center
                           "td:nth-child(1) {width: "+htmlSpalte1Weite+"}"+"td:nth-child(2) {width:"+htmlSpalte1Weite+"}"+
                           " </style></head><body> <div>";
        //const htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-weight: bold\">"+htmlFeldUeber+"</p>";                    
        const htmlTabStyle= "<table bordercolor=\""+htmlFarbTableBorderColor+"\" border=\"2px\" cellspacing=\""+abstandZelle+"\" cellpadding=\""+abstandZelle+"\" width=\""+weite+"\" rules=\""+htmlRahmenLinien+"\" style=\"color:"+htmlFarbFelderschrift+";  font-size:"+htmlSchriftgroesse+
                              "; font-family:"+htmlSchriftart+";background-image: linear-gradient(42deg,"+htmlFarbTableColorGradient2+","+htmlFarbTableColorGradient1+");\">";
        const htmlTabUeber1="<tr style=\"color:"+htmlFarbTableColorUber+"; font-weight: bold\">";
        const htmlTabUeber3="</tr>";
        
        
        //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 5
        
        
        var htmlTabUeber2="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+">&ensp;"+htmlFeld2+"&ensp;</td><td  align="+Feld3lAlign+">&ensp;"+htmlFeld3+"&ensp;</td><td align="+Feld4lAlign+
                          ">&ensp;"+htmlFeld4+"&ensp;</td><td  align="+Feld5lAlign+">&ensp;"+htmlFeld5+"&ensp;</td><td  align="+Feld6lAlign+">&ensp;"+htmlFeld6+"&ensp;</td><td  align="+Feld7lAlign+">&ensp;"+htmlFeld7+"&ensp;</td><td  align="+Feld8lAlign+">&ensp;"+htmlFeld8+
                          "&ensp;</td><td  align="+Feld9lAlign+">&ensp;"+htmlFeld9+"&ensp;</td><td  align="+Feld10lAlign+">&ensp;"+htmlFeld10+"&ensp;</td>";
        var htmlTabUeber2_1="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+
                           "&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld4+
                           "&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld5+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld6+"&ensp;</td><td align="+Feld7lAlign+
                           " style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld7+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\"&ensp;>"+htmlFeld8+"&ensp;</td><td  align="+Feld9lAlign+">&ensp;"+htmlFeld9+"&ensp;</td><td  align="+Feld10lAlign+">&ensp;"+htmlFeld10+"&ensp;</td>";
                               //------------------------------------------------------
        
        let triggerBySonoffSwitch=false;
        var anzahl;
        var AkkuAlarm=[];
        var htmlOut="";
        var mix;
        var counter;
        var arrTrigger=[];
        var val1; var val2; var val0; var val3; var val4; var val5; var val6; var val7; var val8; var val9;
        var htmlTabUeber="";
        function writeHTML(){
        
        
        anzahl=0;
        htmlOut="";
        counter=-1;
        htmlTabUeber="";
        switch (mehrfachTabelle) { 
           case 1: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber3;  break;
           case 2: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
           case 3: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2+htmlTabUeber2+htmlTabUeber3; break;
           case 4: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
        }; 
        if (!UeberschriftSpalten) {htmlTabUeber=""}  
        
        //--------------------------------------------------------------------------------------------------------------------------------------------------
        //---------hier kommt eure schleife rein counter++, tabelleBind() und tabelleFinish() müssen so integriert bleiben !!!------------------------------
        //---------alle valx werte müssen von euch bestimmt werden - val0,val1,val2,val3,val4!!!------------------------------------------------------------
        //--------------------------------------------------------------------------------------------------------------------------------------------------
        
        if (pow){
        
                     // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
              tabelleAusbessern();
              counter=0;
              val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";val9="";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=0;
              val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>Pow (R2)</b>"; val1=""; val2="";val3="";val4="";
              val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
              val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";
              val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Gesamt"; 
              val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Heute<\/i>";
              val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Gesamt<\/i>";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=-1
        
        //sonoff.0.SonoffPow1.INFO.Module
         $('sonoff.*.*.INFO.Module').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
           
              if (getState(id).val=="Sonoff Pow" || getState(id).val=="Sonoff Pow R2") {
                 // log (id)
                 anzahl++;
                var ida = id.split('.');
               
                  counter++; 
                    //log("dad   "+getState(id.replace("Info.Module","alive")).val + " ----" +id.replace("Info.Module","alive"))
                  val1=getState(id.replace("INFO.Module","alive")).val;                   //sonoff.0.SonoffPow1.alive          sonoff.0.SonoffPow1.INFO.Module
                  val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;
                  val4=getState(id.replace("INFO.Module","ENERGY_Power")).val.toString()+ " W"                       //sonoff.0.SonoffPow2.ENERGY_Power
                  val2=getState(id.replace("INFO.Module","ENERGY_Current")).val.toFixed(2)+ " A";   //sonoff.0.SonoffPow1.Wifi_RSSIsonoff.0.SonoffPow1.POWER
                  val3=getState(id.replace("INFO.Module","ENERGY_Voltage")).val.toString()+" V"; 
                  let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
                  val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
                  val6=getState(id.replace("INFO.Module","ENERGY_Today")).val.toFixed(2)+ " kWh";
                  val7=getState(id.replace("INFO.Module","ENERGY_Total")).val.toFixed(2)+ " kWh";
                  val8=(getState(id.replace("INFO.Module","ENERGY_Today")).val*kwhPreis).toFixed(1)+" €";
                  val9=(getState(id.replace("INFO.Module","ENERGY_Total")).val*kwhPreis).toFixed(1)+" €";
                
                  if (!getState(id.replace("INFO.Module","alive")).val) {
                      val1="❌";
                      val4=(" <font color=\"red\"> ")+val1;
                      val2=(" <font color=\"red\"> ")+val2;
                      val3=(" <font color=\"red\"> ")+" 0 %";
                      val5=(" <font color=\"red\"> ")+" --- ";
                      val6=(" <font color=\"red\"> ")+" --- ";
                      val7=(" <font color=\"red\"> ")+" --- ";
                      val0=(" <font color=\"red\"> ")+val0} 
                  else{
                      val1="✅";
                     // val1=(" <font color=\"lightgreen\"> ")+val1
                     // val2=(" <font color=\"green\"> ")+val2
                     // val3=(" <font color=\"green\"> ")+val3
                     // val0=(" <font color=\"green\"> ")+val0
                     }
        
        
                 
           
             tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
            
          } }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
        } //ende fritzdect
        
         if (gosundSP1x){
        
                     // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
              tabelleAusbessern();
              counter=0;
              val0=val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=0;
             val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>Gosund</b>"; val1=""; val2="";val3="";val4="";
              val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
              val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";
              val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Gesamt"; 
              val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Heute<\/i>";
              val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Gesamt<\/i>";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=-1
        
        //sonoff.0.SonoffPow1.INFO.Module
         $('sonoff.*.*.INFO.Module').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
           
              if (getState(id).val.includes("Gosund SP1")) {
                 // log (id)
                 anzahl++;
                var ida = id.split('.');
               
                   counter++; 
                    //log("dad   "+getState(id.replace("Info.Module","alive")).val + " ----" +id.replace("Info.Module","alive"))
                  val1=getState(id.replace("INFO.Module","alive")).val;                   //sonoff.0.SonoffPow1.alive          sonoff.0.SonoffPow1.INFO.Module
                  val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;
                  val4=getState(id.replace("INFO.Module","ENERGY_Power")).val.toString()+ " W"                       //sonoff.0.SonoffPow2.ENERGY_Power
                  val2=getState(id.replace("INFO.Module","ENERGY_Current")).val.toFixed(2)+ " A";   //sonoff.0.SonoffPow1.Wifi_RSSIsonoff.0.SonoffPow1.POWER
                  val3=getState(id.replace("INFO.Module","ENERGY_Voltage")).val.toString()+" V"; 
                  let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
                  val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
                  val6=getState(id.replace("INFO.Module","ENERGY_Today")).val.toFixed(2)+ " kWh";
                  val7=getState(id.replace("INFO.Module","ENERGY_Total")).val.toFixed(2)+ " kWh";
                  val8=(getState(id.replace("INFO.Module","ENERGY_Today")).val*kwhPreis).toFixed(1)+" €";
                  val9=(getState(id.replace("INFO.Module","ENERGY_Total")).val*kwhPreis).toFixed(1)+" €";
                
                  if (!getState(id.replace("INFO.Module","alive")).val) {
                      val1="❌";
                      val4=(" <font color=\"red\"> ")+val1;
                      val2=(" <font color=\"red\"> ")+val2;
                      val3=(" <font color=\"red\"> ")+" 0 %";
                      val5=(" <font color=\"red\"> ")+" --- ";
                      val6=(" <font color=\"red\"> ")+" --- ";
                      val7=(" <font color=\"red\"> ")+" --- ";
                      val0=(" <font color=\"red\"> ")+val0} 
                  else{
                      val1="✅";
                     // val1=(" <font color=\"lightgreen\"> ")+val1
                     // val2=(" <font color=\"green\"> ")+val2
                     // val3=(" <font color=\"green\"> ")+val3
                     // val0=(" <font color=\"green\"> ")+val0
                     }
        
        
                           
           
             tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
            
          } }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
        } //ende fritzdect
        
        
         if (hs100){
        
                     // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
              tabelleAusbessern();
              counter=0;
              val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";val9="";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=0;
              val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>HS100</b>"; val1=""; val2="";val3="";val4="";
              val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
              val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Now";
              val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Monat"; 
              val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Now<\/i>";
              val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Monat<\/i>";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=-1
        
        //sonoff.0.SonoffPow1.INFO.Module
         $('hs100.0.*.totalNow').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
           
        
                 // log (id)
                 anzahl++;
                var ida = id.split('.');
               
                  counter++; 
                 var valVersion=getState(id.replace("totalNow","hw_ver")).val;  
                 
                  val1=getState(id.replace("totalNow","state")).val;                  
                  val0=getObject(id).common.name ;
                  val4=getState(id.replace("totalNow","power")).val.substr(0,4)+ " W"     ;    // log (val4)       //.substring(0,4)        
                  if(valVersion=="1.0")  {val2=getState(id.replace("totalNow","current")).val.substr(0,5)+ " A";} else {val2=getState(id.replace("totalNow","current")).val+ " mA";}   
                  val3=getState(id.replace("totalNow","voltage")).val.substring(0,3)+" V"; 
                  val5=" - "; // let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
                  //val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
                  val6=getState(id).val.substring(0,5)+ " kWh";
                  val7=getState(id.replace("totalNow","totalMonthNow")).val.substr(0,5)+ " kWh";
                  val8=(parseFloat(getState(id).val)*kwhPreis).toFixed(2)+" €";
                  val9=(parseFloat(getState(id.replace("totalNow","totalMonthNow")).val)*kwhPreis).toFixed(2)+" €";
                
                  if (!val1) {
                      val1="❌";
                      val4=(" <font color=\"red\"> ")+val1;
                      val2=(" <font color=\"red\"> ")+val2;
                      val3=(" <font color=\"red\"> ")+" 0 %";
                      val5=(" <font color=\"red\"> ")+" --- ";
                      val6=(" <font color=\"red\"> ")+" --- ";
                      val7=(" <font color=\"red\"> ")+" --- ";
                      val0=(" <font color=\"red\"> ")+val0} 
                  else{
                      val1="✅";
                     // val1=(" <font color=\"lightgreen\"> ")+val1
                     // val2=(" <font color=\"green\"> ")+val2
                     // val3=(" <font color=\"green\"> ")+val3
                     // val0=(" <font color=\"green\"> ")+val0
                     }
        
        
                 
           
             tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
            
           }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
        } //ende fritzdect
        
         if (homematic){
        
                     // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
              tabelleAusbessern();
              counter=0;
              val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";val9="";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=0;
              val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><b>Homematic</b>"; val1=""; val2="";val3="";val4="";
              val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
              val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Now";
              val7="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Monat"; 
              val8="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Now<\/i>";
              val9="<font color=\""+htmlColorDeviceUeberschrift+"\"><i>Preis Monat<\/i>";
              tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
              tabelleAusbessern();
              counter=-1
        
        //sonoff.0.SonoffPow1.INFO.Module
         $('hm-rpc.*.*.*.ENERGY_COUNTER').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
           
        
                 // log (id)
                 anzahl++;
                var ida = id.split('.');
               
                  counter++; 
              //   var valVersion=getState(id.replace("totalNow","hw_ver")).val;  
                 
                  val1=" - "; //getState(id.replace("ENERGY_COUNTER","STATE")).val;                  
                  val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;  //val0=getObject(id).common.name ;
                  val4=getState(id.replace("ENERGY_COUNTER","POWER")).val+ " W"     ;     //log (val4)       //.substring(0,4)        
                  val2=getState(id.replace("ENERGY_COUNTER","CURRENT")).val.toFixed(0)+ " mA"; 
                  val3=getState(id.replace("ENERGY_COUNTER","VOLTAGE")).val.toFixed(0)+" V"; 
                  val5=" - "; // let val7_1=getState(id.replace("INFO.Module","POWER")).val;        
                  //val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
                  val6=" - "; // getState(id).val.substring(0,5)+ " kWh";
                  val7=" - "; // getState(id.replace("totalNow","totalMonthNow")).val.substring(0,5)+ " kWh";
                  val8=" - "; // (parseFloat(getState(id).val)*kwhPreis).toFixed(2)+" €";
                  val9=" - "; // (parseFloat(getState(id.replace("totalNow","totalMonthNow")).val)*kwhPreis).toFixed(2)+" €";
                
                  if (!val1) {
                      val1="❌";
                      val4=(" <font color=\"red\"> ")+val1;
                      val2=(" <font color=\"red\"> ")+val2;
                      val3=(" <font color=\"red\"> ")+" 0 %";
                      val5=(" <font color=\"red\"> ")+" --- ";
                      val6=(" <font color=\"red\"> ")+" --- ";
                      val7=(" <font color=\"red\"> ")+" --- ";
                      val0=(" <font color=\"red\"> ")+val0} 
                  else{
                      val1="✅";
                     // val1=(" <font color=\"lightgreen\"> ")+val1
                     // val2=(" <font color=\"green\"> ")+val2
                     // val3=(" <font color=\"green\"> ")+val3
                     // val0=(" <font color=\"green\"> ")+val0
                     }
        
        
                 
           
             tabelleBind(); //HIER NICHTS ÄNDERN : HIER WERDEN DIE DATEN DER SCHLEIFE ZUSAMMENGESETZT  - diese function muss als letztes in der eigenen schleife aufgerufen werden
            
           }); //Schleifen Ende - je nach schleifenart muss hier etwas geändert werden !!!!!!!!!  
        } //ende fritzdect
        
        
        //-------------------------------------------------------------------------------------------------------------------------------------------------
        //--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
        //-------------------------------------------------------------------------------------------------------------------------------------------------
        
              tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
            // log(anzahl.toString());
                  setState(dpAnzahl,anzahl); 
        } // 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 5 Felder definiert, braucht man hier 5 Werte
           
               switch (mehrfachTabelle) {  
                 case 1:                    htmlOut=htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>"; break;
                case 2:  if(counter%2==0)  {htmlOut = htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>"; } 
                                      else {htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>";} break;
                                           
                case 3: if(counter%3==0 )  {htmlOut = htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>"; } 
                                      else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>";} 
                                                       else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>";}
                                                 } break;
        
        
                case 4: if(counter%4==0)  {htmlOut = htmlOut+"<tr><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>"; } 
                                          else {if(counter%2==1 )  { htmlOut = htmlOut+"<td  align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>";} 
                                                       else    {if(counter%2==1 && counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td></tr>";} 
                                                                         else    {htmlOut = htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td>&ensp;"+val1+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td><td align="+Feld10lAlign+">&ensp;"+val9+"&ensp;</td>";}}
                                                 } break;
        
             } //switch ende
        
        
        
        }
        
        
        function tabelleAusbessern() {
               switch (mehrfachTabelle) {  
                 case 1:    break;
                 case 2:    mix=Math.abs(((counter+1)%2)-mehrfachTabelle);  
                            if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                            break;
                 case 3:    mix =Math.abs(((counter+1)%3)-mehrfachTabelle);
                            if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                            if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');   
                            break;
                 case 4:    mix=Math.abs(((counter+1)%4)-mehrfachTabelle);
                            if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');
                            if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');    
                            if(mix==3)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');      
                            break; }
        }
        
        function tabelleFinish() {
        
              // tabelle fertigstellen
               switch (mehrfachTabelle) {  
                 case 1:    break;
                 case 2:    mix=Math.abs(((counter+1)%2)-mehrfachTabelle);  
                            if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                            break;
                 case 3:    mix =Math.abs(((counter+1)%3)-mehrfachTabelle);
                            if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');       
                            if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');   
                            break;
                 case 4:    mix=Math.abs(((counter+1)%4)-mehrfachTabelle);
                            if(mix==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');
                            if(mix==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');    
                            if(mix==3)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');      
                            break; }
             
                            var htmlUeber=    "<p style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: "+htmlÜberFontGroesse+"; font-weight:"+htmlSchriftWeite+ "\">"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</p>"; 
               var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 70%; text-align: right;\" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
                
                if (!htmlSignature) htmlUnter="";
                  //Ausgabe über VIS html widget - tabelle in datenpunkt schreiben - html tabelle ohne html header und body
                   var htmlOutVIS="";
                 //  htmlUberschrift ? htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>" : htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>";
                    if (htmlUberschrift) 
                        { zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter ;
        
                      } else {
                       zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter;
        
                         }
        
        // log("bin raus aus tabelleBind");
                   if (braucheEinVISWidget) setState(dpVIS, htmlOutVIS );
        
         var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
         var htmlEnd="</table>"+htmlUnter+"</div></body>";
         if (!htmlSignature) htmlUnter="";
        
         //mit oder ohne überschrift - zentriert oder links
        htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+htmlEnd;
         //log(htmlOut);
         
        
        
        }
        
        
        
        

        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #125

        @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

        homematic user
        werden die geräte gefunden ?

        error001.png

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        liv-in-skyL 1 Antwort Letzte Antwort
        0
        • HomoranH Homoran

          @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

          homematic user
          werden die geräte gefunden ?

          error001.png

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #126

          @Homoran

          das ist eine sehr seltsame stelle für einen fehler - hast du was verändert - probiere bitte nochmal das script reinzukopieren - vielleicht fehlt was

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          HomoranH 1 Antwort Letzte Antwort
          0
          • liv-in-skyL liv-in-sky

            @Homoran

            das ist eine sehr seltsame stelle für einen fehler - hast du was verändert - probiere bitte nochmal das script reinzukopieren - vielleicht fehlt was

            HomoranH Nicht stören
            HomoranH Nicht stören
            Homoran
            Global Moderator Administrators
            schrieb am zuletzt editiert von Homoran
            #127

            @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

            das ist eine sehr seltsame stelle für einen fehler

            Das dachte ich auch, deshalb hatte ich bereits dreimal neu kopiert, jetzt nochmals neu angelegt, bleibt dabei

            Das einzige was ich geändert hatte war der Pfad zum ANzahl-Datenpunkt da steht aber 11 drin - das könnte passen

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            liv-in-skyL 1 Antwort Letzte Antwort
            0
            • HomoranH Homoran

              @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

              das ist eine sehr seltsame stelle für einen fehler

              Das dachte ich auch, deshalb hatte ich bereits dreimal neu kopiert, jetzt nochmals neu angelegt, bleibt dabei

              Das einzige was ich geändert hatte war der Pfad zum ANzahl-Datenpunkt da steht aber 11 drin - das könnte passen

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #128

              @Homoran steht im log-tab etwas mehr an fehleranalyse

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              HomoranH 1 Antwort Letzte Antwort
              0
              • liv-in-skyL liv-in-sky

                @Homoran steht im log-tab etwas mehr an fehleranalyse

                HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von Homoran
                #129

                @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

                @Homoran steht im log-tab etwas mehr an fehleranalyse

                Ich Idiot - Zeit für Feierabned

                Da hätte ich ja auch mal allein drauf kommen können

                javascript.0	2020-01-18 20:50:00.104	warn	(690) at Timer.processTimers (timers.js:223:10)
                javascript.0	2020-01-18 20:50:00.104	warn	(690) at listOnTimeout (timers.js:263:5)
                javascript.0	2020-01-18 20:50:00.103	warn	(690) at tryOnTimeout (timers.js:300:5)
                javascript.0	2020-01-18 20:50:00.103	warn	(690) at ontimeout (timers.js:436:11)
                javascript.0	2020-01-18 20:50:00.102	warn	(690) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
                javascript.0	2020-01-18 20:50:00.102	warn	(690) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
                javascript.0	2020-01-18 20:50:00.101	warn	(690) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
                javascript.0	2020-01-18 20:50:00.097	warn	(690) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1319:34)
                javascript.0	2020-01-18 20:50:00.096	warn	(690) at Object.<anonymous> (script.js.Strommessdosen001:435:2)
                javascript.0	2020-01-18 20:50:00.096	warn	(690) at writeHTML (script.js.Strommessdosen001:427:7)
                javascript.0	2020-01-18 20:50:00.096	warn	(690) at tabelleFinish (script.js.Strommessdosen001:518:37)
                javascript.0	2020-01-18 20:50:00.095	warn	(690) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1404:20)
                javascript.0	2020-01-18 20:50:00.093	warn	(690) State "controll-own.0.TABELLEN.ENERGY" not found
                

                Sorry - muss sehen wo ich das noch drin hab
                Oder ist das im Script-Hardcoded statt der DP-Variablen?

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                liv-in-skyL 1 Antwort Letzte Antwort
                0
                • HomoranH Homoran

                  @liv-in-sky sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

                  @Homoran steht im log-tab etwas mehr an fehleranalyse

                  Ich Idiot - Zeit für Feierabned

                  Da hätte ich ja auch mal allein drauf kommen können

                  javascript.0	2020-01-18 20:50:00.104	warn	(690) at Timer.processTimers (timers.js:223:10)
                  javascript.0	2020-01-18 20:50:00.104	warn	(690) at listOnTimeout (timers.js:263:5)
                  javascript.0	2020-01-18 20:50:00.103	warn	(690) at tryOnTimeout (timers.js:300:5)
                  javascript.0	2020-01-18 20:50:00.103	warn	(690) at ontimeout (timers.js:436:11)
                  javascript.0	2020-01-18 20:50:00.102	warn	(690) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
                  javascript.0	2020-01-18 20:50:00.102	warn	(690) at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
                  javascript.0	2020-01-18 20:50:00.101	warn	(690) at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
                  javascript.0	2020-01-18 20:50:00.097	warn	(690) at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1319:34)
                  javascript.0	2020-01-18 20:50:00.096	warn	(690) at Object.<anonymous> (script.js.Strommessdosen001:435:2)
                  javascript.0	2020-01-18 20:50:00.096	warn	(690) at writeHTML (script.js.Strommessdosen001:427:7)
                  javascript.0	2020-01-18 20:50:00.096	warn	(690) at tabelleFinish (script.js.Strommessdosen001:518:37)
                  javascript.0	2020-01-18 20:50:00.095	warn	(690) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1404:20)
                  javascript.0	2020-01-18 20:50:00.093	warn	(690) State "controll-own.0.TABELLEN.ENERGY" not found
                  

                  Sorry - muss sehen wo ich das noch drin hab
                  Oder ist das im Script-Hardcoded statt der DP-Variablen?

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  schrieb am zuletzt editiert von
                  #130

                  @Homoran ja für uns beide - heute ist schluss mit den denksportaufgaben

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  GlasfaserG HomoranH 2 Antworten Letzte Antwort
                  0
                  • liv-in-skyL liv-in-sky

                    @Homoran ja für uns beide - heute ist schluss mit den denksportaufgaben

                    GlasfaserG Offline
                    GlasfaserG Offline
                    Glasfaser
                    schrieb am zuletzt editiert von Glasfaser
                    #131

                    @liv-in-sky

                    Dort ist der Fehler ..
                    1.JPG

                    //-------------------------------------------------------------------------------------------------------------------------------------------------
                    
                     
                    
                          tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
                    
                        // log(anzahl.toString());
                    
                              setState(dpAnzahl,anzahl); 
                    
                    } // function ende
                    
                     
                    
                    //MAIN:
                    

                    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                    1 Antwort Letzte Antwort
                    0
                    • liv-in-skyL liv-in-sky

                      @Homoran ja für uns beide - heute ist schluss mit den denksportaufgaben

                      HomoranH Nicht stören
                      HomoranH Nicht stören
                      Homoran
                      Global Moderator Administrators
                      schrieb am zuletzt editiert von Homoran
                      #132

                      @liv-in-sky
                      Habs!
                      durch die erneute copy ist isTable und isDP falsch true und false gewesen

                      EDIT:
                      Table_001a.png

                      Leider hilft das setzen von false

                      var pow=false;
                      var tuya=false;
                      var hs100=false; //tplink
                      var homematic=true;
                       
                      var gosundSP1x=false;
                      

                      nicht um die Überschriften auszublenden.

                      Aber mach erst einmal für heute Schluss und ruh dich aus!

                      EDIT2:

                      Doch - alles gut!
                      Die Überschriften sind raus

                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                      GlasfaserG 1 Antwort Letzte Antwort
                      0
                      • HomoranH Homoran

                        @liv-in-sky
                        Habs!
                        durch die erneute copy ist isTable und isDP falsch true und false gewesen

                        EDIT:
                        Table_001a.png

                        Leider hilft das setzen von false

                        var pow=false;
                        var tuya=false;
                        var hs100=false; //tplink
                        var homematic=true;
                         
                        var gosundSP1x=false;
                        

                        nicht um die Überschriften auszublenden.

                        Aber mach erst einmal für heute Schluss und ruh dich aus!

                        EDIT2:

                        Doch - alles gut!
                        Die Überschriften sind raus

                        GlasfaserG Offline
                        GlasfaserG Offline
                        Glasfaser
                        schrieb am zuletzt editiert von
                        #133

                        @Homoran

                        Nicht schlecht ..... was ein Hamster im Laufrad leisten kann . :grinning:

                        1.JPG

                        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                        HomoranH 1 Antwort Letzte Antwort
                        0
                        • GlasfaserG Glasfaser

                          @Homoran

                          Nicht schlecht ..... was ein Hamster im Laufrad leisten kann . :grinning:

                          1.JPG

                          HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von Homoran
                          #134

                          @Glasfaser IMG_20200118_210322335~2.jpg

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          1 Antwort Letzte Antwort
                          2
                          • ? Offline
                            ? Offline
                            Ein ehemaliger Benutzer
                            schrieb am zuletzt editiert von
                            #135

                            @liv-in-sky @sigi234

                            Guten Morgen,

                            ich habe jetzt auch mal das Test-Skript für Sigi bei mir eingestellt (das ohne die von dir genannten substrings) und es schaut gut aus. So als Zwischenergebnis von mir mal und meinen Geräten :-)

                            Bildschirmfoto 2020-01-19 um 06.34.32.JPG

                            liv-in-skyL 1 Antwort Letzte Antwort
                            0
                            • ? Ein ehemaliger Benutzer

                              @liv-in-sky @sigi234

                              Guten Morgen,

                              ich habe jetzt auch mal das Test-Skript für Sigi bei mir eingestellt (das ohne die von dir genannten substrings) und es schaut gut aus. So als Zwischenergebnis von mir mal und meinen Geräten :-)

                              Bildschirmfoto 2020-01-19 um 06.34.32.JPG

                              liv-in-skyL Offline
                              liv-in-skyL Offline
                              liv-in-sky
                              schrieb am zuletzt editiert von Homoran
                              #136

                              @HeinrichB moin - da ist aber jmd früh unterwegs - hast du lust etwas auszuprobieren

                              im script um die zeile 314 rum - gibt es eine zeile

                              val4=getState(id.replace("totalNow","power")).val + " W"
                              

                              könntest du die auskommentieren ( mit //) und dafür folgendes einsetzen

                                       var val4_1=getState(id.replace("totalNow","power")).val.toString();
                                       val4=val4_1.substr(0, 4) + " W";
                              

                              kommen die fehler dann wieder

                              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                              ? 1 Antwort Letzte Antwort
                              0
                              • liv-in-skyL liv-in-sky

                                @HeinrichB moin - da ist aber jmd früh unterwegs - hast du lust etwas auszuprobieren

                                im script um die zeile 314 rum - gibt es eine zeile

                                val4=getState(id.replace("totalNow","power")).val + " W"
                                

                                könntest du die auskommentieren ( mit //) und dafür folgendes einsetzen

                                         var val4_1=getState(id.replace("totalNow","power")).val.toString();
                                         val4=val4_1.substr(0, 4) + " W";
                                

                                kommen die fehler dann wieder

                                ? Offline
                                ? Offline
                                Ein ehemaliger Benutzer
                                schrieb am zuletzt editiert von
                                #137

                                @liv-in-sky

                                Guten Morgen,

                                habe ich gerne gemacht (Die drei Hochzeichen habe ich gelöscht)

                                Bis hier läut es :)

                                Bildschirmfoto 2020-01-19 um 08.34.33.JPG

                                HomoranH 1 Antwort Letzte Antwort
                                0
                                • ? Ein ehemaliger Benutzer

                                  @liv-in-sky

                                  Guten Morgen,

                                  habe ich gerne gemacht (Die drei Hochzeichen habe ich gelöscht)

                                  Bis hier läut es :)

                                  Bildschirmfoto 2020-01-19 um 08.34.33.JPG

                                  HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von Homoran
                                  #138

                                  @HeinrichB sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

                                  Die drei Hochzeichen habe ich gelöscht

                                  Ich habe die doppelten 'script-Ende' Tags entfernt

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  liv-in-skyL 1 Antwort Letzte Antwort
                                  0
                                  • HomoranH Homoran

                                    @HeinrichB sagte in Strom Geräte als HTML Tabelle - Vis - Iqontrol:

                                    Die drei Hochzeichen habe ich gelöscht

                                    Ich habe die doppelten 'script-Ende' Tags entfernt

                                    liv-in-skyL Offline
                                    liv-in-skyL Offline
                                    liv-in-sky
                                    schrieb am zuletzt editiert von liv-in-sky
                                    #139

                                    @Homoran danke - ich weiß zwar nicht von was ihr 2 redet - aber großer dank an beide - hauptsache es funktioniert jetzt

                                    @Homoran @HeinrichB - habt ihr jetzt noch ein gerät, welches eingebunden gehört

                                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                    ? HomoranH 2 Antworten Letzte Antwort
                                    0
                                    • liv-in-skyL liv-in-sky

                                      @Homoran danke - ich weiß zwar nicht von was ihr 2 redet - aber großer dank an beide - hauptsache es funktioniert jetzt

                                      @Homoran @HeinrichB - habt ihr jetzt noch ein gerät, welches eingebunden gehört

                                      ? Offline
                                      ? Offline
                                      Ein ehemaliger Benutzer
                                      schrieb am zuletzt editiert von
                                      #140

                                      @liv-in-sky

                                      Ich habe nur die HS110 und die Sonoff zur Zeit

                                      Aber als Gedanke: Wie schaut es mit den Werten aus, die von einem virtual Powermeter kommen? Da wird ja ein Wert gerechnet

                                      liv-in-skyL 1 Antwort Letzte Antwort
                                      0
                                      • ? Ein ehemaliger Benutzer

                                        @liv-in-sky

                                        Ich habe nur die HS110 und die Sonoff zur Zeit

                                        Aber als Gedanke: Wie schaut es mit den Werten aus, die von einem virtual Powermeter kommen? Da wird ja ein Wert gerechnet

                                        liv-in-skyL Offline
                                        liv-in-skyL Offline
                                        liv-in-sky
                                        schrieb am zuletzt editiert von
                                        #141

                                        @HeinrichB weiß nicht, was das ist - aber wenn du ein bild von den datenpunkten hättest und es dort um energy geht - einfch zeigen

                                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                        ? 1 Antwort Letzte Antwort
                                        0
                                        • liv-in-skyL liv-in-sky

                                          @HeinrichB weiß nicht, was das ist - aber wenn du ein bild von den datenpunkten hättest und es dort um energy geht - einfch zeigen

                                          ? Offline
                                          ? Offline
                                          Ein ehemaliger Benutzer
                                          schrieb am zuletzt editiert von
                                          #142

                                          @liv-in-sky

                                          Hallo,

                                          anbei der das komplette Objekt als JSON. Hoffe, es hilft. Danke :)

                                          virtualpowermeter.0.json

                                          liv-in-skyL 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          819

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe