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. Visualisierung
  4. Automatische Übersicht aller Sonoff Geräte

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    135

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Automatische Übersicht aller Sonoff Geräte

Geplant Angeheftet Gesperrt Verschoben Visualisierung
vishow-to
104 Beiträge 12 Kommentatoren 9.8k Aufrufe 22 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.
  • K Kuddel

    @maikdor

    3e16e638-0ad8-42a8-b105-2a358114555b-grafik.png

    Mit FW 11.0.0 habe ich keine Fehler im Log

    @arteck vielen Dank für den Hinweis

    M Offline
    M Offline
    MaikDor
    schrieb am zuletzt editiert von MaikDor
    #95

    @kuddel ich glaube den Fehler habe ich gefunden im Script bei mir mit der Warnung

    //Powerschalter für alle Geräte außer Sonoff 4CH Pro R2
    if(geraet != "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER"};
    if(geraet == "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER1"};

    So ein Sonoff 4CH Pro habe ich nicht. Und in der Zeile kommt auch meine Warnung. Kann ich die dann einfach löschen?

    Habe nun alle aktive auf 11 gebracht und der Fehler ist immer noch bei mir

    K 1 Antwort Letzte Antwort
    0
    • M MaikDor

      @kuddel ich glaube den Fehler habe ich gefunden im Script bei mir mit der Warnung

      //Powerschalter für alle Geräte außer Sonoff 4CH Pro R2
      if(geraet != "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER"};
      if(geraet == "Sonoff 4CH Pro"){var powerschalter = "sonoff.0." + devicenameName + ".POWER1"};

      So ein Sonoff 4CH Pro habe ich nicht. Und in der Zeile kommt auch meine Warnung. Kann ich die dann einfach löschen?

      Habe nun alle aktive auf 11 gebracht und der Fehler ist immer noch bei mir

      K Offline
      K Offline
      Kuddel
      schrieb am zuletzt editiert von
      #96

      @maikdor kannst du zum Test ja einfach mal rausnehmen

      M 1 Antwort Letzte Antwort
      0
      • K Kuddel

        @maikdor kannst du zum Test ja einfach mal rausnehmen

        M Offline
        M Offline
        MaikDor
        schrieb am zuletzt editiert von
        #97

        @kuddel
        So habe es nun so gemacht und es geht nun kommt kein warning mehr.
        Screenshot 2022-03-03 092314.png

        aber musste dann den type in power von "string" auf "Boolean" stellen.
        Screenshot 2022-03-03 092434.png

        K AphofisA 2 Antworten Letzte Antwort
        0
        • M MaikDor

          @kuddel
          So habe es nun so gemacht und es geht nun kommt kein warning mehr.
          Screenshot 2022-03-03 092314.png

          aber musste dann den type in power von "string" auf "Boolean" stellen.
          Screenshot 2022-03-03 092434.png

          K Offline
          K Offline
          Kuddel
          schrieb am zuletzt editiert von
          #98

          @maikdor ja stimmt.

          so wie ich das sehe, habe ich alle DPs als Strings definiert.

          Wenn der Aktor nicht verbunden ist, kann ich die Strings so besser leeren mit dem Inhalt ""

          M 2 Antworten Letzte Antwort
          0
          • K Kuddel

            @maikdor ja stimmt.

            so wie ich das sehe, habe ich alle DPs als Strings definiert.

            Wenn der Aktor nicht verbunden ist, kann ich die Strings so besser leeren mit dem Inhalt ""

            M Offline
            M Offline
            MaikDor
            schrieb am zuletzt editiert von
            #99

            @kuddel Ok wieder was gelernt. Bin noch Anfänger und versuche es immer wieder mit C&P zu lernen wie was wo geht :grin: und Fummel mich dann ein zurecht. Wie jetzt zb

            1 Antwort Letzte Antwort
            0
            • K Kuddel

              @maikdor ja stimmt.

              so wie ich das sehe, habe ich alle DPs als Strings definiert.

              Wenn der Aktor nicht verbunden ist, kann ich die Strings so besser leeren mit dem Inhalt ""

              M Offline
              M Offline
              MaikDor
              schrieb am zuletzt editiert von
              #100

              @kuddel So schaut es nun bei mir aus. wegen C&P :grin: habe ich auch einiges von dein zweiten VIS geklaut. Ich finde das sieht mega aus dein VIS

              Bild_2022-03-03_101223.png

              1 Antwort Letzte Antwort
              0
              • K Kuddel

                @maikdor bei mir komme ich leider nicht weiter als Version 9.5.0.

                Bisher ging das immer mit dem TasmoAdmin.

                Wie hast du deine Aktoren aktualisiert?

                AphofisA Offline
                AphofisA Offline
                Aphofis
                schrieb am zuletzt editiert von
                #101

                @kuddel
                Ich habe auch 7 ESP8266 im Betrieb für mein Meerwasser Aquarium und installiere erst die aktuelle minimal version und dann die aktuelle gewünschte ob deutsch oder sensoren so klappt es bei mir immer über die admin Seite mit heruntergeladenen bin dateien.

                1 Antwort Letzte Antwort
                0
                • M MaikDor

                  @kuddel
                  So habe es nun so gemacht und es geht nun kommt kein warning mehr.
                  Screenshot 2022-03-03 092314.png

                  aber musste dann den type in power von "string" auf "Boolean" stellen.
                  Screenshot 2022-03-03 092434.png

                  AphofisA Offline
                  AphofisA Offline
                  Aphofis
                  schrieb am zuletzt editiert von
                  #102

                  @maikdor
                  Hi, kannst du dein Script mal posten !?
                  Das wäre nett

                  M 1 Antwort Letzte Antwort
                  0
                  • AphofisA Aphofis

                    @maikdor
                    Hi, kannst du dein Script mal posten !?
                    Das wäre nett

                    M Offline
                    M Offline
                    MaikDor
                    schrieb am zuletzt editiert von
                    #103

                    @aphofis Klar kein ding.
                    Hier hast du das Script von Kuddel, was ich für mich angepasst habe damit es mit den Power klappt.

                    // Liest den Adapter Sonoff.0 aus und erstelle neue Datenpunkte unter javascript
                     
                    schedule('*/10 * * * * *', function (obj) {
                    //schedule('* * * * *', function (obj) {
                        createState('0_userdata.0.tasmota-devices.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Devices', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
                        var counter = 0;
                        var status_counter = 0;
                    	var offline_devices = 0;
                        
                        var cacheSelector = $('[id=sonoff.0.*.INFO.Info2_Hostname]');
                        counter = counter+1;
                        cacheSelector.each(function(id, i) {        
                            var devicename = getObject(id).common.name;
                            var devicename = devicename.replace("INFO ","")
                            var devicename = devicename.replace(" Info2 ","")
                            var devicename = devicename.replace(" Hostname","")
                            var devicenameName=devicename;
                          
                            //Gerätetatus
                            var connected = getState("sonoff.0." + devicenameName + ".alive").val;
                            if(connected == true) {var status = true}
                            else{var status = false}
                            
                            //Infos abfragen
                            if(status == true ) {
                                var status = "1"
                     
                                //Version
                                var version = getState("sonoff.0." + devicenameName + ".INFO" + ".Info1_Version").val;
                                if(version.indexOf("(sonoff)")){var version = version.replace("(sonoff)", "")}
                                if(version.indexOf("(tasmota)")){var version = version.replace("(tasmota)", "")}
                                // Version als INT für den Vergleich
                                var version_1 = parseInt(version)
                     
                                //Uptime aus dem DP UptimeSec (ab Tasmota 7.x)
                                if(version_1 > 6) {
                                    var uptime = getState("sonoff.0." + devicenameName + ".UptimeSec").val;
                                    var tage = Math.floor(uptime / (24*3600));
                                    var stunden = Math.floor((uptime % (24*3600))/3600);
                                    var minuten = Math.floor((uptime % (3600))/60);
                                    //var sekunden = Math.floor(uptime % 60);      
                                    if (stunden < 10) {stunden = "0"+stunden};
                                    if (minuten < 10) {minuten = "0"+minuten};				
                                    if (tage == 1) {uptime = tage.toString()+" Tag, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";};
                                    if (tage != 1) {uptime = tage.toString()+" Tage, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";}
                                }     
                                
                                //IP-Adresse
                                var ip = getState("sonoff.0." + devicenameName + ".INFO" + ".Info2_IPAddress").val;
                     
                                //Typ
                                var geraet = getState("sonoff.0." + devicenameName + ".INFO" + ".Info1_Module").val;
                     
                                //Powerschalter
                                var power = getState("sonoff.0." + devicenameName + ".POWER").val;
                     
                                //WLAN Singna Quali
                                var wlan = getState("sonoff.0." + devicenameName + ".Wifi_RSSI").val;
                                var wlan = String(wlan);
                                var wlan = wlan + ' %';
                     
                                
                            }
                            if(status == false){
                                var status = "0"
                                var uptime = ""
                                var version = ""
                                var ip = ""
                                var geraet = ""
                                var power = ""
                                var wlan = ""
                    			offline_devices = offline_devices+1;
                            }
                            
                            //DPs befüllen
                     
                            // Device-Name
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Device-Name";
                            createState(devicename, 'empty', { name: 'Device-Name', desc: '', type: 'string', role: '',read: true, write: true }); 
                            setStateDelayed(devicename, devicenameName, 800);
                            // Uptime
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Uptime"; 
                            createState(devicename, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
                            setStateDelayed(devicename, uptime, 800);
                            // Status
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Status";
                            createState(devicename, 'empty', { name: 'Status', desc: '', type: 'string', role: '',read: true, write: true }); 
                            setStateDelayed(devicename, status, 800);
                            // Version
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Version";
                            createState(devicename, 'empty', { name: 'Version', desc: '', type: 'string', role: '',read: true, write: true }); 
                            setStateDelayed(devicename, version, 800);
                            // IP
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".IP";
                            createState(devicename, 'empty', { name: 'IP', desc: '', type: 'string', role: '',read: true, write: true }); 
                            setStateDelayed(devicename, ip, 800);
                            // Gereatetyp
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Geraet";
                            createState(devicename, 'empty', { name: 'Geraet', desc: '', type: 'string', role: '',read: true, write: true }); 
                            setStateDelayed(devicename, geraet, 800);
                            //Power
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Power";
                            createState(devicename, 'empty', { name: 'Power', desc: '', type: 'boolean', role: '',read: true, write: true }); 
                            setStateDelayed(devicename, power, 800);
                            //WLAN Qualität
                            devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".WLAN";
                            createState(devicename, 'empty', { name: 'WLAN', desc: '', type: 'string', role: '',read: true, write: true }); 
                            setStateDelayed(devicename, wlan, 800);        
                        
                            counter = counter+1;
                            
                            
                     
                            
                    	}); 
                     
                        // Wegen sonoff.0.info muss vom Counter (Gesamtanzahl) 1 abgezogen werden
                        counter = counter - 1
                        
                         //Anzahl alle Geräte
                    	devicename="0_userdata.0.tasmota-devices.Anzahl";
                    	createState(devicename, 'empty', { name: 'Anzahl', desc: '', type: 'number', role: '',read: true, write: true }); 
                    	setStateDelayed(devicename, counter, 800);
                        	
                    	//Letzte aktualisierung
                        var datum = new Date();
                        var heute = datum.getDate()+ "." + (datum.getMonth()+ 1)+"." + datum.getFullYear()+" " +datum.getHours() +":" + datum.getMinutes() +":" + datum.getSeconds() + " Uhr" ;
                        createState('0_userdata.0.tasmota-devices.Letztes_Update', 0, { name: 'Letztes_Update', desc: '', type: 'string', role: '',read: true, write: true }); 
                        setStateDelayed('0_userdata.0.tasmota-devices.Letztes_Update', heute, 800);
                     
                    	//Alle Geräte online
                    	if(status_counter == counter) {
                    		devicename="0_userdata.0.tasmota-devices.Alle_Devices_verbunden";
                    		createState(devicename, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
                    		setStateDelayed(devicename, "1", 800);
                    	}
                    	else{
                    		devicename="0_userdata.0.tasmota-devices.Alle_Devices_verbunden";
                    		createState(devicename, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
                    		setStateDelayed(devicename, "0", 800);
                    	}
                    	
                    	//Anzahl offline Geräte
                    	devicename="0_userdata.0.tasmota-devices.Anzahl_offline_Devices";
                        createState(devicename, 'empty', { name: 'Anzahl_offline_Devices', desc: '', type: 'number', role: '',read: true, write: true }); 
                        setStateDelayed(devicename, offline_devices, 800);
                        
                    }); 
                     
                    
                    
                    AphofisA 1 Antwort Letzte Antwort
                    0
                    • M MaikDor

                      @aphofis Klar kein ding.
                      Hier hast du das Script von Kuddel, was ich für mich angepasst habe damit es mit den Power klappt.

                      // Liest den Adapter Sonoff.0 aus und erstelle neue Datenpunkte unter javascript
                       
                      schedule('*/10 * * * * *', function (obj) {
                      //schedule('* * * * *', function (obj) {
                          createState('0_userdata.0.tasmota-devices.Anzahl', 0, { name: 'Anzahl', desc: 'Anzahl der Devices', type: 'number', unit: '', min: '0', max: '255', role: '',read: true, write: true });
                          var counter = 0;
                          var status_counter = 0;
                      	var offline_devices = 0;
                          
                          var cacheSelector = $('[id=sonoff.0.*.INFO.Info2_Hostname]');
                          counter = counter+1;
                          cacheSelector.each(function(id, i) {        
                              var devicename = getObject(id).common.name;
                              var devicename = devicename.replace("INFO ","")
                              var devicename = devicename.replace(" Info2 ","")
                              var devicename = devicename.replace(" Hostname","")
                              var devicenameName=devicename;
                            
                              //Gerätetatus
                              var connected = getState("sonoff.0." + devicenameName + ".alive").val;
                              if(connected == true) {var status = true}
                              else{var status = false}
                              
                              //Infos abfragen
                              if(status == true ) {
                                  var status = "1"
                       
                                  //Version
                                  var version = getState("sonoff.0." + devicenameName + ".INFO" + ".Info1_Version").val;
                                  if(version.indexOf("(sonoff)")){var version = version.replace("(sonoff)", "")}
                                  if(version.indexOf("(tasmota)")){var version = version.replace("(tasmota)", "")}
                                  // Version als INT für den Vergleich
                                  var version_1 = parseInt(version)
                       
                                  //Uptime aus dem DP UptimeSec (ab Tasmota 7.x)
                                  if(version_1 > 6) {
                                      var uptime = getState("sonoff.0." + devicenameName + ".UptimeSec").val;
                                      var tage = Math.floor(uptime / (24*3600));
                                      var stunden = Math.floor((uptime % (24*3600))/3600);
                                      var minuten = Math.floor((uptime % (3600))/60);
                                      //var sekunden = Math.floor(uptime % 60);      
                                      if (stunden < 10) {stunden = "0"+stunden};
                                      if (minuten < 10) {minuten = "0"+minuten};				
                                      if (tage == 1) {uptime = tage.toString()+" Tag, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";};
                                      if (tage != 1) {uptime = tage.toString()+" Tage, "+stunden.toString()+" Std, "+minuten.toString()+" Min ";}
                                  }     
                                  
                                  //IP-Adresse
                                  var ip = getState("sonoff.0." + devicenameName + ".INFO" + ".Info2_IPAddress").val;
                       
                                  //Typ
                                  var geraet = getState("sonoff.0." + devicenameName + ".INFO" + ".Info1_Module").val;
                       
                                  //Powerschalter
                                  var power = getState("sonoff.0." + devicenameName + ".POWER").val;
                       
                                  //WLAN Singna Quali
                                  var wlan = getState("sonoff.0." + devicenameName + ".Wifi_RSSI").val;
                                  var wlan = String(wlan);
                                  var wlan = wlan + ' %';
                       
                                  
                              }
                              if(status == false){
                                  var status = "0"
                                  var uptime = ""
                                  var version = ""
                                  var ip = ""
                                  var geraet = ""
                                  var power = ""
                                  var wlan = ""
                      			offline_devices = offline_devices+1;
                              }
                              
                              //DPs befüllen
                       
                              // Device-Name
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Device-Name";
                              createState(devicename, 'empty', { name: 'Device-Name', desc: '', type: 'string', role: '',read: true, write: true }); 
                              setStateDelayed(devicename, devicenameName, 800);
                              // Uptime
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Uptime"; 
                              createState(devicename, 'empty', { name: 'Uptime', desc: '', type: 'string', role: '',read: true, write: true });
                              setStateDelayed(devicename, uptime, 800);
                              // Status
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Status";
                              createState(devicename, 'empty', { name: 'Status', desc: '', type: 'string', role: '',read: true, write: true }); 
                              setStateDelayed(devicename, status, 800);
                              // Version
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Version";
                              createState(devicename, 'empty', { name: 'Version', desc: '', type: 'string', role: '',read: true, write: true }); 
                              setStateDelayed(devicename, version, 800);
                              // IP
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".IP";
                              createState(devicename, 'empty', { name: 'IP', desc: '', type: 'string', role: '',read: true, write: true }); 
                              setStateDelayed(devicename, ip, 800);
                              // Gereatetyp
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Geraet";
                              createState(devicename, 'empty', { name: 'Geraet', desc: '', type: 'string', role: '',read: true, write: true }); 
                              setStateDelayed(devicename, geraet, 800);
                              //Power
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".Power";
                              createState(devicename, 'empty', { name: 'Power', desc: '', type: 'boolean', role: '',read: true, write: true }); 
                              setStateDelayed(devicename, power, 800);
                              //WLAN Qualität
                              devicename="0_userdata.0.tasmota-devices.Device_"+counter.toString()+".WLAN";
                              createState(devicename, 'empty', { name: 'WLAN', desc: '', type: 'string', role: '',read: true, write: true }); 
                              setStateDelayed(devicename, wlan, 800);        
                          
                              counter = counter+1;
                              
                              
                       
                              
                      	}); 
                       
                          // Wegen sonoff.0.info muss vom Counter (Gesamtanzahl) 1 abgezogen werden
                          counter = counter - 1
                          
                           //Anzahl alle Geräte
                      	devicename="0_userdata.0.tasmota-devices.Anzahl";
                      	createState(devicename, 'empty', { name: 'Anzahl', desc: '', type: 'number', role: '',read: true, write: true }); 
                      	setStateDelayed(devicename, counter, 800);
                          	
                      	//Letzte aktualisierung
                          var datum = new Date();
                          var heute = datum.getDate()+ "." + (datum.getMonth()+ 1)+"." + datum.getFullYear()+" " +datum.getHours() +":" + datum.getMinutes() +":" + datum.getSeconds() + " Uhr" ;
                          createState('0_userdata.0.tasmota-devices.Letztes_Update', 0, { name: 'Letztes_Update', desc: '', type: 'string', role: '',read: true, write: true }); 
                          setStateDelayed('0_userdata.0.tasmota-devices.Letztes_Update', heute, 800);
                       
                      	//Alle Geräte online
                      	if(status_counter == counter) {
                      		devicename="0_userdata.0.tasmota-devices.Alle_Devices_verbunden";
                      		createState(devicename, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
                      		setStateDelayed(devicename, "1", 800);
                      	}
                      	else{
                      		devicename="0_userdata.0.tasmota-devices.Alle_Devices_verbunden";
                      		createState(devicename, 'empty', { name: 'Alle_Devices_verbunden', desc: '', type: 'string', role: '',read: true, write: true }); 
                      		setStateDelayed(devicename, "0", 800);
                      	}
                      	
                      	//Anzahl offline Geräte
                      	devicename="0_userdata.0.tasmota-devices.Anzahl_offline_Devices";
                          createState(devicename, 'empty', { name: 'Anzahl_offline_Devices', desc: '', type: 'number', role: '',read: true, write: true }); 
                          setStateDelayed(devicename, offline_devices, 800);
                          
                      }); 
                       
                      
                      
                      AphofisA Offline
                      AphofisA Offline
                      Aphofis
                      schrieb am zuletzt editiert von
                      #104

                      @maikdor Danke :+1: :+1: :+1:

                      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

                      777

                      Online

                      32.5k

                      Benutzer

                      81.7k

                      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