Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Batteriescripterweiterung Mihome auf Zigbee-Ad.

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    267

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Batteriescripterweiterung Mihome auf Zigbee-Ad.

Scheduled Pinned Locked Moved JavaScript
javascriptmonitoring
15 Posts 5 Posters 1.2k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D DocGame

    @ticaki Hier das Script, das mit den MiHome Geräten einwandfrei läuft:

    const mihome = $('channel[state.id=mihome.0.devices.*.percent]');
    var Infos = [];
    var Values = [];
    function checkBatt(id, i) {
        var value = getState(id).val;
        if(value < 101) { // Anpassen !
            var pathname = id.substring(0, id.lastIndexOf('.'));
            var name = getObject(pathname).common.name;
            if(Infos.indexOf(name) == -1) {
                Infos.push(name);
                Values.push(value);
            }
        }
    }
    
    function lowBatt() {
       Infos = []; 
       Values= [];    
       var InfoMessage = 'Batterien Stand Liste:\n';
       mihome.each(checkBatt);
    
       if(Infos.length) {
          for(let i = 0; i < Infos.length; i++) {
             InfoMessage = InfoMessage + Infos[i] + ': ' + Values[i] + ' %\n';
          }  
          sendTo("telegram", "send", {user: 'Ralf', text: InfoMessage});
       }
    }
    on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
    
    lowBatt(); // Aufruf bei Skriptstart
    

    Das will ich noch für die Batteriegeräte der Zigbee (am wichtigsten), Hue und Deconz-Adapter erweitern, damit ich alles in der Liste habe.
    Hier scheitere ich allerdings mit meinen Künsten.
    PS: Den Wert von 101 habe ich drin, damit ich bei Start des Scripts eine gesamtliste (egal welcher Stand) bekomme. Die Leermeldung kommt ja weiter unten.

    sigi234S Online
    sigi234S Online
    sigi234
    Forum Testing Most Active
    wrote on last edited by
    #5

    @DocGame

    https://forum.iobroker.net/topic/28789/script-fürtabelle-der-batterie-zustände

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

    D 1 Reply Last reply
    0
    • T Offline
      T Offline
      Tictactoo
      wrote on last edited by
      #6

      Also so funktioniert es bei mir mit den Zigbee-Geräten. Mit MiHome, keine Ahnung, hab das leider so nicht drin.

      const mihome = $('mihome.0.devices.*.percent');
      const zigbee = $('zigbee.0.*.battery');
      
      var Infos = [];
      var Values = [];
      
      function checkBatt(id, i) {
          var value = getState(id).val;
      
          if(value < 101) { // Anpassen !
              var pathname = id.substring(0, id.lastIndexOf('.'));
              var name = getObject(pathname).common.name;
              if(Infos.indexOf(name) == -1) {
                  Infos.push(name);
                  Values.push(value);
      
              }
          }
      }
      
      function lowBatt() {
         Infos = []; 
         Values= [];    
      
         var InfoMessage = 'Batterien Stand Liste:\n';
      
         mihome.each(checkBatt);
         zigbee.each(checkBatt);
      
         if(Infos.length) {
            for(let i = 0; i < Infos.length; i++) {
               InfoMessage = InfoMessage + Infos[i] + ': ' + Values[i] + ' %\n';
            }  
            sendTo("telegram", "send", {user: 'Ralf', text: InfoMessage});
         }
      }
      
      on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
      on({id: /^zigbee\.0\.devices\..+\.battery$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
      
      lowBatt(); // Aufruf bei Skriptstart
      
      
      1 Reply Last reply
      0
      • D DocGame

        @ticaki Hier das Script, das mit den MiHome Geräten einwandfrei läuft:

        const mihome = $('channel[state.id=mihome.0.devices.*.percent]');
        var Infos = [];
        var Values = [];
        function checkBatt(id, i) {
            var value = getState(id).val;
            if(value < 101) { // Anpassen !
                var pathname = id.substring(0, id.lastIndexOf('.'));
                var name = getObject(pathname).common.name;
                if(Infos.indexOf(name) == -1) {
                    Infos.push(name);
                    Values.push(value);
                }
            }
        }
        
        function lowBatt() {
           Infos = []; 
           Values= [];    
           var InfoMessage = 'Batterien Stand Liste:\n';
           mihome.each(checkBatt);
        
           if(Infos.length) {
              for(let i = 0; i < Infos.length; i++) {
                 InfoMessage = InfoMessage + Infos[i] + ': ' + Values[i] + ' %\n';
              }  
              sendTo("telegram", "send", {user: 'Ralf', text: InfoMessage});
           }
        }
        on({id: /^mihome\.0\.devices\..+\.percent$/, valLt: 30, oldValGe: 30}, lowBatt); // Triggert bei Erreichen des Grenzwertes
        
        lowBatt(); // Aufruf bei Skriptstart
        

        Das will ich noch für die Batteriegeräte der Zigbee (am wichtigsten), Hue und Deconz-Adapter erweitern, damit ich alles in der Liste habe.
        Hier scheitere ich allerdings mit meinen Künsten.
        PS: Den Wert von 101 habe ich drin, damit ich bei Start des Scripts eine gesamtliste (egal welcher Stand) bekomme. Die Leermeldung kommt ja weiter unten.

        T Do not disturb
        T Do not disturb
        ticaki
        wrote on last edited by
        #7

        @DocGame
        ich werde das Skript nachher auf Devonz und MQTT erweitern, kann es ja posten. Zigbee hab ich nicht installiert.

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        D 1 Reply Last reply
        0
        • sigi234S sigi234

          @DocGame

          https://forum.iobroker.net/topic/28789/script-fürtabelle-der-batterie-zustände

          D Offline
          D Offline
          DocGame
          wrote on last edited by
          #8

          @sigi234 Das habe ich vor einigen Tagen versucht zum laufen zu bringen, weil es toll aussieht....bin aber schon an der 1. Zeile(Pfad für HTML) gescheitert.
          Siehr gut und interessant aus. Ich bin normal in Blockly unterwegs und das klappt auch recht gut. Leider ist nicht alles so toll umzusetzen wie mit deinem Script.
          Muss mich nochmal daran versuchen. Ich würde es für IQControl verwenden.

          1 Reply Last reply
          0
          • T ticaki

            @DocGame
            ich werde das Skript nachher auf Devonz und MQTT erweitern, kann es ja posten. Zigbee hab ich nicht installiert.

            D Offline
            D Offline
            DocGame
            wrote on last edited by
            #9

            @ticaki MQTT hab ich hauptsächlich auf meinen Tasmotageräte und die haben keine Batterie. Dann hätte ich ja aber schon MiHome, Zigbee und Deconz. Da bekomme ich bestimmt auch noch Hue rein. Wäre toll.

            T 1 Reply Last reply
            0
            • D DocGame

              @ticaki MQTT hab ich hauptsächlich auf meinen Tasmotageräte und die haben keine Batterie. Dann hätte ich ja aber schon MiHome, Zigbee und Deconz. Da bekomme ich bestimmt auch noch Hue rein. Wäre toll.

              T Do not disturb
              T Do not disturb
              ticaki
              wrote on last edited by ticaki
              #10

              @DocGame
              Habs umgeändert das es die Ladestände sortiert.

              const deconz = $('channel[state.id=deconz.0.*.battery]');
              var Infos = [[]];
              function checkBatt(id, i) {
                  var value = getState(id).val;
                  if(value < 101) { // Anpassen !
                      var pathname = id.substring(0, id.lastIndexOf('.'));
                      var name = getObject(pathname).common.name;
                      for(let i = 0; i < Infos.length; i++) {
                          if (Infos[i][0] == name) break;
                          if (i == Infos.length-1) Infos.push([name,value]);
                      }
                  }
              }
              
              function lowBatt() {
                  Infos = [[]]; 
                  var InfoMessage = 'Ladestand der Batterien:\n';
                  deconz.each(checkBatt);
                  Infos.shift();
                  Infos.sort(SortArray);
                  if(Infos.length) {
                      for(let i = 0; i < Infos.length; i++) {
                          InfoMessage += Infos[i][0] + ': ' + Infos[i][1] + '%\n';
                      }  
                      sendTo("telegram", "send", {user: 'Tim', text: InfoMessage});
                      //log(Infos);
                  }
              }
              on({id: /^deconz\.0\..*\.battery$/, valLt: 20, oldValGe: 20}, lowBatt); // Triggert bei Erreichen des Grenzwertes
               
              lowBatt(); // Aufruf bei Skriptstart... dat nervt aber wenn man den rechner jede nacht neustartet :P
               
              function SortArray(a,b) {
                  return a[1]-b[1];
              }
              

              hue und zigbee hab ich leider nicht. Hue ging mir auf die Nerven und der Zigbee stick kam erst vor ein paar Tagen.

              EDIT: Ne war in Ordnung

              Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

              Spenden

              D 1 Reply Last reply
              0
              • T ticaki

                @DocGame
                Habs umgeändert das es die Ladestände sortiert.

                const deconz = $('channel[state.id=deconz.0.*.battery]');
                var Infos = [[]];
                function checkBatt(id, i) {
                    var value = getState(id).val;
                    if(value < 101) { // Anpassen !
                        var pathname = id.substring(0, id.lastIndexOf('.'));
                        var name = getObject(pathname).common.name;
                        for(let i = 0; i < Infos.length; i++) {
                            if (Infos[i][0] == name) break;
                            if (i == Infos.length-1) Infos.push([name,value]);
                        }
                    }
                }
                
                function lowBatt() {
                    Infos = [[]]; 
                    var InfoMessage = 'Ladestand der Batterien:\n';
                    deconz.each(checkBatt);
                    Infos.shift();
                    Infos.sort(SortArray);
                    if(Infos.length) {
                        for(let i = 0; i < Infos.length; i++) {
                            InfoMessage += Infos[i][0] + ': ' + Infos[i][1] + '%\n';
                        }  
                        sendTo("telegram", "send", {user: 'Tim', text: InfoMessage});
                        //log(Infos);
                    }
                }
                on({id: /^deconz\.0\..*\.battery$/, valLt: 20, oldValGe: 20}, lowBatt); // Triggert bei Erreichen des Grenzwertes
                 
                lowBatt(); // Aufruf bei Skriptstart... dat nervt aber wenn man den rechner jede nacht neustartet :P
                 
                function SortArray(a,b) {
                    return a[1]-b[1];
                }
                

                hue und zigbee hab ich leider nicht. Hue ging mir auf die Nerven und der Zigbee stick kam erst vor ein paar Tagen.

                EDIT: Ne war in Ordnung

                D Offline
                D Offline
                DocGame
                wrote on last edited by DocGame
                #11

                @ticaki Hab jetzt Deconz, Zigbee und MiHome und deinen Sort drin.....klappt gut.
                Morgen werde ich noch Hue reinbasteln.
                Welchen Zigbee hast du denn bekommen. Ich habe seit 4 Wochen den CC1352P2 und bin so zufrieden, das ich fast alles vom Deconz umgezogen habe.
                Auf den 5 MiHubs habe ich noch ca. 70 Geräte. Da besteht kein Handlungsbedarf zum Umziehen. Die Hue-Bridge habe ich mir erst vor eine Woche zugelegt, weil ich den Philips Outdor BWM nicht vernünftig in die anderen reinbekommen habe. Jetzt habe ich zumindest im Zigbeebereich quasi "Vollausstattung" :blush:

                Nachtrag: Jetzt ist Hue auch noch drin.

                @sigi234 dein Projekt sieht zu interessant aus um es zu ignorieren. Werde mich ab morgen nochmals daran versuchen.

                sigi234S T 2 Replies Last reply
                0
                • D DocGame

                  @ticaki Hab jetzt Deconz, Zigbee und MiHome und deinen Sort drin.....klappt gut.
                  Morgen werde ich noch Hue reinbasteln.
                  Welchen Zigbee hast du denn bekommen. Ich habe seit 4 Wochen den CC1352P2 und bin so zufrieden, das ich fast alles vom Deconz umgezogen habe.
                  Auf den 5 MiHubs habe ich noch ca. 70 Geräte. Da besteht kein Handlungsbedarf zum Umziehen. Die Hue-Bridge habe ich mir erst vor eine Woche zugelegt, weil ich den Philips Outdor BWM nicht vernünftig in die anderen reinbekommen habe. Jetzt habe ich zumindest im Zigbeebereich quasi "Vollausstattung" :blush:

                  Nachtrag: Jetzt ist Hue auch noch drin.

                  @sigi234 dein Projekt sieht zu interessant aus um es zu ignorieren. Werde mich ab morgen nochmals daran versuchen.

                  sigi234S Online
                  sigi234S Online
                  sigi234
                  Forum Testing Most Active
                  wrote on last edited by sigi234
                  #12

                  @DocGame sagte in Batteriescripterweiterung Mihome auf Zigbee-Ad.:

                  @sigi234 dein Projekt sieht zu interessant aus um es zu ignorieren. Werde mich ab morgen nochmals daran versuchen.

                  Ist von @liv-in-sky ! Coole Sache.

                  Screenshot (1504).png

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

                  D 1 Reply Last reply
                  0
                  • sigi234S sigi234

                    @DocGame sagte in Batteriescripterweiterung Mihome auf Zigbee-Ad.:

                    @sigi234 dein Projekt sieht zu interessant aus um es zu ignorieren. Werde mich ab morgen nochmals daran versuchen.

                    Ist von @liv-in-sky ! Coole Sache.

                    Screenshot (1504).png

                    D Offline
                    D Offline
                    DocGame
                    wrote on last edited by
                    #13

                    @sigi234 Stimmt... Sorry. Habe zwar in meiner Verzweiflung es zum laufen zu bringen zwar alle Posts durchgekaut, mit eure Namen aber leider nicht gemerkt.

                    1 Reply Last reply
                    0
                    • D DocGame

                      @ticaki Hab jetzt Deconz, Zigbee und MiHome und deinen Sort drin.....klappt gut.
                      Morgen werde ich noch Hue reinbasteln.
                      Welchen Zigbee hast du denn bekommen. Ich habe seit 4 Wochen den CC1352P2 und bin so zufrieden, das ich fast alles vom Deconz umgezogen habe.
                      Auf den 5 MiHubs habe ich noch ca. 70 Geräte. Da besteht kein Handlungsbedarf zum Umziehen. Die Hue-Bridge habe ich mir erst vor eine Woche zugelegt, weil ich den Philips Outdor BWM nicht vernünftig in die anderen reinbekommen habe. Jetzt habe ich zumindest im Zigbeebereich quasi "Vollausstattung" :blush:

                      Nachtrag: Jetzt ist Hue auch noch drin.

                      @sigi234 dein Projekt sieht zu interessant aus um es zu ignorieren. Werde mich ab morgen nochmals daran versuchen.

                      T Do not disturb
                      T Do not disturb
                      ticaki
                      wrote on last edited by
                      #14

                      @DocGame
                      CC2540 der der in diesem Projekt empfohlen wurde. Bin aber jetzt mit dekonz zufrieden und spiel erstmal mit meinen ESP rum.

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      1 Reply Last reply
                      0
                      • madjack84M Offline
                        madjack84M Offline
                        madjack84
                        wrote on last edited by
                        #15

                        Hallo,
                        hab mir eben auch ein Skrip für Batteriecheckup gebastelt und möchte das sharen.

                        Prüfung einmal in der Woche nach Schedule.

                        Ausgabe in Telegram ist:
                        Low Battery @ sensor_ht_wz im Wohnzimmer = 56.9 (mihome.0.devices.sensor_ht_158d0002b8e917.percent)

                        // Battery check
                        
                        schedule('0 8 * * 0', function () {
                        
                            var itemfound = false;
                        
                            //find Xiaomi battery percent
                            $('state[state.id=*.percent][role=battery.percent]').each(function (id, i) {
                                //console.log(id);
                                if (getState(id).val < 40){
                                    sendTo("telegram.0", "send", {
                                        text: '🔋 Low Battery @ ' 
                                            + getObject(id.substring(0, id.lastIndexOf('.'))).common.name
                                            + ' im '
                                            + getObject( id, "rooms").enumNames
                                            +  ' = ' + getState(id).val
                                            + ' (' + id + ')',
                                        user: 'Michael'
                                    });
                                    itemfound = true;
                                }
                            });
                        
                            // find Homematic lowBat
                            $('state[state.id=LOWBAT][role=indicator.lowbat]').each(function (id, i) {
                                //console.log(id);
                                if (getState(id).val){
                                    sendTo("telegram.0", "send", {
                                        text: '🔋 Low Battery @ ' 
                                            + getObject(id.substring(0, id.lastIndexOf('.'))).common.name
                                            + ' im '
                                            + getObject( id, "rooms").enumNames
                                            +  ' = ' + getState(id).val
                                            + ' (' + id + ')',
                                        user: 'Michael'
                                    });
                                    itemfound = true;
                                }
                            });
                        
                            if (!itemfound){
                                sendTo("telegram.0", "send", {
                                        text: '🔋 Batteries checked. Everything alright.',
                                        user: 'Michael'
                                    });
                            }
                        
                            itemfound = false;
                        
                        });
                        

                        nuc i3, Proxmox, raspimatic (PI3), 15 shellies, shelly 4pro/25/RGB, wled sonoff, 7x xiaomi sensoren, 4xEchos, 4 Tasmota Steckdosen, motionEye, nspanel, Ring, hoymiles usw

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        537

                        Online

                        32.7k

                        Users

                        82.5k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe