Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Sonoff Geräte als HTML Tabelle - Vis

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      klaus88 last edited by

      @liv-in-sky Passt mache ich - brauch aber noch ein bisschen - bin nicht grad der Profi in Sachen Javascript 🙂 Danke für den Tipp mit dem Batteriescript!

      1 Reply Last reply Reply Quote 0
      • K
        klaus88 last edited by

        @liv-in-sky : Ist doch schneller gegangen als geglaubt ! Anbei mein Versuch einer HMIP Tabelle - wobei 90% davon von dir stammt und ich nur kleine Änderungen gemacht habe. Aber Achtung ich habe keine CCU3 nur den HMIP AccessPoint!

        /* -----------------------------------
        homematicip_uebersicht.js
        Veröffentlichungsdatum: 29.11.2020
        Quelle: sonoff-geräte-als-html-tabelle von liv-in-sky
        https://forum.iobroker.net/topic/28953/sonoff-ger%C3%A4te-als-html-tabelle-vis-iqontrol/374
        
        Danksagung: An liv-in-sky für die Programmierung der Tabelle!
        
        Config:
        Die Datenpunkte werden automatisch erzeugt - man kann sie nach eigenen Wünschen 
        benennen bzw. zuordnen unter Name[x] bzw. alle folgenden Arrays.
        
        WICHTIG!:
        HMIP reagiert nicht so schnell wie z.B. SonOff.
        Hier dauert eine Änderung sehr lange bis sie sich im iobroker niederschlägt 
        z.B. der Wechsel der Anzeige einer schaltbare Steckdose auf ON bzw. Wechsel auf OFF.
        Auch die Anzeige ob ein Device noch online ist, funktioniert fast nicht, aber dies 
        ist ähnlich wie am App.
        
        Änderungen:
        
        ------------------------------------*/
        
        // States anlegen, falls sie nicht vorhanden sind
        // HMIPTabelle
        var Beschreibung = new Array();
        var Name = new Array();
        var Art = new Array();
        var Def = new Array();
        Beschreibung[0]="0_userdata.0.HMIP.HMIP_HTML_Tabelle";
        Name[0]="HMIP HTML Tabelle"
        Art[0]="string";
        Def[0]="";
        Beschreibung[1]="0_userdata.0.HMIP.AnzahlHMIP";
        Name[1]="Anzahl HMIP"
        Art[1]="number";
        Def[1]=0;
        for (var x=0; x < Beschreibung.length; x++) { 
        	if (!existsState(Beschreibung[x])) {
        		createState(Beschreibung[x], {type: Art[x], name: Name[x], read: true, write: true, def: Def[x]});
        	}
        }
        
        //@liv-in-sky Januar 2020 Ver 12.2.02-19:22
         
        //HIER WIRD PFAD UND FILENAME DEFINIERT
        const path = "/htmlsonoff.html";                   //FIlenamen definieren
        const home ='vis.0'                                 //wo soll das file im iobroker-file-system liegen ? (oder z.b auch iqontrol.meta)
        let   braucheEinFile=false;                          // bei true wird ein file geschrieben
        let   braucheEinVISWidget=true;                     // bei true wird ein html-tabelle in einen dp geschrieben - siehe nächste zeile
        let dpVIS="0_userdata.0.HMIP.HMIP_HTML_Tabelle"         //WICHTIG wenn braucheEinVISWidget auf true gesetzt !!  dp zusätzlich für VIS-HTML-Basic-Widget
        let dpAnzahl="0_userdata.0.HMIP.AnzahlHMIP";  //WICHTIG datenpunkt erstellen vom typ "number" - bei 0 kein alarm und größer 0 die anzahl der schlechten batterien
        let htmlColorDeviceUeberschrift="#e5e944"            //  Farbe der Geräte Marken 
        let HTMLbrandSetting="b"                              // style der geräte marken:  möglich b fett; i kursiv; span normal
        let triggerBySonoffPower=false;
         
         
        // ------------------------    hier einstellen, was man für ein device  hat - die nicht gebraucht werden auf false setzen !!!
        
        var tuerkontakt=true;
        var wandthermostat=true;
        var heizkoerperthermostat=true;
        var steckdose=true;
        var wassermelder=true;
        var rauchmelder=true;
        var rolladen=true;
        var taster=true;
        
        
        const mitSchalter=true;           // für freigabe von schaltern für POWER
        const mitYesterday=true;          // Für anzeige der yestersay werte bei energie-aufzeichnenden geräten (poe, blitzwolf, teckin, ..)
        const mitLink=true;               // link zum sonoff-web-interface
        const farbeNichtConnected="lightblue";
        const styleNichtErreichbar="i";             // möglich i=schräg, b ist fett und span ist normal - nur eines  davon !!!
        const farbeSchalterON="#e5e944"               // farbe des schalters für ON #e5e944, lightblue
        const farbeSchalterOFF="grey"               // farbe des schalters für OFF
         
         
        var symbolOK="⚪";  // auch möglich: ="✅ ⚪ "}      
        var symbolKO="⭕";     //z.b. auch "<font color=\"red\"><b>X</b>" für ein rotes kreuz ❌"  ⚪  ⚫ ⭕  🔴 🔵 ⏱ 💀 👍 👎 📑 💲 👀
        var symbolWARN="⚠️";    // ="⚠️"
        var symbolSwitch="🔄"
        var symbolLink="🌎";
        var battok="✅";
        var battnok="<font color=\"red\"><b>X</b>";
         
         
         
        let mySchedule=" * * * * * "; 
         
        //HIER DIE SPALTEN ANZAHL DEFINIEREN - jede Spalte einen Wert - in diesem Beispiel sind es 5
        var htmlFeld1='Device';       var Feld1lAlign="left";                     // überschrift Tabellen Spalte1 und  Ausrichtung left,right or center
        var htmlFeld2='Status';        var Feld2lAlign="center";                      // überschrift Tabellen Spalte2 und  Ausrichtung left,right or center
        var htmlFeld3='Firmware';         var Feld3lAlign="center";                    // überschrift Tabellen Spalte3 und  Ausrichtung left,right or center
        var htmlFeld4='WLAN';        var Feld4lAlign="right";                    // überschrift Tabellen Spalte4 und  Ausrichtung left,right or center
        var htmlFeld5='Model';        var Feld5lAlign="left";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld6='Batterie';        var Feld6lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld7='';        var Feld7lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld8='';        var Feld8lAlign="center";                    // überschrift Tabellen Spalte5 und  Ausrichtung left,right or center
        var htmlFeld9='Firmware';        	var Feld9lAlign="center";  
        //-----------------------------------
         
         
         
        //hier werden die styles für die tabelle definiert
        //ÜBERSCHRIFT ÜBER TABELLE
        let   htmlUberschrift=true;                           // mit Überschrift über der tabelle
        let   htmlSignature=false;                              // anstatt der Überscghrift eine signature: - kleiner - anliegend
        const htmlFeldUeber='HMIP Geräte Übersicht';              // Überschrift und Signature
        const htmlFarbUber="white";                         // Farbe der Überschrift
        const htmlSchriftWeite="bold";                       // bold, normal - Fettschrift für Überschrift
        const htmlÜberFontGroesse="14px";                       // schriftgröße überschrift
        
        //MEHRERE TABELLEN NEBENEINANDER
        let   mehrfachTabelle=1;                              // bis zu 4 Tabellen werden nebeneinander geschrieben-  verkürzt das Ganze, dafür etwas breiter - MÖGLICH 1,2,3,oder 4 !!!
        const trennungsLinie="2";                             //extra trennungslinie bei mehrfachtabellen - evtl auf 0 stellen, wnn htmlRahmenLinien auf none sind
        const farbetrennungsLinie="white";
        const htmlFarbZweiteTabelle="white";                // Farbe der Überschrift bei jeder 2.ten Tabelle
        const htmlFarbTableColorUber="white";               // Überschrift in der tabelle - der einzelnen Spalten lightblue
        
        //ÜBERSCHRIFT SPALTEN
        const UeberSchriftHöhe="35";                          //Überschrift bekommt mehr Raum - darunter und darüber - Zellenhöhe
        const LinieUnterUeberschrift="2";                   // Linie nur unter Spaltenüberschrift - 
        const farbeLinieUnterUeberschrift="white";          //lightblue
        const groesseUeberschrift=16;
        const UeberschriftStyle="bold"                     // möglich "bold", normal
        
        //GANZE TABELLE
        let abstandZelle="1";
        //let farbeUngeradeZeilen="#000000";                     //Farbe für ungerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2
        //let farbeGeradeZeilen="#151515";                        //Farbe für gerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2
        let farbeUngeradeZeilen="#424242";                     //Farbe für ungerade Zeilenanzahl - Hintergrund der Spaltenüberschrift bleibt bei htmlFarbTableColorGradient1/2
        let farbeGeradeZeilen="#383838";  
        let weite="95%";                                     //Weite der Tabelle auto
        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="Trebuchet MS";
        const htmlSchriftgroesse="16px";
        
        //FELDER UND RAHMEN
        let   UeberschriftSpalten=true;                // ein- oder ausblenden der spatlen-überschriften
        const htmlFarbFelderschrift="#ffffff";                  // SchriftFarbe der Felder
        const htmlFarbFelderschrift2="#BDBDBD";                 // SchriftFarbe der Felder für jede 2te Tabelle
        const htmlFarbTableColorGradient1="#424242";          //  Gradient - Hintergrund der Tabelle - Verlauffarbe
        const htmlFarbTableColorGradient2="#424242";          //  Gradient - Hintergrund der Tabelle - ist dieser Wert gleich Gradient1 gibt es keinen verlauf
        const htmlFarbTableBorderColor="grey";             // Farbe des Rahmen - is tdieser gleich den gradienten, sind die rahmen unsichtbar
        let htmlRahmenLinien="cols";                            // Format für Rahmen: MÖGLICH: "none" oder "all" oder "cols" oder "rows"
        const htmlSpalte1Weite="auto";                   //  Weite der ersten beiden  Spalten oder z.b. 115px
         
        // HIER NICHTS  ÄNDERN
         
        let borderHelpBottum;
        let borderHelpRight;
        let htmlcenterHelp;
        let htmlcenterHelp2;
         
        if(htmlRahmenLinien=="rows") {borderHelpBottum=1;borderHelpRight=0;}
        if(htmlRahmenLinien=="cols") {borderHelpBottum=0;borderHelpRight=1;}
        if(htmlRahmenLinien=="none") {borderHelpBottum=0;borderHelpRight=0;}
        if(htmlRahmenLinien=="all")  {borderHelpBottum=1;borderHelpRight=1;}
        zentriert ? htmlcenterHelp="auto" : htmlcenterHelp="left";
        zentriert ? htmlcenterHelp2="center" : htmlcenterHelp2="left";
         
         
        const htmlZentriert='<center>'
        const htmlStart=    "<!DOCTYPE html><html lang=\"de\"><head><title>Vorlage</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">"+
                         "<style> * {  margin: 0;} body {background-color: "+backgroundAll+"; margin: 0 auto;  }"+
                         " p {padding-top: 10px; padding-bottom: 10px; text-align: "+htmlcenterHelp2+"}"+
                        // " div { margin: 0 auto;  margin-left: auto; margin-right: auto;}"+
                         " td { padding:"+abstandZelle+"px; border:0px solid "+htmlFarbTableBorderColor+";  border-right:"+borderHelpRight+"px solid "+htmlFarbTableBorderColor+";border-bottom:"+borderHelpBottum+"px solid "+htmlFarbTableBorderColor+";}"+ 
                         " table { width: "+weite+";  margin: 0 "+htmlcenterHelp+"; border:1px solid "+htmlFarbTableBorderColor+"; border-spacing=\""+abstandZelle+"0px\" ; }"+   // margin macht center
                         "td:nth-child(1) {width: "+htmlSpalte1Weite+"}"+"td:nth-child(2) {width:"+htmlSpalte1Weite+"}"+
                         " </style></head><body> <div>";
                          
        const 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 height=\""+UeberSchriftHöhe+"\" style=\"color:"+htmlFarbTableColorUber+"; font-size: "+groesseUeberschrift+"px; font-weight: "+UeberschriftStyle+" ;  border-bottom: "+LinieUnterUeberschrift+"px solid "+farbeLinieUnterUeberschrift+" \">";
        const htmlTabUeber3="</tr>";
         
         
        const buttonScript =  '<script> function setOnDblClickCustom( myvalue ) {	var Self = this; var objID = myvalue;	Self.servConn.getStates(objID, (error, states) => {  console.log(states);  Self.servConn.setState(objID, !states[objID].val); }); } </script>'
         
         
        var htmlTabUeber2="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+">&ensp;"+htmlFeld2+"&ensp;</td><td  align="+Feld3lAlign+">&ensp;"+htmlFeld3+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+htmlFeld4+"&ensp;</td><td  align="+Feld5lAlign+">&ensp;"+htmlFeld5+"&ensp;</td><td  align="+Feld6lAlign+">&ensp;"+htmlFeld6+"&ensp;</td><td  align="+Feld7lAlign+">&ensp;"+htmlFeld7+"&ensp;</td><td  align="+Feld8lAlign+">&ensp;"+htmlFeld8+"&ensp;</td><td  align="+Feld9lAlign+">&ensp;"+htmlFeld9+"&ensp;</td>";
        var htmlTabUeber2_1="<td width="+htmlSpalte1Weite+" align="+Feld1lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld1+"&ensp;</td><td width="+htmlSpalte1Weite+" align="+Feld2lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+
                           "&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld3+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld4+
                           "&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld5+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld6+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld7+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld8+"&ensp;</td><td align="+Feld9lAlign+" style=\"color:"+htmlFarbZweiteTabelle+"\">&ensp;"+htmlFeld9+"&ensp;</td>";
                               //------------------------------------------------------
        let triggerBySonoffSwitch=false;
        var anzahl;
        var AkkuAlarm=[];
        var htmlOut="";
        var mix;
        var counter;
        var arrTrigger=[];
        var val1; var val2; var val0; var val3; var val4; var val5; var val6; var val7; var val8; var val9;
        var htmlTabUeber="";
        if (mitSchalter) triggerByHMIPPower=true;
        
        
        function writeHTML(){
        	anzahl=0;
        	htmlOut="";
        	counter=-1;
        	htmlTabUeber="";
        	switch (mehrfachTabelle) {
        		case 1: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber3;  break;
        		case 2: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
        		case 3: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2+htmlTabUeber2+htmlTabUeber3; break;
        		case 4: htmlTabUeber=htmlTabUeber1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber2+htmlTabUeber2_1+htmlTabUeber3; break;
        	}; 
        	if (!UeberschriftSpalten) {htmlTabUeber=""}
        	if (triggerByHMIPPower) {
        		$('hmip.devices.*.channels.1.on').each(function(id, i) {           // trigger für power datenpunkte  !!!
        			arrTrigger.push(id) });}
        	if (triggerBySonoffSwitch) {      
        		$('sonoff.*.*.Switch*').each(function(id, i) {           // trigger für power datenpunkte  !!!
        			arrTrigger.push(id) });}
        	var myColl=[];
        	var val1help;
        	var tempArr=[];var humArr=[];var illArr=[];var sw1Arr=[];var sw2Arr=[];var irArr=[];;var powArr=[];var disArr=[];
        	$('hmip.*.*.*').each(function(id, i) {   var ida = id.split('.'); if(ida[3].indexOf("_Temperature")>-1) tempArr.push(id);
                                                                             if(ida[3].indexOf("_Humidity")>-1)  humArr.push(id); 
                                                                             if(ida[3].indexOf("_Illuminance")>-1) illArr.push(id);
                                                                             if(ida[3].indexOf("POWER1")>-1) sw1Arr.push(id);
                                                                             if(ida[3].indexOf("POWER2")>-1) sw2Arr.push(id);
                                                                             if(ida[3].indexOf("_Distance")>-1) disArr.push(id);
                                                                             if(ida[3].indexOf("IrReceived_Data")>-1) irArr.push(id);
                                                                             if(ida[3].match(/POWER$/)!=null) powArr.push(id);
                                                                            
             });
         
          
        	 if (tuerkontakt){
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7=""; val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Fenster/Türkontakt</b>";} else{val0=""; }
        				val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        				if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">Sabotage";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        					val7="<font color=\""+htmlColorDeviceUeberschrift+"\">Status";
        					 counter++;tabelleBind();
        				 } 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {           
        			if (getState(id).val=="SHUTTER_CONTACT_CHANNEL") {
        				anzahl++;
        				var ida = id.split('.');
        				counter++; 
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				val7=getState(id.replace("functionalChannelType","windowState")).val; 
        				batterie(id);
        				val6=translateboolean(getState(id.replace("1.functionalChannelType","0.sabotage")).val);
        				firmware(id);
        				inaktiv(id);
        				tabelleBind();  
        			} 
        		});    
        	} //ende tuerkontakt
        
        
        	if (steckdose){
        		tabelleAusbessern()
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7=""; val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Steckdose</b>";} else{val0=""; }
        				val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        				if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">Verstärker";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        					val7="<font color=\""+htmlColorDeviceUeberschrift+"\">Power";
        					 counter++;tabelleBind();
        				 } 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {           
        			if (getState(id).val=="SWITCH_CHANNEL") {
        				anzahl++;
        				var ida = id.split('.');
        				counter++;
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				// val7 definition
        				ichWillSchalten(id);
        				val6=translateboolean(getState(id.replace("1.functionalChannelType","0.routerModuleEnabled")).val);
        				val5="";
        				firmware(id);
        				inaktiv(id);
        				tabelleBind();
        			}
        		});    
        	 } //end steckdose
        
        
        
        	if (wandthermostat){
        		tabelleAusbessern()
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Wandthermostat</b>";} else{val0=""; }
        			val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        			if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">Ist Humidity";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        			val7="<font color=\""+htmlColorDeviceUeberschrift+"\">Ist Temp";
        			//val8="<font color=\""+htmlColorDeviceUeberschrift+"\">Uptime";
        			counter++;tabelleBind();
        		} 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {
        			if (getState(id).val =="WALL_MOUNTED_THERMOSTAT_PRO_CHANNEL") {
        				anzahl++;
        				var ida = id.split('.');
        				counter++;
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				val7=getState(id.replace("functionalChannelType","actualTemperature")).val +" °C"; 
        				val6=getState(id.replace("functionalChannelType","humidity")).val +" %"; 
        				batterie(id);
        				firmware(id);
        				inaktiv(id);
        				tabelleBind(); 
        			} 
        		});    
        	} //ende wandthermostat
        
        	if (heizkoerperthermostat){
        		tabelleAusbessern()
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Heizkörperthermostat</b>";} else{val0=""; }
        			val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        			if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">Soll Temp";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        			val7="<font color=\""+htmlColorDeviceUeberschrift+"\">Ist Temp";
        			//val8="<font color=\""+htmlColorDeviceUeberschrift+"\">Uptime";
        			counter++;tabelleBind();
        		} 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {
        			if (getState(id).val =="HEATING_THERMOSTAT_CHANNEL") {
        				anzahl++;
        				var ida = id.split('.');
        				counter++;
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				val7=getState(id.replace("functionalChannelType","valveActualTemperature")).val +" °C"; 
        				val6=getState(id.replace("functionalChannelType","setPointTemperature")).val +" °C"; 
        				batterie(id);
        				firmware(id);
        				inaktiv(id);
        				tabelleBind(); 
        			} 
        		});    
        	} //ende heizkörperthermostat
        
        
        	if (rolladen){
        		tabelleAusbessern()
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Rolläden</b>";} else{val0=""; }
        			val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        			if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">fährt";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        			val7="<font color=\""+htmlColorDeviceUeberschrift+"\">geschlossen";
        			//val8="<font color=\""+htmlColorDeviceUeberschrift+"\">Uptime";
        			counter++;tabelleBind();
        		} 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {
        			if ((getState(id).val =="SHUTTER_CHANNEL") || (getState(id).val =="BLIND_CHANNEL")) {
        				anzahl++;
        				var ida = id.split('.');
        				counter++;
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				val7=(getState(id.replace("functionalChannelType","shutterLevel")).val *100) +" %"; 
        				//ichWillSchalten(id);
        				val6=translateboolean(getState(id.replace("functionalChannelType","processing")).val); 
        				val5="";
        				firmware(id);
        				inaktiv(id);
        				tabelleBind(); 
        			} 
        		});    
        	} //ende rolladen
        
        
        	if (wassermelder){
        		tabelleAusbessern()
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Wassermelder</b>";} else{val0=""; }
        			val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        			if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">Feucht. Alarm";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        			val7="<font color=\""+htmlColorDeviceUeberschrift+"\">Wasser Alarm";
        			//val8="<font color=\""+htmlColorDeviceUeberschrift+"\">Uptime";
        			counter++;tabelleBind();
        		} 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {
        			if (getState(id).val =="WATER_SENSOR_CHANNEL") {
        				anzahl++;
        				var ida = id.split('.');
        				counter++;
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				val7=translateboolean(getState(id.replace("functionalChannelType","waterlevelDetected")).val); 
        				val6=translateboolean(getState(id.replace("functionalChannelType","moistureDetected")).val); 
        				batterie(id);
        				firmware(id);
        				inaktiv(id);
        				tabelleBind(); 
        			} 
        		});    
        	} //ende wassermelder
        
        
        	if (rauchmelder){
        		tabelleAusbessern()
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Rauchmelder</b>";} else{val0=""; }
        			val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        			if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        			val7="<font color=\""+htmlColorDeviceUeberschrift+"\">Rauch Alarm";
        			//val8="<font color=\""+htmlColorDeviceUeberschrift+"\">Uptime";
        			counter++;tabelleBind();
        		} 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {
        			if (getState(id).val =="SMOKE_DETECTOR_CHANNEL") {
        				anzahl++;
        				var ida = id.split('.');
        				counter++;
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				val7=getState(id.replace("functionalChannelType","smokeDetectorAlarmType")).val; 
        				val6=""; 
        				batterie(id);
        				firmware(id);
        				inaktiv(id);
        				tabelleBind(); 
        			} 
        		});    
        	} //ende rauchmelder
        
        	if (taster){
        		tabelleAusbessern()
        		counter=-1;
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			val0=""; val1=""; val2="";val3="";val4="";val5="";val6="";val7="";val8="";counter++;tabelleBind();
        		}
        		for(var i=0;i<mehrfachTabelle;i++ ) {
        			if(i==0){val0="<font color=\""+htmlColorDeviceUeberschrift+"\"><"+HTMLbrandSetting+">HMIP Taster</b>";} else{val0=""; }
        			val1=""; val2="";val3="";val4="";val5="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        			if (mitYesterday) {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">";} else {val6="<font color=\""+htmlColorDeviceUeberschrift+"\">kWh Heute";}
        			val7="<font color=\""+htmlColorDeviceUeberschrift+"\">";
        			//val8="<font color=\""+htmlColorDeviceUeberschrift+"\">Uptime";
        			counter++;tabelleBind();
        		} 
        		$('hmip.0.devices.*.channels.1.functionalChannelType').each(function(id, i) {
        			if (getState(id).val =="SINGLE_KEY_CHANNEL") {
        				anzahl++;
        				var ida = id.split('.');
        				counter++;
        				val1=getState(id.replace("1.functionalChannelType","0.unreach")).val;                              
        				val0=getObject(ida[0]+"."+ida[1]+"."+ida[2]+"."+ida[3]).common.name;
        				val4=(getState(id.replace("channels.1.functionalChannelType","info.modelType")).val)
        				val2=getState(id.replace("channels.1.functionalChannelType","info.firmwareVersion")).val;      
        				val3=getState(id.replace("1.functionalChannelType","0.rssiDeviceValue")).val.toString()+""; 
        				val7=""; 
        				val6=""; 
        				batterie(id);
        				firmware(id);
        				inaktiv(id);
        				tabelleBind(); 
        			} 
        		});    
        	} //ende taster
        	//-------------------------------------------------------------------------------------------------------------------------------------------------
        	//--------------------------------------------------Ende der schleife------------------------------------------------------------------------------
        	//-------------------------------------------------------------------------------------------------------------------------------------------------
        	tabelleFinish(); 
        	setState(dpAnzahl,anzahl); 
        }
         
         
        //MAIN:
         
        schedule(mySchedule,  function () {
        	writeHTML();
        	if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
        }); 
         
        writeHTML();
         
        function tabelleBind(){
        	switch (mehrfachTabelle) {  
                 case 1:  if(counter%2==0){  htmlOut=htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td></tr>"; break;} else 
                                          {  htmlOut=htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td><td align="+Feld9lAlign+">&ensp;"+val8+"&ensp;</td></tr>"; break;}
         
                case 2:  if(counter%4==0) {
                          if(counter%2==0)            {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>"; } 
                                      else {htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val7+"&ensp;</td></tr>";} break;
                               }else{  
                          if(counter%2==0)            {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>"; } 
                                      else {htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val7+"&ensp;</td></tr>";} break;}
         
                case 3: if(counter%2==0 ) {
                           if(counter%3==0)           {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>"; } 
                                      else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>";} 
                                                       else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td></tr>";}
                                                 } break; }else{
                           if(counter%3==0)                {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>"; } 
                                      else { if(counter%3==1 )  { htmlOut = htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\">&ensp;"+val7+"&ensp;</td>";} 
                                                       else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td></tr>";}
                                                 } break;      }
                 case 4: if(counter%8==0)  {
                           if(counter%4==0)               {htmlOut = htmlOut+"<tr bgcolor=\""+farbeGeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>"; } 
                                          else {if(counter%4==1 )  { htmlOut = htmlOut+"<td  align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+" style=\border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\">&ensp;"+val7+"&ensp;</td>";} 
                                                       else    {if(counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\>&ensp;"+val7+"&ensp;</td></tr>";} 
                                                                         else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td>&ensp;"+val1+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>";}}
                                                 } break;  }else{
                           if(counter%4==0)               {htmlOut = htmlOut+"<tr bgcolor=\""+farbeUngeradeZeilen+"\"><td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld5lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\"align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>"; } 
                                          else {if(counter%4==1 )  { htmlOut = htmlOut+"<td  align="+Feld1lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td  align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+" style=\"border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"; color:"+htmlFarbFelderschrift2+"\">&ensp;"+val7+"&ensp;</td>";} 
                                                       else    {if(counter%4==3)  { htmlOut= htmlOut+"<td align="+Feld1lAlign+"  style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val0+"&ensp;</td><td  align="+Feld2lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val1+"&ensp;</td><td align="+Feld3lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val2+"&ensp;</td><td  align="+Feld4lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val3+"&ensp;</td><td align="+Feld5lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val6+"&ensp;</td><td align="+Feld8lAlign+" style=\"color:"+htmlFarbFelderschrift2+"\">&ensp;"+val7+"&ensp;</td></tr>";} 
                                                                         else    {htmlOut = htmlOut+"<td align="+Feld1lAlign+" >&ensp;"+val0+"&ensp;</td><td>&ensp;"+val1+"&ensp;</td><td align="+Feld2lAlign+">&ensp;"+val2+"&ensp;</td><td align="+Feld3lAlign+">&ensp;"+val3+"&ensp;</td><td align="+Feld4lAlign+">&ensp;"+val4+"&ensp;</td><td align="+Feld6lAlign+">&ensp;"+val5+"&ensp;</td><td align="+Feld7lAlign+">&ensp;"+val6+"&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+";\" align="+Feld8lAlign+">&ensp;"+val7+"&ensp;</td>";}}
                                                 } break;       }
         
             } //switch ende
        };
         
        function tabelleAusbessern() { 
              switch (mehrfachTabelle) {  
               case 1:    break;
               case 2:    
                         if(counter%2==0)  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></tr>');  
                         break;
               case 3:   if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                         if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');         
                         if(counter%3==0)  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 style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");
                         break;
               case 4:   if(counter%4==3)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                         if(counter%4==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');  
                         if(counter%4==1)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");    
                         if(counter%4==0)  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 style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><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: if(counter%2==0) { 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;
                case 3:	if(counter%3==2)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                        if(counter%3==1)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');         
                        if(counter%3==0)  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  style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");
        				break;
               case 4:  if(counter%4==3)  htmlOut = htmlOut.replace(/<\/td>$/, "</td></tr>");
                        if(counter%4==2)  htmlOut = htmlOut.replace(/<\/td>$/, '</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>');  
                        if(counter%4==1)  htmlOut = htmlOut.replace(/<\/td>$/, "</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td></tr>");    
                        if(counter%4==0)  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 style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td>&ensp;</td><td style=\" border-right: "+trennungsLinie+"px solid "+farbetrennungsLinie+"\">&ensp;</td><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")+"&ensp;&ensp;Anzahl: "+anzahl+"</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")+"&ensp;&ensp;Anzahl: "+anzahl+"</div>"
            if (!htmlSignature) htmlUnter="";
            var htmlOutVIS="";
            if (htmlUberschrift){
        			zentriert ? htmlOutVIS=htmlZentriert+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript : htmlOutVIS=htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+"</table>" + "bla bla"+htmlUnter + buttonScript;
                } else {
        			zentriert ?  htmlOutVIS=htmlZentriert+htmlTabStyle+htmlTabUeber+htmlOut+"</table>"+htmlUnter+ buttonScript :  htmlOutVIS=htmlTabStyle+htmlTabUeber+htmlOut+"</table>" + "blabla"+htmlUnter+ buttonScript ;
        		}
        	if (braucheEinVISWidget) setState(dpVIS, htmlOutVIS );
        	var htmlUnter= "<div  style=\"color:"+htmlFarbUber+"; font-family:"+htmlSchriftart+"; font-size: 80%;  text-align: center; \" >"+htmlFeldUeber+"&ensp;&ensp;Last Update: "+formatDate(getDateObject((parseFloat((new Date().getTime())))), "SS:mm:ss");+"</div>"
        	if (!htmlSignature) htmlUnter="";
        	var htmlEnd="</table>"+htmlUnter+"</div></body>";
        	htmlUberschrift ? htmlOut=htmlStart+htmlUeber+htmlTabStyle+htmlTabUeber+htmlOut+buttonScript+htmlEnd+buttonScript : htmlOut=htmlStart+htmlTabStyle+htmlTabUeber+htmlOut+buttonScript+htmlEnd+buttonScript;
        };
         
        on({id: arrTrigger, ack: false, change: "any"}, function (obj) { 
        	writeHTML();
            if (braucheEinFile) {writeFile(home, path ,htmlOut, function (error) { /* log('file written');*/  });}
        });
         
        function ichWillSchalten(id) {
        	let val7_1; val7_1=getState(id.replace("functionalChannelType","on")).val;
        	val7_1 ? val7=(" <font color=\""+farbeSchalterON+"\"> ")+"ON" : val7=(" <font color=\""+farbeSchalterOFF+"\"> ")+"OFF";
        	if (mitSchalter){
        		let valButton=id.replace("functionalChannelType","on")
        		val7_1 ? val7="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+valButton+"\')\">"+symbolSwitch + "</button> <font color=\""+farbeSchalterON+"\"> "+"ON&ensp;" :
                   val7="<button style\=\"border:none\; background-color\:transparent\; color\:white\; font\-size\:1em\; text\-align:left\" value=\"toggle\" onclick=\"setOnDblClickCustom\(\'"+valButton+"\')\">"+symbolSwitch+"</button> <font color=\""+farbeSchalterOFF+"\"> "+"OFF";
                   } else {val7_1 ? val7=(" <font color=\""+farbeSchalterON+"\"> ")+"ON" : val7=(" <font color=\""+farbeSchalterOFF+"\"> ")+"OFF";}
        }
        function inaktiv(id) {
        	if (getState(id.replace("1.functionalChannelType","0.unreach")).val) {   //farbeNichtConnected
        		val1=symbolKO;
                      val4=("<font color=\""+farbeNichtConnected+"\"><"+styleNichtErreichbar+">&ensp;&ensp; ")+val4;
                      val2=("<font color=\""+farbeNichtConnected+"\"><"+styleNichtErreichbar+">")+val2;
                      val3=("<font color=\""+farbeNichtConnected+"\"><"+styleNichtErreichbar+">")+" 0 %";
                      val5=("<font color=\""+farbeNichtConnected+"\">")+" --- ";
                      val6=("<font color=\""+farbeNichtConnected+"\">")+" --- ";
                      val7=("<font color=\""+farbeNichtConnected+"\">")+" --- ";
                      val0=("<font color=\""+farbeNichtConnected+"\"><"+styleNichtErreichbar+">")+val0} 
                  else{
                      val1=symbolOK;
                     }
        };
        function batterie(id){
        	val5_1=getState(id.replace("1.functionalChannelType","0.lowBat")).val;
        	if (val5_1 == false) {
        			val5=battok;
        	} else {
        			val5=battnok;
        	}
        	
        };
        
        function firmware(id) {
        	val8_1=getState(id.replace("channels.1.functionalChannelType","info.updateState")).val;
        	if (val8_1 == "UP_TO_DATE") {
        		val8=battok;
        	} else {
        	val8=battnok + " <font style\=\"font\-size\ : 8px\;\"><br>" + val8_1 + "</font>";
        	}
        };
        
        function translateboolean(strinput){
        	if (strinput) {
        		return "Ja";
        	} else {
        		return "Nein";
        	}
        };
         
        

        lg
        Klaus

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

          @klaus88 das war flott - da ich keine homematic habe , wäre ein bild der tabelle nett!

          wenn du das anderen zur verfügung stellen möchtest, würde ich dir empfehlen, einen eigenen thread zu öffnen - damit können homematic user das script besser finden und du könntest immer im ersten post neue updates fürs script posten

          K 1 Reply Last reply Reply Quote 1
          • K
            klaus88 @liv-in-sky last edited by

            @liv-in-sky Passt mach ich!

            1 Reply Last reply Reply Quote 1
            • K
              Kuddel @liv-in-sky last edited by

              @liv-in-sky welchen Sonoff-Wert verwendest du, um die Singalstärke (WLAN in %) anzuzueigen?

              Gaspode 1 Reply Last reply Reply Quote 0
              • Gaspode
                Gaspode @Kuddel last edited by

                @Kuddel
                Ich bin zwar nicht liv-in-sky, kann dir aber sagen, dass dafür "Wifi_RSSI" verwendet wird.

                K 1 Reply Last reply Reply Quote 0
                • K
                  Kuddel @Gaspode last edited by

                  @Alexi alles klar, danke

                  1 Reply Last reply Reply Quote 0
                  • L
                    luft-post last edited by

                    Hallo,
                    wäre es möglich auch den delock 11827 mit in die Auflistung zu nehmen?

                    Unbenannt.JPG

                    gruß
                    Matthias

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

                      @luft-post ist eignetlich wie ein sonoff pow

                      mach ich dir morgen - sollte kein thema sein

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

                        @liv-in-sky

                        teste doch mal das script im ersten post (mit 8 spalten) - im script mußt du auch delock auf true setzen.

                        L 1 Reply Last reply Reply Quote 0
                        • L
                          luft-post @liv-in-sky last edited by

                          @liv-in-sky Vielen Dank, werde ich testen und berichten 🙂

                          L 1 Reply Last reply Reply Quote 0
                          • L
                            luft-post @luft-post last edited by

                            @luft-post Funktioniert, vielen Dank 🙂

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

                              @liv-in-sky Hallo, bräuchte mal deine Hilfe bei Gosund SP111 v1.1.
                              Bekomme sie einfach nicht angezeigt. Script aus dem ersten Post. Sonoff und Script angehalten, Sonoff.0 Ordner gelöscht, neu eingelesen, Script neu gestartet, ohne Erfolg. Danke
                              sonoff.0.Gosund1.json

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

                                @dischro

                                was steht den in INFO.Module genau drin - bitte mit bild

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

                                  @dischro sind die mit energie anzeige ?

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

                                    @liv-in-sky gosund.png

                                    D liv-in-sky 2 Replies Last reply Reply Quote 0
                                    • D
                                      Dischro @Dischro last edited by

                                      @dischro ja sind mit Energieanzeige

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

                                        @dischro

                                        kann nicht funktionieren daher

                                        füge folgendes in zeile 282 ein:

                                        getState(id).val.includes("SP111 v1.1") ||
                                        

                                        Image 6.png

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

                                          @liv-in-sky said in Sonoff Geräte als HTML Tabelle - Vis - Iqontrol:

                                          getState(id).val.includes("SP111 v1.1") ||

                                          Herzlichen Dank

                                          Stephan Schleich 1 Reply Last reply Reply Quote 0
                                          • Stephan Schleich
                                            Stephan Schleich @Dischro last edited by Stephan Schleich

                                            @liv-in-sky Könnte man das Script auf die neue optimale Sonoff Baumstruktur anpassen?
                                            https://user-images.githubusercontent.com/1856906/105459690-f88a7d80-5c8a-11eb-8196-e226f1a59174.png

                                            liv-in-sky 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring template
                                            33
                                            629
                                            99986
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo