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.8k

  • 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

    @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
    HomoranH Nicht stören
    HomoranH Nicht stören
    Homoran
    Global Moderator Administrators
    schrieb am zuletzt editiert von Homoran
    #204

    @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

    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
    0
    • ? Ein ehemaliger Benutzer

      @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

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

      @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.

      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
      0
      • liv-in-skyL liv-in-sky

        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);
         
        
        
        }
        
        
        
        

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

        @liv-in-sky

        Screenshot (1386).png

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

        1 Antwort Letzte Antwort
        0
        • HomoranH Homoran

          @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.

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

          @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

          HomoranH 1 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            @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

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

            @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

            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
            0
            • HomoranH 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

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

              @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!

              ? HomoranH 2 Antworten Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                @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!

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

                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

                sigi234S 1 Antwort Letzte Antwort
                0
                • ? Ein ehemaliger Benutzer

                  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

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

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

                  Jedoch Klinke ich mich jetzt aus dem topic aus

                  Warum?

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

                  ? vauvau07V 2 Antworten Letzte Antwort
                  0
                  • ? Ein ehemaliger Benutzer

                    @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!

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

                    @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

                    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
                    1
                    • sigi234S sigi234

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

                      Jedoch Klinke ich mich jetzt aus dem topic aus

                      Warum?

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

                      @sigi234 weil ich nichts mehr substanzielles beitragen kann. 👍

                      1 Antwort Letzte Antwort
                      0
                      • sigi234S sigi234

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

                        Jedoch Klinke ich mich jetzt aus dem topic aus

                        Warum?

                        vauvau07V Offline
                        vauvau07V Offline
                        vauvau07
                        schrieb am zuletzt editiert von vauvau07
                        #214

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

                        Gruß Volkmar

                        liv-in-skyL 1 Antwort Letzte Antwort
                        0
                        • liv-in-skyL Offline
                          liv-in-skyL Offline
                          liv-in-sky
                          schrieb am zuletzt editiert von
                          #215

                          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

                          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

                          ? crunchipC 2 Antworten Letzte Antwort
                          0
                          • vauvau07V vauvau07

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

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

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

                            siehe an alles da
                            Gas ? filterArray=?

                            was soll mir das gas? filterArray? sagen ?

                            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

                            O vauvau07V 2 Antworten Letzte Antwort
                            0
                            • liv-in-skyL 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 Offline
                              O Offline
                              Oli
                              schrieb am zuletzt editiert von
                              #217

                              @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.

                              Gruß
                              Oliver

                              liv-in-skyL 1 Antwort Letzte Antwort
                              0
                              • O Oli

                                @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-skyL Offline
                                liv-in-skyL Offline
                                liv-in-sky
                                schrieb am zuletzt editiert von
                                #218

                                @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

                                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

                                  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

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

                                  @liv-in-sky Hallo

                                  ich habe grosses Interesse; deine letzte Tabelle läuft bei mir schon sehr stabil und die Grundsatzdiskussion, dass ja alles schon da ist und alles viel besser geht, habe ich mangels Wissen dann verlassen.
                                  Also; ich bin gerne dabei - auch, wenn ich keine Koryphäe bin

                                  Danke :)

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

                                    @liv-in-sky Hallo

                                    ich habe grosses Interesse; deine letzte Tabelle läuft bei mir schon sehr stabil und die Grundsatzdiskussion, dass ja alles schon da ist und alles viel besser geht, habe ich mangels Wissen dann verlassen.
                                    Also; ich bin gerne dabei - auch, wenn ich keine Koryphäe bin

                                    Danke :)

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

                                    @HeinrichB du bist auf jeden fall willkommen - vergessen wir die diskussion darüber - versuche doch bei gelegenheit einen wert , der nur power, ampere und volt hat in sourcanalytics einzubinden - ich denke mal wir brauchen nur den power also Watt wert

                                    ich versuche, diesen watt wert, der in sourceanalytics wohl zu kwh werden soll, einzubinden und die variablen im script dafür zu integrieren

                                    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 du bist auf jeden fall willkommen - vergessen wir die diskussion darüber - versuche doch bei gelegenheit einen wert , der nur power, ampere und volt hat in sourcanalytics einzubinden - ich denke mal wir brauchen nur den power also Watt wert

                                      ich versuche, diesen watt wert, der in sourceanalytics wohl zu kwh werden soll, einzubinden und die variablen im script dafür zu integrieren

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

                                      @liv-in-sky

                                      Würde und wollte ich eben gerne machen, aber leider reagiert mein Speicherbutton bei dem sourceanalytix nicht. Ich kann es nur für eine meiner tuya auf dem Testsystem machen. Sonst habe ich keine, die nur A,V und W bringen. Sorry

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

                                        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

                                        crunchipC Abwesend
                                        crunchipC Abwesend
                                        crunchip
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #222

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

                                        wer möchte sourcanalytics miteingebunden haben und da etwas testen

                                        den habe ich laufen, erfasse damit Strom, Gas und Wasser.
                                        desweiteren gäbe es auch noch ioBroker.statistics nur mal so am Rande erwähnt

                                        beim testen kann ich dir gerne wieder behilflich sein.

                                        umgestiegen von Proxmox auf Unraid

                                        liv-in-skyL 1 Antwort Letzte Antwort
                                        0
                                        • crunchipC crunchip

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

                                          wer möchte sourcanalytics miteingebunden haben und da etwas testen

                                          den habe ich laufen, erfasse damit Strom, Gas und Wasser.
                                          desweiteren gäbe es auch noch ioBroker.statistics nur mal so am Rande erwähnt

                                          beim testen kann ich dir gerne wieder behilflich sein.

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

                                          @crunchip

                                          das wäre cool - ich melde mich, wenn ich etwas weiter bin - muss nochmal homematic überarbeiten - da kleines missgeschick im script :-)

                                          @HeinrichB tuya test wäre gut

                                          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

                                          crunchipC ? 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          400

                                          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