Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Strom Geräte als HTML Tabelle - Vis - Iqontrol

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Strom Geräte als HTML Tabelle - Vis - Iqontrol

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

      obwohl die infos von apollon eher negtiv waren - das script aber fast fertig für tuya war - falls es user gibt, die besondere tuya haben - ist die idee von apollon, diese extra einzutragen, eine gute idee und nicht allzu schwer zu integrieren

      hier ein neues zum test

      @sigi234 auch das hs100 ist hier drin und braucht check - der unterschied zwischen status und schalter !

      @homoran - wegen zustand des schalters -kannst du das bitte etwas beschreiben - die bilder sagen mir nicht viel, da ich deine ganzen namen nicht so intus habe und das homematic bild - ist halt ein schönes grün - ich glaube ich habe sowas schon mal in blau gesehen 🙂

      //@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 blitzwolf=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(2)+" €";
                val9=(getState(id.replace("INFO.Module","ENERGY_Total")).val*kwhPreis).toFixed(2)+" €";
              
                if (!getState(id.replace("INFO.Module","alive")).val) {
                    val1="❌";
                    val4=(" <font color=\"red\"> ")+" --- ";
                    val2=(" <font color=\"red\"> ")+" --- ";
                    val3=(" <font color=\"red\"> ")+" --- ";
                    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 (blitzwolf){
      
                  // 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>BlitzWolf SHP</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=="BlitzWolf SHP") {
              // 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(2)+" €";
               val9=(getState(id.replace("INFO.Module","ENERGY_Total")).val*kwhPreis).toFixed(2)+" €";
             
               if (!getState(id.replace("INFO.Module","alive")).val) {
                    val1="❌";
                    val4=(" <font color=\"red\"> ")+" --- ";
                    val2=(" <font color=\"red\"> ")+" --- ";
                    val3=(" <font color=\"red\"> ")+" --- ";
                    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\"> ")+" --- ";
                    val2=(" <font color=\"red\"> ")+" --- ";
                    val3=(" <font color=\"red\"> ")+" --- ";
                    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;  
                var val1_1=Date.parse(getState(id.replace("totalNow","last_update")).val); 
                if (parseInt((new Date().getTime())) - val1_1 < 120000) {val1=true} else {val1=false;}  // log(val1.toString())          
                val0=getObject(id).common.name ;
               
                var val4_1=getState(id.replace("totalNow","power")).val.toString();
                val4=val4_1.substr(0, 4) + " W";            //getState(id.replace("totalNow","power")).val + " W"     ;    // log (val4)       //.substring(0,4)        
                var val2_1=getState(id.replace("totalNow","current")).val.toString();
                if(valVersion=="1.0")  {val2=val2_1.substr(0, 5) + " A";} else {val2=val2_1+ " mA";}  
                var val3_1=getState(id.replace("totalNow","voltage")).val.toString();
                val3=val3_1.substring(0, 3)+" V";
                var val5_1= getState(id.replace("totalNow","state")).val;
                val5_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
                val6=getState(id).val + " 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)+" €";
              //  log(val1.toString()) 
      
                if (!val1) {
                   // log("false")
                    val1="❌";
                    val4=(" <font color=\"red\"> ")+" --- ";
                    val2=(" <font color=\"red\"> ")+" --- ";
                    val3=(" <font color=\"red\"> ")+" --- ";
                    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{
                   // log("true")
                    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  !!!
         
      var ida = id.split('.');
                   var arrFilt=[];
                 
                $(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]+".*").each(function(id, i) {   // kontrolliere ob OPERATING_VOLTAGE vorhanden
                    var idc = id.split('.');
                 arrFilt.push(idc[4])
                 });
      
                 //log(arrFilt.toString())
      
              //log (id)
               anzahl++;
              
                var stateIdHM=ida[3]; //log(stateIdHM)
                counter++; 
            //   var valVersion=getState(id.replace("totalNow","hw_ver")).val;  
                 
                 
              
                val1=!getState(ida[0]+"."+ida[1]+"."+ida[2]+"."+"0"+".UNREACH").val   //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)        
                if (arrFilt.includes("CURRENT")) {val2=getState(id.replace("ENERGY_COUNTER","CURRENT")).val.toFixed(0)+ " mA";} else {val2="-"} 
                if (arrFilt.includes("VAOLTAGE")) {val3=getState(id.replace("ENERGY_COUNTER","VOLTAGE")).val.toFixed(0)+" V";}  else {val3="-"} 
                if (stateIdHM=="6" && arrFilt.includes("CURRENT")) {val5=getState(ida[0]+"."+ida[1]+"."+ida[2]+"."+"3"+".STATE").val;val5 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";} else {val5="-"} 
                if (stateIdHM=="2" && arrFilt.includes("CURRENT")) {val5=getState(ida[0]+"."+ida[1]+"."+ida[2]+"."+"1"+".STATE").val;val5 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";} else {val5="-"} 
                //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\"> ")+" --- ";
                    val2=(" <font color=\"red\"> ")+" --- ";
                    val3=(" <font color=\"red\"> ")+" --- ";
                    val5=(" <font color=\"red\"> ")+" --- ";
                    val6=(" <font color=\"red\"> ")+" --- ";
                    val7=(" <font color=\"red\"> ")+" --- ";
                    val0=(" <font color=\"red\"> ")+val0;
                    val8=(" <font color=\"red\"> ")+" --- ";
                    val9=(" <font color=\"red\"> ")+" --- ";}
                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 (tuya){
      
                   // 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>Tuya</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
       $('tuya.*.*').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
        //  var arrFilt=[];
          var ida = id.split('.');
        //   var idb;
          var checker=false;
          var checkCur=false;
          var checkVol=false;
          var checkPow=false;
          var checkOnline=false;
          var val5_1=false;  var val5_2=false;
        
          //log(getObject(id).common.name)
         if (getObject(id).common.name == "cur_current")  {checkCur=true; val2=getState(id).val.toString(); // log(val2.toString())
                  // log(id)       
                 
                $(ida[0]+"."+ida[1]+"."+ida[2]+".*").each(function(id, i) {   
                    if (getObject(id).common.name == "cur_voltage")  {checkVol=true; val3=getState(id).val.toString()+" mA"; }//log(val3.toString())}
                  });
             
                $(ida[0]+"."+ida[1]+"."+ida[2]+".*").each(function(id, i) {  
                     if (getObject(id).common.name == "cur_power")  {checkPow=true; val4=getState(id).val.toString()+" W"; }//log(val4.toString())}
                     }); 
                  
               $(ida[0]+"."+ida[1]+"."+ida[2]+".*").each(function(id, i) {   
                      if (getObject(id).common.name.includes("online"))  {checkOnline=true; val1=getState(id).val; }//log(val1.toString())}
                    
                     });  
      
                     val5_2=false;
                $(ida[0]+"."+ida[1]+"."+ida[2]+".*").each(function(id, i) {   
                      if (getObject(id).common.name ==("power"))  { val5_2=true; val5_1=getState(id).val; }//log(val5_1.toString())}
                    
                     });  
                    }
      
        // if (getObject(id.replace("cur_current","cur_voltage")).common.name == "cur_voltage")  {checkVol=true}
        // if (getObject(id.replace("cur_current","cur_power")).common.name == "cur_power")    {checkPow=true}
         
         if (checkCur && checkPow && checkVol && checkOnline) checker=true;
        // log(checkCur.toString() + checkVol.toString()+ checkPow.toString())///if (getObject(id).common.name == "cur_voltage") {}
         ///if (getObject(id).common.name == "cur_power") {}
      
         if (checker) {
      
      
      
      
             
      
              //log (id)
               anzahl++;
              
                var stateIdHM=ida[3]; //log(stateIdHM)
                counter++; 
            //   var valVersion=getState(id.replace("totalNow","hw_ver")).val;  
                 
                 
              
              //  val1=getState(ida[0]+"."+ida[1]+"."+ida[2]+".cur_current").val   //getState(id.replace("ENERGY_COUNTER","STATE")).val;                  
                val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]).common.name ;  //val0=getObject(id).common.name ;
               if(val5_2) {if (val5_1)  {val5=(" <font color=\"lightgreen\"> ")+"ON"} else { val5=(" <font color=\"red\"> ")+"OFF";}}
                  else {if (val1) {val5=" - "} else { val5=(" <font color=\"red\"> ")+" - ";}} 
              //  val4=getState(id.replace("ENERGY_COUNTER","POWER")).val+ " W"     ;     //log (val4)       //.substring(0,4)        
              //  val2=" - ";
              //  val3=" - ";
               /* 
                if (arrFilt.includes("CURRENT")) {val2=getState(id.replace("ENERGY_COUNTER","CURRENT")).val.toFixed(0)+ " mA";} else {val2="-"} 
                if (arrFilt.includes("VAOLTAGE")) {val3=getState(id.replace("ENERGY_COUNTER","VOLTAGE")).val.toFixed(0)+" V";}  else {val3="-"} 
                if (stateIdHM=="6" && arrFilt.includes("CURRENT")) {val5=getState(ida[0]+"."+ida[1]+"."+ida[2]+"."+"3"+".STATE").val;val5 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";} else {val5="-"} 
                if (stateIdHM=="2" && arrFilt.includes("CURRENT")) {val5=getState(ida[0]+"."+ida[1]+"."+ida[2]+"."+"1"+".STATE").val;val5 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";} else {val5="-"} 
                //val7_1 ? val5=(" <font color=\"lightgreen\"> ")+"ON" : val5=(" <font color=\"red\"> ")+"OFF";
                */
               // val5=" - ";
                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\"> ")+" --- ";
                    val2=(" <font color=\"red\"> ")+" --- ";
                    val3=(" <font color=\"red\"> ")+" --- ";
                    val5=(" <font color=\"red\"> ")+" --- ";
                    val6=(" <font color=\"red\"> ")+" --- ";
                    val7=(" <font color=\"red\"> ")+" --- ";
                    val0=(" <font color=\"red\"> ")+val0;
                    val8=(" <font color=\"red\"> ")+" --- ";
                    val9=(" <font color=\"red\"> ")+" --- ";}
                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);
       
      
      
      }
      
      
      
      

      Homoran ? sigi234 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @liv-in-sky last edited by

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

        ist halt ein schönes grün - ich glaube ich habe sowas schon mal in blau gesehen

        grün ist custom design - blau ist standard 😉

        Ich habe dort den Kanal :3 (ganz oben (das ist das Summensignal aus den nächsten drei virtuellen Kanälen) abgebildet =Schaltzustand: aus), und daneben das was dein Skript macht = On

        1 Reply Last reply Reply Quote 0
        • ?
          A Former User @liv-in-sky last edited by A Former User

          @liv-in-sky ich für meinen Teil bin ihm dankbar für seine Arbeit und schätze die Tabelle sehr. Ebenso erschließt sich mir nicht, warum ich eine Verbrauchsübersicht im Sekundentakt brauche. Aber das wird jetzt dann grundsätzlich und die Frage, ob weiter oder nicht Stelle ich an den Entwickler

          Ich danke ihm für diese Tabelle und die bereits erstellte sonoff. Ich schätze sie ausserordentlich

          liv-in-sky Homoran 2 Replies Last reply Reply Quote 1
          • Glasfaser
            Glasfaser @Homoran last edited by

            @all und @liv-in-sky

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

            Ich möchte hier mal eine ganz ketzerische Frage stellen:

            Lohnt sich eigentlich die ganze Arbeit, die sich @liv-in-sky hier macht?

            ich habe mich hier beteiligt weil ich die Daten von HomeMatic beitragen wollte.
            Aber je länger dieser Thread wird, desto mehr zweifle ich an Sinn und Unsinn dieses Projekts.

            Erstmal nochmal einen ganz großes Lob was @liv-in-sky hier und in anderen Tabellen-Thread an Energie , Geduld und Freizeit reinsteckt .👍

            Für mich Persönlich reicht es auch und habe nur kurz dabei beigetragen .

            Bevor @liv-in-sky seine ganze Energie hier verpufft überlegt bitte einmal ob das Projekt wirklich sinnvoll ist.

            Richtig … das sollte man hier bedenken ❗

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

              @Homoran

              ganz so abwegig ist der gedanke von homoran nicht- ich habe auch schon überlegt, ob das alles sinn macht aber ich habe noch weitere aspekte, die mich dann doch weitermachen liesen

              • etwas einfach zu unterbrechen liegt mir nicht bzw dafür brauche ich für mich gute gründe - da ja auch andere zeit investieren um zu testen und diese tabelle tatsächlich nutzen wollen
              • zb die tuya aufgabe - auch wenn sie nach der aussage von apollon eher falsch angegangen worden ist, wollte ich es einfach machen - da es mich sicherer im umgang mit diesen iobroker-verzeichnis macht - und ich gerne etwas programmiererfahrung sammle
              • ich selbst wollte diese tabelle , weil noch weitere energiemesser bei mir kommen werden
              Homoran 1 Reply Last reply Reply Quote 5
              • Homoran
                Homoran Global Moderator Administrators @liv-in-sky last edited by Homoran

                @liv-in-sky

                Das sind alles Punkte, die ICH für mich persönlcih auch unterschreiben würde.

                Nach dem Motto: Ich will es können!

                Danke für diesen Willen

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Guest last edited by

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

                  ich für meinen Teil bin ihm dankbar für seine Arbeit

                  Das ist wohl jeder hier - mich eingeschlossen.

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

                  Ebenso erschließt sich mir nicht, warum ich eine Verbrauchsübersicht im Sekundentakt brauche.

                  Das wird jetzt etwas komplexer!
                  Abgesehen davon dass ich das nie verlangt habe:
                  sekundengenau ist es nur dann notwendig, wenn man damit Berechnungen anstellen will. Dann muss der Messwert der Solarproduktion und der Messwert des Stromzählers zur selben (Milli-) Sekunde erfasst werden, damit kein Blödsinn raus kommt.
                  Die Leistung schwankt teilweise sehr schnell. ( Stichwort "Stromspitzen", auch wenn sich diese im Millisekundenbereich abspielen).Jeder von euch, der sich Messeinrichtungen gekauft hat, hatte dafür ja sicher einen Grund.

                  Der häufigste ist herauszubekommen, warum man dem EVU jeden Monat soooo viel Geld überweisen muss, und ob man da nicht noch etwas sparen kann. Also der effektive Verbrauch

                  Hier ein Beispiel warum es dann nichts bringt im 15 Minuten-Intervall diesen Verbrauch zu monitoren.

                  So sieht mein Diagramm für den Tagesüberblick aus:
                  Strom_overview.png

                  Der große Peak war eben das Badewasser über Durchlauferhitzer. Auch sonst sieht man da ein paar Spitzen. Aber Flot rundet! Auch (oder gerade) wenn die Messpunkte im 5-Sekunden Takt kommen.

                  Zoomt man das jetzt auf sieht es zwischen 16:45 und 17:00 so aus:
                  Strom_details.png

                  Wenn man sich jetzt nochmal vor Augen führt dass nur alle 15 Minuten aktualisiert wird, hätte man entweder einen Dauerverbrauch von 650W, 3.800W oder gar 5.800W.
                  In den ersten Fällen kann man gar nicht glauben, dass die Sicherung geflogen ist - im Letzten Fall wundert man sich nicht mehr.

                  Der nächste Punkt waren die Zustände der Schalter.
                  Hier hatte ich geschrieben, dass diese Zustände in meinem View sekunden genau sind. Nicht weil ich es will, sondern weil sie von der HM-Zentrale so gepusht werden. In dem Moment wo sie geschaltet werden sieht man es auch.

                  Jetzt stellen wir uns vor, diese Tabelle wird auch nur alle 15 Minuten aktualisiert.
                  Jetzt will ich aus dem Haus, ins Bett oder wer weiss was sonst und sehe auf die Tabell ob nochirgendwo Licht an ist, der Herd noch läuft, ein Fenster offen ist usw..

                  Was nutzen mir dann Daten, die 15 Minuten alt sind.
                  Auch hier kann es in beide Richtungen gehen.
                  Ich renne in den Garten und will die Schuppentür abschließen, dabei hat meine bessere Hälfte das bereits vor 10 Minuten erledigt.
                  Oder ich gehe beruhigt aus dem Haus, weil ja alle Fenster zu, kein Verbraucher mehr an ist usw...

                  Was nutzt dann diese wirklich schöne Tabelle?

                  Damit sind wir wieder ganz vorne - Der Wert von aktuellen Daten lebt von Aktualität 😉
                  Summen oder historisierte Daten zur Übersicht sind da etwas ganz anderes.

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

                    @liv-in-sky

                    Screenshot (1386).png

                    1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User @Homoran last edited by

                      @Homoran dann habe ich den Sinn der Tabelle für mich gänzlich anders gedeutet. Mir geht es wieder um eine Vergleichsrechnung noch ein live Monitoring

                      Ich will nur wissen was wann wo am Tag und in Summe verbraucht wurde.

                      Wenn du dein Ziel anders formulierst, dann hast du Recht.

                      Mir reicht für Tabelle und ich bin dem Entwickler zu tiefem dank verpflichtet

                      Danke @liv-in-sky

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Guest last edited by Homoran

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

                        Ich will nur wissen was wann wo am Tag und in Summe verbraucht wurde.

                        Dann bin ich voll bei dir!

                        Wobei es auch in diesem Thread schon mehrfach gesagt wurde, dass es für die Summenbildung ja u.a. den source Analytics Adapter gibt

                        ? 1 Reply Last reply Reply Quote 0
                        • ?
                          A Former User @Homoran last edited by

                          @Homoran das stimmt und alle die Daten für wir in der Tabelle haben, liegen eh überall. Es ist nur eine andere dynamische Darstellung

                          Sei mir nicht böse aber diese Diskussion läuft gerade aus den Ruder. Über den Sinn und Unsinn soll jeder für sich unterscheiden. Und jeder kann auch selbst such überlegen, was er wie für sich nutzt.

                          Ich werde für Tabelle sicher nutzen!

                          ? Homoran 2 Replies Last reply Reply Quote 0
                          • ?
                            A Former User @Guest last edited by

                            Ich danke @liv-in-sky für für Erstellung und werde die Tabelle nutzen!
                            Jedoch Klinke ich mich jetzt aus dem topic aus

                            Danke

                            sigi234 1 Reply Last reply Reply Quote 0
                            • sigi234
                              sigi234 Forum Testing Most Active @Guest last edited by

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

                              Jedoch Klinke ich mich jetzt aus dem topic aus

                              Warum?

                              ? vauvau07 2 Replies Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @Guest last edited by

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

                                Sei mir nicht böse

                                Bin ich nicht 😉

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

                                aber diese Diskussion läuft gerade aus den Ruder.

                                sehe ich anders.
                                Wie wäre es denn wenn man alle EnergiemessGeräte" über source-Analytics einbinden würde und @liv-in-sky bindet nur noch deren Datenpunkte in diese wunderschöne Tabelle ein.

                                Dann müsste das Rad (hier: die Berechnung der kumulierten Werte) nicht neu erfunden werden

                                1 Reply Last reply Reply Quote 1
                                • ?
                                  A Former User @sigi234 last edited by

                                  @sigi234 weil ich nichts mehr substanzielles beitragen kann. 👍

                                  1 Reply Last reply Reply Quote 0
                                  • vauvau07
                                    vauvau07 @sigi234 last edited by vauvau07

                                    @sigi234
                                    Strom4.PNG
                                    siehe an alles da
                                    Gas ? filterArray=?

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

                                      ich wollte nur kurz nachfragen

                                      hat noch jmd interesse daran weiterzumachen? muss noch etwas integriert werden?

                                      wer möchte sourcanalytics miteingebunden haben und da etwas testen - ich habe den adapter gerade zum erstenmal installiert - check noch nicht, was da alles geht - da ich im moment nur sonoff pows habe, die alles liefern, was ich brauche, wäre es gut , die sourceanalytics sache mit tuya oder homematic geräten zu testen - geräte ohne kwh anzeige

                                      wer die schalter-zustände aktuell möchte - man könnte auch wie bei der sonoff tabelle auf die schalter triggern und die tabelle updaten

                                      ? crunchip 2 Replies Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky @vauvau07 last edited by liv-in-sky

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

                                        siehe an alles da
                                        Gas ? filterArray=?

                                        was soll mir das gas? filterArray? sagen ?

                                        O vauvau07 2 Replies Last reply Reply Quote 0
                                        • O
                                          Oli @liv-in-sky last edited by

                                          @liv-in-sky

                                          ich finde das Thema sehr interessant, ich habe einige zwave Steckdosen zu Hause, von Permundo und noch einer Firma, die laufen über den homee Adapter, die Datenpunkte kann ich dir aber erst heute Abend mitteilen.

                                          Mit sourcanalytics muss ich mich erst beschäftigen, klingt aber spannend, vor allem würdest du dir die ganze Rechnerei in deinem Script sparen.

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

                                            @Oli das eigene rechnen hätte den vorteil, dass ich im falle eines server stillstand( also ausgeschalten) noch weiter werte generieren könnte - wenn ein server wegen hardwarewechsel oder ähnlichen nicht läuft - gibt es keine aufzeichnungen in history oder sourceanalytics - aber es wäre schon ein großer aufwand

                                            schick die daten, wenn du zeit hast - dann gehen wir sie durch zwave kenn ich auch nicht - aber ich muss ja nur die datenstruktur kennen - vielleicht kannst du mir auch ein json vom zwave.0 zukommen lassen

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            926
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            13
                                            289
                                            26738
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo