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. Script fürTabelle der Batterie Zustände

NEWS

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

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

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

Script fürTabelle der Batterie Zustände

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascriptmonitoringtemplate
1.4k Beiträge 67 Kommentatoren 490.2k Aufrufe 86 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

    hier die orginalseite mit den symbolen https://emojipedia.org/search/?q=cross - ich kopier die einfach ins script und setze es in anführungszeichen

    sorry- vielleicht bin auch ich konfus

    mit dem scriptteil versuche ich die werteliste auszulesen -
    wenn da 0 drin steht soll die tabelle "normal" anzeigen
    wenn da 1 drin steht soll die tabelle "unknown" anzeigen usw...

    oder verstehe ich da was falsch - ich verstehe gerade nicht, warum deine änderung ein andrs ergebnis bringt - aber hauptsache es funktioniert - daher habe ich dich um dn JSON export gebeten, damit ich das selbst mal ansehen kann - ich habe nix mit homeatic
    https://forum.iobroker.net/post/355793

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

    @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

    oder verstehe ich da was falsch - ich verstehe gerade nicht, warum deine änderung ein andrs ergebnis bringt

    Wenn du den State OPERATING_VOLTAGE nimmst, zeigt die Tabelle Werte in V an, siehe https://forum.iobroker.net/topic/28789/script-mit-tabelle-der-batterie-zustände/69

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

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

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

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

      @Homoran

      hier die orginalseite mit den symbolen https://emojipedia.org/search/?q=cross - ich kopier die einfach ins script und setze es in anführungszeichen

      sorry- vielleicht bin auch ich konfus

      mit dem scriptteil versuche ich die werteliste auszulesen -
      wenn da 0 drin steht soll die tabelle "normal" anzeigen
      wenn da 1 drin steht soll die tabelle "unknown" anzeigen usw...

      oder verstehe ich da was falsch - ich verstehe gerade nicht, warum deine änderung ein andrs ergebnis bringt - aber hauptsache es funktioniert - daher habe ich dich um dn JSON export gebeten, damit ich das selbst mal ansehen kann - ich habe nix mit homeatic
      https://forum.iobroker.net/post/355793

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

      @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

      ich kopier die einfach ins script und setze es in anführungszeichen

      Dann liegt es wohl an meinem Browser (BiitBox - Chrome)
      crosses.png

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

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

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

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

        @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

        oder verstehe ich da was falsch - ich verstehe gerade nicht, warum deine änderung ein andrs ergebnis bringt

        Wenn du den State OPERATING_VOLTAGE nimmst, zeigt die Tabelle Werte in V an, siehe https://forum.iobroker.net/topic/28789/script-mit-tabelle-der-batterie-zustände/69

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

        @Homoran was hast du davon - kannst du anhand dieses wertes erkennen, wie gut die batterie ist - ist also ein interne umrechnung von homeatic, die anhand dieser spannung dann den low bat bestimmt - wenn das so ist, mußt du im script aber auch etwas einbauen, dass dir ausrechnet, wann du welche farbe bei welcher spannung in der tabelle haben willst

        verstehe ich das soweit richtig ?

        browser - da weiß ich jetzt nicht, was wir da machen können - evtl findest due eine andere seite, die dir das symol richtig anzeigt z.b.
        https://emojiterra.com/de/unendlichzeichen-unendlichkeit/

        abe rich denke die symbole sind normiert

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

        HomoranH 1 Antwort Letzte Antwort
        0
        • HomoranH Homoran

          @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

          ich kopier die einfach ins script und setze es in anführungszeichen

          Dann liegt es wohl an meinem Browser (BiitBox - Chrome)
          crosses.png

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

          @Homoran deshalb bin ich so confuesd - ich habe nicht mit der VOLTAGE sondern dem 'VOLTAGE STATU/S gedacht

          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

            @Homoran was hast du davon - kannst du anhand dieses wertes erkennen, wie gut die batterie ist - ist also ein interne umrechnung von homeatic, die anhand dieser spannung dann den low bat bestimmt - wenn das so ist, mußt du im script aber auch etwas einbauen, dass dir ausrechnet, wann du welche farbe bei welcher spannung in der tabelle haben willst

            verstehe ich das soweit richtig ?

            browser - da weiß ich jetzt nicht, was wir da machen können - evtl findest due eine andere seite, die dir das symol richtig anzeigt z.b.
            https://emojiterra.com/de/unendlichzeichen-unendlichkeit/

            abe rich denke die symbole sind normiert

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

            @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

            ist also ein interne umrechnung von homeatic, die anhand dieser spannung dann den low bat bestimmt

            ich denke das ist anders herum.
            Dieser Wert wird gemessen und man kann in solchen Geräten selber festlegen bei wieviel Volt ein LowBat Alarm gegeben wird.

            Dazu gibt es dann die LOWBAT und LOWBAT_ALARM Datenpunkte

            @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

            mußt du im script aber auch etwas einbauen, dass dir ausrechnet, wann du welche farbe bei welcher spannung in der tabelle haben willst

            ok - dann verstehe ich jetzt was der andere Teil des Skriptes macht.
            Wobei ich nicht weiß ob dieser OPERATING_VOLTAGE_STATUS dies erfüllt.
            Für mich klingt das eher nach gut/unbekannt/Überspannung

            Wobei ich gerade auf der Suche nach diesen Werten einen Sensor gefunden habe, der OPERATING_VOLTAGE_STATUS gar nicht besitzt :-(

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

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

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

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

              @Homoran

              hier die orginalseite mit den symbolen https://emojipedia.org/search/?q=cross - ich kopier die einfach ins script und setze es in anführungszeichen

              sorry- vielleicht bin auch ich konfus

              mit dem scriptteil versuche ich die werteliste auszulesen -
              wenn da 0 drin steht soll die tabelle "normal" anzeigen
              wenn da 1 drin steht soll die tabelle "unknown" anzeigen usw...

              oder verstehe ich da was falsch - ich verstehe gerade nicht, warum deine änderung ein andrs ergebnis bringt - aber hauptsache es funktioniert - daher habe ich dich um dn JSON export gebeten, damit ich das selbst mal ansehen kann - ich habe nix mit homeatic
              https://forum.iobroker.net/post/355793

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

              @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

              ich habe nix mit homeatic

              Ich hoffe ich kann dir da etwas helfen:

              HomeMatic (klassisch)
              Hier gibt es einen Datenpunkt LOWBAT vom Typ Bool.
              Die Umschaltung erfolgt hardcodiert bei einer nicht ersichtlichen Spannung. Bei einigen Geräten scheint dies noch aus der Zeit der Zink-Kohle-Batterien zu stammen, da es bei einer Entladekurve von heutigen Alkali-Mangan Batterien bei einigen Geräten nie zum Auslösen dieses Datenpunktes kommt und das Gerät auf einmal "weg" ist.

              Homematic IP
              Hier wurde jetzt der Datenpunkt OPERATING_VOLTAGE eingeführt, der die Spannung der Batterien in Volt anzeigt.
              In der Konfiguration der Geräte ist eine Spannung als LowBat-Schwelle per default vorgegeben, die vom User geändert werden kann.
              Wird diese unterschritten kommen die Bool-Datenpunkte LOWBAT und LOWBAT_ALARM zum einstaz und schalten auf true

              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

                @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                ist also ein interne umrechnung von homeatic, die anhand dieser spannung dann den low bat bestimmt

                ich denke das ist anders herum.
                Dieser Wert wird gemessen und man kann in solchen Geräten selber festlegen bei wieviel Volt ein LowBat Alarm gegeben wird.

                Dazu gibt es dann die LOWBAT und LOWBAT_ALARM Datenpunkte

                @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                mußt du im script aber auch etwas einbauen, dass dir ausrechnet, wann du welche farbe bei welcher spannung in der tabelle haben willst

                ok - dann verstehe ich jetzt was der andere Teil des Skriptes macht.
                Wobei ich nicht weiß ob dieser OPERATING_VOLTAGE_STATUS dies erfüllt.
                Für mich klingt das eher nach gut/unbekannt/Überspannung

                Wobei ich gerade auf der Suche nach diesen Werten einen Sensor gefunden habe, der OPERATING_VOLTAGE_STATUS gar nicht besitzt :-(

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

                @Homoran ok - alles klar

                ich wollte eh nur eine oberfläche anbieten, die das darstellt (tabelle) - da müßt ihr homeatic user euch überlegen, was die besten werte sind - wenn der status wert nicht bei allen da ist, sollte das sript doch auf voltage umsteigen

                wenn du für voltage noch eine scipthilfe benötigst, bitte einfach sagen - (farben für bestimmte spannungsbreiche oder so)

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

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

                  @Homoran ok - alles klar

                  ich wollte eh nur eine oberfläche anbieten, die das darstellt (tabelle) - da müßt ihr homeatic user euch überlegen, was die besten werte sind - wenn der status wert nicht bei allen da ist, sollte das sript doch auf voltage umsteigen

                  wenn du für voltage noch eine scipthilfe benötigst, bitte einfach sagen - (farben für bestimmte spannungsbreiche oder so)

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

                  @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                  bitte einfach sagen

                  einfach! ;-)

                  Komme gleich darauf zurück - habe schon die nächste Baustelle.
                  Das Skript hat das Zeug zum Adapter - Batteriezustände sind einfach zu wichtig.

                  Und jetzt wurmt es mich schon wieder, dass ich js nicht kann :cry:

                  Batterien_03.png

                  Bekomme wahrscheinlich den Split bei IKEA nicht hin:

                  //HIER WIRD PFAD UND FILENAME DEFINIERT
                  const path = "/htmlakku.html";                   //FIlenamen definieren
                  const home ='vis.0'                                 //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
                  let   braucheEinFile=true;                          // bei true wird ein file geschrieben
                  let   braucheEinVISWidget=false;                     // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
                  let dpVIS="vis.0.Batterien"         //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget
                  var battAlarm=30;
                  var battAlarmWarning=50;
                  let mySchedule="  * * * * * ";                       //jede stunde  
                  //---------------------------------------
                  
                  //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 3
                  var htmlFeld1='Device';      var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
                  var htmlFeld2='Voltage';        var Feld2lAlign="center";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
                  var htmlFeld3='Status';         var Feld3lAlign="center";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
                  //-----------------------------------
                  
                  
                  //hier werden die styles für die tabelle definiert
                  //ÜBERSCHRIFT ÜBER TABELLE
                  let   htmlUberschrift=false;                           // mit Überschrift über der tabelle
                  let   htmlSignature=true;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
                  const htmlFeldUeber='Batterie Zustand Sensoren';              // Ü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=4;                              // 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="black";               // Ü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="12px";
                  //FELDER UND RAHMEN
                  let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
                  const htmlFarbFelderschrift="#000000";                  // SchriftFarbe der Felder
                  const htmlFarbFelderschrift2="#000000";                 // SchriftFarbe der Felder für jede 2te Tabelle
                  const htmlFarbTableColorGradient1="grey";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
                  const htmlFarbTableColorGradient2="white";          //  Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
                  const htmlFarbTableBorderColor="blue";             // Farbe des Rahmen - is tdieser gleich den gradienten, sind die rahmen unsichtbar
                  let htmlRahmenLinien="rows";                            // 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>";
                  /*
                  table td:first-child {}  //1
                  table td:nth-child(2) {} //2
                  table td:nth-child(3) {} //3
                  table td:last-child {}   //4
                  */
                  
                  //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 3
                  
                    	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>";
                  var htmlTabUeber2_1="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+"  align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld2+
                                    "&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+"&ensp;</td>";
                  //------------------------------------------------------
                  
                  
                  var htmlTabUeber="";
                  var htmlOut="";
                  var mix;
                  var counter;
                  //HIER SIND DIE  WERTE, DIE IN DER SCHLEIFE GEFILTERET WER%DEN - Jede spalte einen wert - jeder valx muss in dieser schleife gesetzt werden !!
                  var val1; var val0; var val2;
                  
                  function writeHTML(){
                  
                  
                  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_1+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 !!!---------------------------------------------------------------------
                  //--------------------------------------------------------------------------------------------------------------------------------------------------
                  var myColl=[];
                  var val1help;
                  
                       // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                       counter=0;
                       val0="<font color=\"blue\"><b>HUE Devices</b>"; val1=""; val2="";
                       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
                  
                  
                  $('hue-extended.0.*.battery').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                         var ida = id.split('.');
                        
                         
                           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                          
                          val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                            var ida = val0.split('.');
                            val0=ida[0];
                           val1help=getState(id).val;
                           val1help=parseFloat((getState(id).val));
                           if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                           if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           if (val1help<=battAlarm) {val2="✘"} else{val2="✔"}         
                           if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                  
                  
                  
                           //if (val1help) {val1=(" <font color=\"red\"> ")+"bat low"} else{val1=(" <font color=\"green\"> ")+"bat ok"} 
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                          // if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                         //  if (val1help) {val2="❌"} else{val2="✅"}         
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                          
                      
                    
                      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 !!!!!!!!!
                  
                    
                  
                         // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                       counter=0;
                       val0="<font color=\"blue\"><b>IKEA Tradfri</b>"; val1=""; val2="";
                       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
                  
                  $('tradfri.0.*.batteryPercentage').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                         var ida = id.split('.');
                        
                         
                           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                          
                          val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                            var ida = val0.split('.');
                            val0=ida[0];
                            //log(val0+"   "+id);
                           val1help=getState(id).val;
                           val1help=parseFloat((getState(id).val));
                           if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                           if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           if (val1help<=battAlarm) {val2="✘"} else{val2="✔"}         
                           if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                  
                  
                  
                           //if (val1help) {val1=(" <font color=\"red\"> ")+"bat low"} else{val1=(" <font color=\"green\"> ")+"bat ok"} 
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                          // if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                         //  if (val1help) {val2="❌"} else{val2="✅"}         
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                          
                      
                    
                      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 !!!!!!!!!
                  
                    // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                  //      counter=0;
                   //    val0="<font color=\"blue\"><b>IKEA Tradfri.1</b>"; val1=""; val2="";
                     //  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
                  
                  
                  $('tradfri.1.*.batteryPercentage').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                         var ida = id.split('.');
                        
                         
                           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                          
                          val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                            var ida = val0.split('.');
                            val0=ida[0];
                           val1help=getState(id).val;
                           val1help=parseFloat((getState(id).val));
                           if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                           if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           if (val1help<=battAlarm) {val2="✘"} else{val2="✔"}         
                           if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                  
                  
                  
                           //if (val1help) {val1=(" <font color=\"red\"> ")+"bat low"} else{val1=(" <font color=\"green\"> ")+"bat ok"} 
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                          // if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                         //  if (val1help) {val2="❌"} else{val2="✅"}         
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                          
                      
                    
                      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 !!!!!!!!!
                  
                                 // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                                tabelleAusbessern();
                                counter=0;
                                val0="<font color=\"blue\"><b>HOMEMATIC</b>"; val1=""; val2="";
                                tabelleBind(); 
                                tabelleAusbessern();
                                counter=-1;
                  
                  
                  
                  $('hm-rpc.0.*.0.LOWBAT').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                         //var ida = id.split('.');
                        
                           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                            val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                            var ida = val0.split('.');
                            val0=ida[0].replace(/:.+/g,"");
                            //log(val0+"   "+id);
                           val1help=getState(id).val;
                           if (val1help) {val1=(" <font color=\"red\"> ")+"low bat"} else{val1=(" <font color=\"green\"> ")+"full bat"} 
                        //   if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                         //  if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           if (val1help) {val2="✘"} else{val2="✔"}         
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                    
                    
                      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 !!!!!!!!!  
                      
                  
                             tabelleAusbessern();
                              // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                             counter=0;
                             val0="<font color=\"blue\"><b>HOMEMATIC IP</b>"; val1=""; val2="";
                             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
                   
                  
                  
                  $('hm-rpc.1.*.0.LOW_BAT').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                         //var ida = id.split('.');
                        
                           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                            val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                            var ida = val0.split('.');
                            val0=ida[0].replace(/:.+/g,"");
                          // log(val0+"   "+id);
                           val1help=getState(id).val;
                           val1=getState(id.replace("LOW_BAT","OPERATING_VOLTAGE")).val;
                           if (val1!="NORMAL") {val1=(" <font color=\"red\"> ")+val1} else{val1=(" <font color=\"green\"> ")+val1} 
                        //   if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                         //  if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           if (val1help) {val2="✘"} else{val2="✔"}         
                          // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                    
                    
                      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 !!!!!!!!!  
                      
                  
                             tabelleAusbessern();
                              // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                             counter=0;
                             val0="<font color=\"blue\"><b>HANDYs</b>"; val1=""; val2="";
                             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
                        
                       
                          $('controll-own.0.HANDY.*batt*').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                         var ida = id.split('.');
                         
                           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                           val0=ida[3];
                           log(val0+"   "+id);
                           val1help=parseFloat((getState(id).val));
                           if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                           if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           if (val1help<=battAlarm) {val2="❌"} else{val2="✅"}         
                           if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                      
                    
                      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 !!!!!!!!!  
                  
                              $('controll-own.0.HANDY.*Batt*').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                         var ida = id.split('.');
                         
                           counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                           val0=ida[3];
                           log(val0+"   "+id);
                           val1help=parseFloat((getState(id).val));
                           if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                           if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           if (val1help<=battAlarm) {val2="❌"} else{val2="✅"}         
                           if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                      
                    
                      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 der schleife------------------------------------------------------------------------------
                  //-------------------------------------------------------------------------------------------------------------------------------------------------
                  
                       tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
                      
                  } // function ende
                  
                  //MAIN:
                  
                  schedule(mySchedule,  function () { 
                  writeHTML();
                  if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
                  }); 
                  writeHTML();  
                  if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}                                 //     <tdalign
                  function tabelleBind(){
                        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></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>"; } 
                                                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></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>"; } 
                                                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>";} 
                                                                 else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&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>"; } 
                                                    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>";} 
                                                                 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></tr>";} 
                                                                                   else    {htmlOut = htmlOut = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&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></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></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></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></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></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></tr>');      
                                     break; }
                  }
                  
                  function tabelleFinish() {
                  
                  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></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></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></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></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></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></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 );
                            //console.log dpVIS;
                  
                  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);
                  
                  
                  }
                  
                  

                  Wenn man das Skript noch weiter aufbohrt (oder einen Adapter umsetzt) wäre es wahrscheinlich sinnvoller zu Beginn eine paar Variablen festzulegen, welche Adapter mit welchen States iteriert werden sollen.

                  EDIT
                  Sorry - vergessen!
                  Das log (Zeile 179) gibt folgendes aus

                  (4615) script.js.Batterien: Battery percentage tradfri.0.RC-65537.batteryPercentage
                  
                  

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

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

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

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

                    @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                    bitte einfach sagen

                    einfach! ;-)

                    Komme gleich darauf zurück - habe schon die nächste Baustelle.
                    Das Skript hat das Zeug zum Adapter - Batteriezustände sind einfach zu wichtig.

                    Und jetzt wurmt es mich schon wieder, dass ich js nicht kann :cry:

                    Batterien_03.png

                    Bekomme wahrscheinlich den Split bei IKEA nicht hin:

                    //HIER WIRD PFAD UND FILENAME DEFINIERT
                    const path = "/htmlakku.html";                   //FIlenamen definieren
                    const home ='vis.0'                                 //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
                    let   braucheEinFile=true;                          // bei true wird ein file geschrieben
                    let   braucheEinVISWidget=false;                     // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
                    let dpVIS="vis.0.Batterien"         //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget
                    var battAlarm=30;
                    var battAlarmWarning=50;
                    let mySchedule="  * * * * * ";                       //jede stunde  
                    //---------------------------------------
                    
                    //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 3
                    var htmlFeld1='Device';      var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
                    var htmlFeld2='Voltage';        var Feld2lAlign="center";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
                    var htmlFeld3='Status';         var Feld3lAlign="center";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
                    //-----------------------------------
                    
                    
                    //hier werden die styles für die tabelle definiert
                    //ÜBERSCHRIFT ÜBER TABELLE
                    let   htmlUberschrift=false;                           // mit Überschrift über der tabelle
                    let   htmlSignature=true;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
                    const htmlFeldUeber='Batterie Zustand Sensoren';              // Ü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=4;                              // 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="black";               // Ü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="12px";
                    //FELDER UND RAHMEN
                    let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
                    const htmlFarbFelderschrift="#000000";                  // SchriftFarbe der Felder
                    const htmlFarbFelderschrift2="#000000";                 // SchriftFarbe der Felder für jede 2te Tabelle
                    const htmlFarbTableColorGradient1="grey";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
                    const htmlFarbTableColorGradient2="white";          //  Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
                    const htmlFarbTableBorderColor="blue";             // Farbe des Rahmen - is tdieser gleich den gradienten, sind die rahmen unsichtbar
                    let htmlRahmenLinien="rows";                            // 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>";
                    /*
                    table td:first-child {}  //1
                    table td:nth-child(2) {} //2
                    table td:nth-child(3) {} //3
                    table td:last-child {}   //4
                    */
                    
                    //NICHTS ÄNDERN - abhängig von den oben definierten _Spalten - in diesem Beispiel sind es 3
                    
                      	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>";
                    var htmlTabUeber2_1="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+"  align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld2+
                                      "&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+"&ensp;</td>";
                    //------------------------------------------------------
                    
                    
                    var htmlTabUeber="";
                    var htmlOut="";
                    var mix;
                    var counter;
                    //HIER SIND DIE  WERTE, DIE IN DER SCHLEIFE GEFILTERET WER%DEN - Jede spalte einen wert - jeder valx muss in dieser schleife gesetzt werden !!
                    var val1; var val0; var val2;
                    
                    function writeHTML(){
                    
                    
                    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_1+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 !!!---------------------------------------------------------------------
                    //--------------------------------------------------------------------------------------------------------------------------------------------------
                    var myColl=[];
                    var val1help;
                    
                         // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                         counter=0;
                         val0="<font color=\"blue\"><b>HUE Devices</b>"; val1=""; val2="";
                         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
                    
                    
                    $('hue-extended.0.*.battery').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                           var ida = id.split('.');
                          
                           
                             counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                            
                            val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                              var ida = val0.split('.');
                              val0=ida[0];
                             val1help=getState(id).val;
                             val1help=parseFloat((getState(id).val));
                             if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                             if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                             if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                             if (val1help<=battAlarm) {val2="✘"} else{val2="✔"}         
                             if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                    
                    
                    
                             //if (val1help) {val1=(" <font color=\"red\"> ")+"bat low"} else{val1=(" <font color=\"green\"> ")+"bat ok"} 
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                            // if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           //  if (val1help) {val2="❌"} else{val2="✅"}         
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                            
                        
                      
                        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 !!!!!!!!!
                    
                      
                    
                           // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                         counter=0;
                         val0="<font color=\"blue\"><b>IKEA Tradfri</b>"; val1=""; val2="";
                         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
                    
                    $('tradfri.0.*.batteryPercentage').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                           var ida = id.split('.');
                          
                           
                             counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                            
                            val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                              var ida = val0.split('.');
                              val0=ida[0];
                              //log(val0+"   "+id);
                             val1help=getState(id).val;
                             val1help=parseFloat((getState(id).val));
                             if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                             if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                             if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                             if (val1help<=battAlarm) {val2="✘"} else{val2="✔"}         
                             if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                    
                    
                    
                             //if (val1help) {val1=(" <font color=\"red\"> ")+"bat low"} else{val1=(" <font color=\"green\"> ")+"bat ok"} 
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                            // if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           //  if (val1help) {val2="❌"} else{val2="✅"}         
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                            
                        
                      
                        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 !!!!!!!!!
                    
                      // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                    //      counter=0;
                     //    val0="<font color=\"blue\"><b>IKEA Tradfri.1</b>"; val1=""; val2="";
                       //  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
                    
                    
                    $('tradfri.1.*.batteryPercentage').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                           var ida = id.split('.');
                          
                           
                             counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                            
                            val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                              var ida = val0.split('.');
                              val0=ida[0];
                             val1help=getState(id).val;
                             val1help=parseFloat((getState(id).val));
                             if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                             if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                             if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                             if (val1help<=battAlarm) {val2="✘"} else{val2="✔"}         
                             if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                    
                    
                    
                             //if (val1help) {val1=(" <font color=\"red\"> ")+"bat low"} else{val1=(" <font color=\"green\"> ")+"bat ok"} 
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                            // if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                           //  if (val1help) {val2="❌"} else{val2="✅"}         
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                            
                        
                      
                        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 !!!!!!!!!
                    
                                   // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                                  tabelleAusbessern();
                                  counter=0;
                                  val0="<font color=\"blue\"><b>HOMEMATIC</b>"; val1=""; val2="";
                                  tabelleBind(); 
                                  tabelleAusbessern();
                                  counter=-1;
                    
                    
                    
                    $('hm-rpc.0.*.0.LOWBAT').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                           //var ida = id.split('.');
                          
                             counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                              val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                              var ida = val0.split('.');
                              val0=ida[0].replace(/:.+/g,"");
                              //log(val0+"   "+id);
                             val1help=getState(id).val;
                             if (val1help) {val1=(" <font color=\"red\"> ")+"low bat"} else{val1=(" <font color=\"green\"> ")+"full bat"} 
                          //   if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           //  if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                             if (val1help) {val2="✘"} else{val2="✔"}         
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                      
                      
                        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 !!!!!!!!!  
                        
                    
                               tabelleAusbessern();
                                // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                               counter=0;
                               val0="<font color=\"blue\"><b>HOMEMATIC IP</b>"; val1=""; val2="";
                               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
                     
                    
                    
                    $('hm-rpc.1.*.0.LOW_BAT').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                           //var ida = id.split('.');
                          
                             counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                              val0=getObject(id).common.name ; //ida[2]+"."+ida[3];
                              var ida = val0.split('.');
                              val0=ida[0].replace(/:.+/g,"");
                            // log(val0+"   "+id);
                             val1help=getState(id).val;
                             val1=getState(id.replace("LOW_BAT","OPERATING_VOLTAGE")).val;
                             if (val1!="NORMAL") {val1=(" <font color=\"red\"> ")+val1} else{val1=(" <font color=\"green\"> ")+val1} 
                          //   if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                           //  if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                             if (val1help) {val2="✘"} else{val2="✔"}         
                            // if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                      
                      
                        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 !!!!!!!!!  
                        
                    
                               tabelleAusbessern();
                                // UNTERTEILUNG - ÜBERSCHRIFT IN TABELLE
                               counter=0;
                               val0="<font color=\"blue\"><b>HANDYs</b>"; val1=""; val2="";
                               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
                          
                         
                            $('controll-own.0.HANDY.*batt*').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                           var ida = id.split('.');
                           
                             counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                             val0=ida[3];
                             log(val0+"   "+id);
                             val1help=parseFloat((getState(id).val));
                             if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                             if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                             if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                             if (val1help<=battAlarm) {val2="❌"} else{val2="✅"}         
                             if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                        
                      
                        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 !!!!!!!!!  
                    
                                $('controll-own.0.HANDY.*Batt*').each(function(id, i) {           // hier eigene schleife definieren und den wert counter++ nicht vergessen  !!!
                           var ida = id.split('.');
                           
                             counter++;                                       // SEHR WICHTIG - MUSS IN JEDER SCHLEIFE INTEGRIERT SEIN
                             val0=ida[3];
                             log(val0+"   "+id);
                             val1help=parseFloat((getState(id).val));
                             if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                             if (val1help<=battAlarm) {val1=(" <font color=\"red\"> ")+val1help.toString()} else{val1=(" <font color=\"green\"> ")+val1help.toString()} 
                             if (val1help>battAlarm && val1help<=battAlarmWarning) {val1=(" <font color=\"yellow\"> ")+val1help.toString()}
                             if (getState(id).val==null) {val2="never used"}; //log(id)}; 
                             if (val1help<=battAlarm) {val2="❌"} else{val2="✅"}         
                             if (val1help>battAlarm && val1help<=battAlarmWarning) val2="⚠️"
                        
                      
                        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 der schleife------------------------------------------------------------------------------
                    //-------------------------------------------------------------------------------------------------------------------------------------------------
                    
                         tabelleFinish(); // AB HIER NICHTS ÄNDERN - tabelle fertigstellen
                        
                    } // function ende
                    
                    //MAIN:
                    
                    schedule(mySchedule,  function () { 
                    writeHTML();
                    if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
                    }); 
                    writeHTML();  
                    if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}                                 //     <tdalign
                    function tabelleBind(){
                          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></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>"; } 
                                                  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></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>"; } 
                                                  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>";} 
                                                                   else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&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>"; } 
                                                      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>";} 
                                                                   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></tr>";} 
                                                                                     else    {htmlOut = htmlOut = htmlOut+"<td align="+Feld1lAlign+">&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&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></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></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></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></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></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></tr>');      
                                       break; }
                    }
                    
                    function tabelleFinish() {
                    
                    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></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></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></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></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></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></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 );
                              //console.log dpVIS;
                    
                    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);
                    
                    
                    }
                    
                    

                    Wenn man das Skript noch weiter aufbohrt (oder einen Adapter umsetzt) wäre es wahrscheinlich sinnvoller zu Beginn eine paar Variablen festzulegen, welche Adapter mit welchen States iteriert werden sollen.

                    EDIT
                    Sorry - vergessen!
                    Das log (Zeile 179) gibt folgendes aus

                    (4615) script.js.Batterien: Battery percentage tradfri.0.RC-65537.batteryPercentage
                    
                    
                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    schrieb am zuletzt editiert von
                    #92

                    @Homoran gib mir mal den raw auszug eines ikea batt wertes

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

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

                      @Homoran gib mir mal den raw auszug eines ikea batt wertes

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

                      @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                      @Homoran gib mir mal den raw auszug eines ikea batt wertes

                      Wenn's sonst nix ist:

                      {
                        "_id": "tradfri.1.RC-65549.batteryPercentage",
                        "type": "state",
                        "common": {
                          "def": 100,
                          "type": "number",
                          "read": true,
                          "write": false,
                          "min": 0,
                          "max": 100,
                          "name": "Battery percentage",
                          "role": "indicator.maintenance",
                          "unit": "%"
                        },
                        "native": {
                          "path": "deviceInfo.battery",
                          "onlyChanges": true
                        },
                        "from": "system.adapter.tradfri.1",
                        "user": "system.user.admin",
                        "ts": 1578761527219,
                        "acl": {
                          "object": 1638,
                          "state": 1638
                        }
                      }
                      

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

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

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

                      liv-in-skyL 2 Antworten Letzte Antwort
                      0
                      • HomoranH Homoran

                        @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                        @Homoran gib mir mal den raw auszug eines ikea batt wertes

                        Wenn's sonst nix ist:

                        {
                          "_id": "tradfri.1.RC-65549.batteryPercentage",
                          "type": "state",
                          "common": {
                            "def": 100,
                            "type": "number",
                            "read": true,
                            "write": false,
                            "min": 0,
                            "max": 100,
                            "name": "Battery percentage",
                            "role": "indicator.maintenance",
                            "unit": "%"
                          },
                          "native": {
                            "path": "deviceInfo.battery",
                            "onlyChanges": true
                          },
                          "from": "system.adapter.tradfri.1",
                          "user": "system.user.admin",
                          "ts": 1578761527219,
                          "acl": {
                            "object": 1638,
                            "state": 1638
                          }
                        }
                        
                        liv-in-skyL Offline
                        liv-in-skyL Offline
                        liv-in-sky
                        schrieb am zuletzt editiert von
                        #94

                        @Homoran der hat keinen "verarbeitungswürdigen namen" - da bleibt nur "RC-65537" - aber das wird auch nicht reichen - oder ist es dass, was du suchst

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

                        HomoranH 1 Antwort Letzte Antwort
                        0
                        • HomoranH Homoran

                          @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                          @Homoran gib mir mal den raw auszug eines ikea batt wertes

                          Wenn's sonst nix ist:

                          {
                            "_id": "tradfri.1.RC-65549.batteryPercentage",
                            "type": "state",
                            "common": {
                              "def": 100,
                              "type": "number",
                              "read": true,
                              "write": false,
                              "min": 0,
                              "max": 100,
                              "name": "Battery percentage",
                              "role": "indicator.maintenance",
                              "unit": "%"
                            },
                            "native": {
                              "path": "deviceInfo.battery",
                              "onlyChanges": true
                            },
                            "from": "system.adapter.tradfri.1",
                            "user": "system.user.admin",
                            "ts": 1578761527219,
                            "acl": {
                              "object": 1638,
                              "state": 1638
                            }
                          }
                          
                          liv-in-skyL Offline
                          liv-in-skyL Offline
                          liv-in-sky
                          schrieb am zuletzt editiert von
                          #95

                          @Homoran müßte der sein

                          Image 10.png

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

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

                            @Homoran der hat keinen "verarbeitungswürdigen namen" - da bleibt nur "RC-65537" - aber das wird auch nicht reichen - oder ist es dass, was du suchst

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

                            @liv-in-sky
                            Seltsam:

                            tradfri Namen.png

                            Da muss ich mal @AlCalzone an den Hammelbeinen packen.

                            Ich hatte versucht den common.name davon zu erhalten

                            @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                            da bleibt nur "RC-65537"

                            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

                              @Homoran müßte der sein

                              Image 10.png

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

                              @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                              müßte der sein

                              Dachte ich auch, aber da kommt undefined

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

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

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

                              liv-in-skyL 2 Antworten Letzte Antwort
                              0
                              • HomoranH Homoran

                                @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                                müßte der sein

                                Dachte ich auch, aber da kommt undefined

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

                                @Homoran ich denke

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

                                  @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                                  müßte der sein

                                  Dachte ich auch, aber da kommt undefined

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

                                  @Homoran zeile 176 auskommentieren - der name ist der stern in tradfri.0.*.batteryPercentage

                                  split ist:
                                  tradfri
                                  0
                                  *
                                  batteryPercentage

                                  daher ida[2]

                                  der split wird in zeile 171 schon gemacht

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

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

                                    @Homoran zeile 176 auskommentieren - der name ist der stern in tradfri.0.*.batteryPercentage

                                    split ist:
                                    tradfri
                                    0
                                    *
                                    batteryPercentage

                                    daher ida[2]

                                    der split wird in zeile 171 schon gemacht

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

                                    @liv-in-sky Ja!

                                    aber ich wollte den common Name vom device bekommen - kann den Teil vorher im Skript nicht ganz nachvollziehen und umwandeln, dass er den ausliest.

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

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

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

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

                                      @liv-in-sky Ja!

                                      aber ich wollte den common Name vom device bekommen - kann den Teil vorher im Skript nicht ganz nachvollziehen und umwandeln, dass er den ausliest.

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

                                      @Homoran aber der common name ist bei allen gleich - aus dem raw "name": "Battery percentage",

                                      der einzige unterschied ist wohl was sich hinter dem stern verbirgt - denke ich

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

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

                                        @Homoran aber der common name ist bei allen gleich - aus dem raw "name": "Battery percentage",

                                        der einzige unterschied ist wohl was sich hinter dem stern verbirgt - denke ich

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

                                        @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                                        was sich hinter dem stern verbirgt - denke ich

                                        Ja!
                                        liest das Skript beim Iterieren diesen Wert nicht aus, dass man davon den common.name auslesen kann

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

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

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

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

                                          @liv-in-sky sagte in Script mit Tabelle der Batterie Zustände:

                                          was sich hinter dem stern verbirgt - denke ich

                                          Ja!
                                          liest das Skript beim Iterieren diesen Wert nicht aus, dass man davon den common.name auslesen kann

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

                                          @Homoran doch - aber der common name ist percentage batterie - und das ist ja kein name, der in der tabelle weiterhilft

                                          wenn aber eine ebene höher noch irgendwo ein name steht - dann müssen wir uns den holen - mach doch mal einen JSON export der ikea instanz - und poste es -

                                          Image 11.png

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

                                          HomoranH 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          788

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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