Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Script Xiaomi Battery leer ?

NEWS

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

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

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

Script Xiaomi Battery leer ?

Geplant Angeheftet Gesperrt Verschoben Ungelöst Skripten / Logik
blockly
93 Beiträge 19 Kommentatoren 11.0k Aufrufe 16 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.
  • ? Ein ehemaliger Benutzer

    Hi,
    ich verwende dafür dieses Javascript, das alle xiaomi-batterie States scannt und dann in einen Datenpunkt schreibt, wo die Batterie leer ist.
    Funktioniert auch prima mit fritzdect, muss nur der State geändert werden.

    const idVis = 'Batterie.MiHomeBatterietausch';
    const batt = $('mihome.0.*.percent');
    
    createState(idVis, '', {type: 'string'});
    
    function lowBatt() {
    	var low = [];
    	batt.each(function (id, i) {
    	if(getState(id).val < 30) {
    			id = id.split('.');
    			id = 'mihome.0.' + id[2] + '.' + id[3];
    			low.push(getObject(id).common.name); // Geräte-Name
    		}	
    	});
    	setState(idVis, low.join(',<br>'), true);		
    }
    
    schedule('0 * * * *', lowBatt); // jede volle Stunde
    
    
    
    K Offline
    K Offline
    karstent
    schrieb am zuletzt editiert von
    #50

    @ilovegym
    Und wie bekommst Du diese Nachricht das die Batterien sich leeren? Würde gerne das Script benutzen. Danke

    ? 1 Antwort Letzte Antwort
    0
    • MyzerATM Offline
      MyzerATM Offline
      MyzerAT
      schrieb am zuletzt editiert von
      #51

      sieht für mich aus als ob es über vis ausgegeben wird

      lg Rudi

      Master Debian 12 (Wien)
      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

      Slave Debian 12. (TULLN) --> OpenVPN to Vienna
      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

      Node 20.19.0
      Nodejs 20.19.0
      npm 10.8.2
      js-controller 7.0.6

      1 Antwort Letzte Antwort
      0
      • iomountainI Offline
        iomountainI Offline
        iomountain
        schrieb am zuletzt editiert von
        #52

        @karstent sagte in Script Xiaomi Battery leer ?:

        Und wie bekommst Du diese Nachricht das die Batterien sich leeren? Würde gerne das Script benutzen. Danke

        Brauchst dir nur die Variable "Alarmtext" als Text, zum Beispiel mit Telegram, aufs Handy schicken.
        Funktioniert bei mir 1 A

        1 Antwort Letzte Antwort
        0
        • K Offline
          K Offline
          karstent
          schrieb am zuletzt editiert von
          #53

          Ist das die Variable "Batterie.MiHomeBatterietausch"? Eine andere finde ich nicht.

          iomountainI 1 Antwort Letzte Antwort
          0
          • K karstent

            Ist das die Variable "Batterie.MiHomeBatterietausch"? Eine andere finde ich nicht.

            iomountainI Offline
            iomountainI Offline
            iomountain
            schrieb am zuletzt editiert von
            #54

            @karstent die Variable "Alarmtext" aus dem Blockly von @MyzerAT oder @Negalein

            1 Antwort Letzte Antwort
            0
            • K karstent

              @ilovegym
              Und wie bekommst Du diese Nachricht das die Batterien sich leeren? Würde gerne das Script benutzen. Danke

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

              @karstent sagte in Script Xiaomi Battery leer ?:

              @ilovegym
              Und wie bekommst Du diese Nachricht das die Batterien sich leeren? Würde gerne das Script benutzen. Danke

              Ich triggere das Objekt javascript.0.Batterie.MiHomeBatterietausch ( habe da noch mehr, -FritzBatterietausch, etc..) mit einem anderen Script, das mir den Wert dann als Message über Telegram schickt.

              1 Antwort Letzte Antwort
              0
              • iomountainI Offline
                iomountainI Offline
                iomountain
                schrieb am zuletzt editiert von
                #56

                @karstent so sieht es bei mir aus:
                5c518edc-94eb-4cf4-91ce-b130ecbd982d-image.png

                1 Antwort Letzte Antwort
                0
                • ? Ein ehemaliger Benutzer

                  Hi,
                  ich verwende dafür dieses Javascript, das alle xiaomi-batterie States scannt und dann in einen Datenpunkt schreibt, wo die Batterie leer ist.
                  Funktioniert auch prima mit fritzdect, muss nur der State geändert werden.

                  const idVis = 'Batterie.MiHomeBatterietausch';
                  const batt = $('mihome.0.*.percent');
                  
                  createState(idVis, '', {type: 'string'});
                  
                  function lowBatt() {
                  	var low = [];
                  	batt.each(function (id, i) {
                  	if(getState(id).val < 30) {
                  			id = id.split('.');
                  			id = 'mihome.0.' + id[2] + '.' + id[3];
                  			low.push(getObject(id).common.name); // Geräte-Name
                  		}	
                  	});
                  	setState(idVis, low.join(',<br>'), true);		
                  }
                  
                  schedule('0 * * * *', lowBatt); // jede volle Stunde
                  
                  
                  
                  P Offline
                  P Offline
                  passuff
                  schrieb am zuletzt editiert von passuff
                  #57

                  @ilovegym sagte in Script Xiaomi Battery leer ?:

                  Hi,
                  ich verwende dafür dieses Javascript, das alle xiaomi-batterie States scannt und dann in einen Datenpunkt schreibt, wo die Batterie leer ist.
                  Funktioniert auch prima mit fritzdect, muss nur der State geändert werden.

                  const idVis = 'Batterie.MiHomeBatterietausch';
                  const batt = $('mihome.0.*.percent');
                  
                  createState(idVis, '', {type: 'string'});
                  
                  function lowBatt() {
                  	var low = [];
                  	batt.each(function (id, i) {
                  	if(getState(id).val < 30) {
                  			id = id.split('.');
                  			id = 'mihome.0.' + id[2] + '.' + id[3];
                  			low.push(getObject(id).common.name); // Geräte-Name
                  		}	
                  	});
                  	setState(idVis, low.join(',<br>'), true);		
                  }
                  
                  schedule('0 * * * *', lowBatt); // jede volle Stunde
                  
                  
                  

                  Vielen Dank für das Skript. Ich wollte es neben mihome ach für meine Homematic Komponenten einsetzen. Dazu habe ich es wie folgt geändert:


                  const idVis = 'Batterie.HomematicBatterietausch';
                  const batt = $('hm-rpc.0.OEQ19*.LOWBAT');

                  createState(idVis, '', {type: 'string'});

                  function lowBatt() {
                  console.log('lowbat Homematic wird ausgeführt');
                  var low = [];
                  batt.each(function (id, i) {
                  if(getState(id).val == true) {
                  id = id.split('.');
                  id = 'hm-rpc.0.' + id[2] + '.' + id[3];
                  low.push(getObject(id).common.name); // Geräte-Name
                  }
                  });
                  setState(idVis, low.join(',<br>'), true);
                  }

                  //schedule('*/5 * * * * *', lowBatt); // jeden Tag
                  schedule('{"time":{"exactTime":true,"start":"18:00"},"period":{"days":1}}', lowBatt)


                  Ich würde gerne abgesehen vom Gerätenamen noch den Raum in den Datenpunkt schreiben, da bei mir dieser aus der Homematic Nomenklatur nicht hervorgeht. Wie stelle ich das an?

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • P passuff

                    @ilovegym sagte in Script Xiaomi Battery leer ?:

                    Hi,
                    ich verwende dafür dieses Javascript, das alle xiaomi-batterie States scannt und dann in einen Datenpunkt schreibt, wo die Batterie leer ist.
                    Funktioniert auch prima mit fritzdect, muss nur der State geändert werden.

                    const idVis = 'Batterie.MiHomeBatterietausch';
                    const batt = $('mihome.0.*.percent');
                    
                    createState(idVis, '', {type: 'string'});
                    
                    function lowBatt() {
                    	var low = [];
                    	batt.each(function (id, i) {
                    	if(getState(id).val < 30) {
                    			id = id.split('.');
                    			id = 'mihome.0.' + id[2] + '.' + id[3];
                    			low.push(getObject(id).common.name); // Geräte-Name
                    		}	
                    	});
                    	setState(idVis, low.join(',<br>'), true);		
                    }
                    
                    schedule('0 * * * *', lowBatt); // jede volle Stunde
                    
                    
                    

                    Vielen Dank für das Skript. Ich wollte es neben mihome ach für meine Homematic Komponenten einsetzen. Dazu habe ich es wie folgt geändert:


                    const idVis = 'Batterie.HomematicBatterietausch';
                    const batt = $('hm-rpc.0.OEQ19*.LOWBAT');

                    createState(idVis, '', {type: 'string'});

                    function lowBatt() {
                    console.log('lowbat Homematic wird ausgeführt');
                    var low = [];
                    batt.each(function (id, i) {
                    if(getState(id).val == true) {
                    id = id.split('.');
                    id = 'hm-rpc.0.' + id[2] + '.' + id[3];
                    low.push(getObject(id).common.name); // Geräte-Name
                    }
                    });
                    setState(idVis, low.join(',<br>'), true);
                    }

                    //schedule('*/5 * * * * *', lowBatt); // jeden Tag
                    schedule('{"time":{"exactTime":true,"start":"18:00"},"period":{"days":1}}', lowBatt)


                    Ich würde gerne abgesehen vom Gerätenamen noch den Raum in den Datenpunkt schreiben, da bei mir dieser aus der Homematic Nomenklatur nicht hervorgeht. Wie stelle ich das an?

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #58

                    @passuff

                    var raum = getObject(id, 'rooms').enumNames.join(', ');
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    P 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @passuff

                      var raum = getObject(id, 'rooms').enumNames.join(', ');
                      
                      P Offline
                      P Offline
                      passuff
                      schrieb am zuletzt editiert von
                      #59

                      @paul53 sagte in Script Xiaomi Battery leer ?:

                      @passuff

                      var raum = getObject(id, 'rooms').enumNames.join(', ');
                      

                      Wo muss das hin? Ich bin blutiger Anfänger und habe bisher nur blockly code generiert.

                      Mein erster Versuch schlug direkt fehl.

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • P passuff

                        @paul53 sagte in Script Xiaomi Battery leer ?:

                        @passuff

                        var raum = getObject(id, 'rooms').enumNames.join(', ');
                        

                        Wo muss das hin? Ich bin blutiger Anfänger und habe bisher nur blockly code generiert.

                        Mein erster Versuch schlug direkt fehl.

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #60

                        @passuff sagte:

                        Wo muss das hin?

                        Wie willst Du die Räume anzeigen ? Zusammen mit dem Kanalnamen (davor / dahinter) oder getrennt ?

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        P 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @passuff sagte:

                          Wo muss das hin?

                          Wie willst Du die Räume anzeigen ? Zusammen mit dem Kanalnamen (davor / dahinter) oder getrennt ?

                          P Offline
                          P Offline
                          passuff
                          schrieb am zuletzt editiert von
                          #61

                          @paul53 Kanalname + Raum wäre super

                          paul53P 1 Antwort Letzte Antwort
                          0
                          • P passuff

                            @paul53 Kanalname + Raum wäre super

                            paul53P Offline
                            paul53P Offline
                            paul53
                            schrieb am zuletzt editiert von paul53
                            #62

                            @passuff

                                  id = 'hm-rpc.0.' + id[2] + '.' + id[3];
                                  var raum = getObject(id, 'rooms').enumNames.join(', ');
                                  low.push(getObject(id).common.name + ': ' + raum); // Kanal-Name: Raum
                                }
                            

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            P 1 Antwort Letzte Antwort
                            0
                            • paul53P paul53

                              @passuff

                                    id = 'hm-rpc.0.' + id[2] + '.' + id[3];
                                    var raum = getObject(id, 'rooms').enumNames.join(', ');
                                    low.push(getObject(id).common.name + ': ' + raum); // Kanal-Name: Raum
                                  }
                              
                              P Offline
                              P Offline
                              passuff
                              schrieb am zuletzt editiert von
                              #63

                              @paul53 sagte in Script Xiaomi Battery leer ?:

                              id = 'hm-rpc.0.' + id[2] + '.' + id[3];
                              var raum = getObject(id, 'rooms').enumNames.join(', ');
                              low.push(getObject(id).common.name + ': ' + raum); // Kanal-Name: Raum
                              }

                              Vielen Dank. Funktioniert bestens!

                              1 Antwort Letzte Antwort
                              0
                              • StM47S Offline
                                StM47S Offline
                                StM47
                                schrieb am zuletzt editiert von
                                #64

                                Bekomme bei einem Xiaomi Temperatur Sensor keine Werte bei Batterie und Spannung angezeigt.
                                Ist das Teil defekt oder die Batterie leer?

                                Der Sensor ist ca. 5 Wochen alt.

                                Bildschirmfoto 2019-03-26 um 16.08.50.png

                                ioBroker im Docker auf Synology DiskStation DS 716+II mit DSM 6.2.1

                                • Lightmanager Air / Lupusec XT2 Plus mit div. Fenster- u. Türkontakten, Rauch- u. Bewegungsmelder / Harmony Hub / Fritzbox 7590 OS7
                                • schaltbare Steckdosen / Alexa Echo Dot 3 / Zigbee USB Stick / diverse Xiaomi Produkte / Xiaomi Yeelight Birnen
                                1 Antwort Letzte Antwort
                                0
                                • MyzerATM Offline
                                  MyzerATM Offline
                                  MyzerAT
                                  schrieb am zuletzt editiert von
                                  #65

                                  hast du ihn erst angelernt? wenn ja dauert das bis zu ein paar stunden!

                                  lg Rudi

                                  Master Debian 12 (Wien)
                                  Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

                                  Slave Debian 12. (TULLN) --> OpenVPN to Vienna
                                  Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

                                  Node 20.19.0
                                  Nodejs 20.19.0
                                  npm 10.8.2
                                  js-controller 7.0.6

                                  1 Antwort Letzte Antwort
                                  0
                                  • StM47S Offline
                                    StM47S Offline
                                    StM47
                                    schrieb am zuletzt editiert von
                                    #66

                                    Ja habe ich.
                                    Die Anderen, welche ich gleichzeitig angelernt habe, liefern aber direkt die Daten

                                    ioBroker im Docker auf Synology DiskStation DS 716+II mit DSM 6.2.1

                                    • Lightmanager Air / Lupusec XT2 Plus mit div. Fenster- u. Türkontakten, Rauch- u. Bewegungsmelder / Harmony Hub / Fritzbox 7590 OS7
                                    • schaltbare Steckdosen / Alexa Echo Dot 3 / Zigbee USB Stick / diverse Xiaomi Produkte / Xiaomi Yeelight Birnen
                                    1 Antwort Letzte Antwort
                                    0
                                    • MyzerATM Offline
                                      MyzerATM Offline
                                      MyzerAT
                                      schrieb am zuletzt editiert von MyzerAT
                                      #67

                                      die Temp und Feuchtigkeit liefert er ja, hauch ihn an , dann siehst ja eh ob er reagiert, Status der Batterie kann dennoch ewig dauern!

                                      lg Rudi

                                      Master Debian 12 (Wien)
                                      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8. 7. als VM

                                      Slave Debian 12. (TULLN) --> OpenVPN to Vienna
                                      Intel NUC6CAYH 16GB RAM, 500 GB SSD & auf Proxmox 8.7. als VM

                                      Node 20.19.0
                                      Nodejs 20.19.0
                                      npm 10.8.2
                                      js-controller 7.0.6

                                      1 Antwort Letzte Antwort
                                      0
                                      • StM47S Offline
                                        StM47S Offline
                                        StM47
                                        schrieb am zuletzt editiert von
                                        #68

                                        Ok! Danke erstmal. Werde ich beobachten.

                                        ioBroker im Docker auf Synology DiskStation DS 716+II mit DSM 6.2.1

                                        • Lightmanager Air / Lupusec XT2 Plus mit div. Fenster- u. Türkontakten, Rauch- u. Bewegungsmelder / Harmony Hub / Fritzbox 7590 OS7
                                        • schaltbare Steckdosen / Alexa Echo Dot 3 / Zigbee USB Stick / diverse Xiaomi Produkte / Xiaomi Yeelight Birnen
                                        1 Antwort Letzte Antwort
                                        0
                                        • P Offline
                                          P Offline
                                          passuff
                                          schrieb am zuletzt editiert von passuff
                                          #69

                                          Wollte jetzt den Raumnamen entfernen aber irgendwie habe ich das skript zerschossen:

                                          const idVis = 'Batterie.HomematicBatterietausch';
                                          const batt = $('hm-rpc.0.*.LOWBAT');
                                           
                                          createState(idVis, '', {type: 'string'});
                                           
                                          function lowBatt() {
                                          	console.log('lowbat Homematic wird ausgeführt');
                                              var low = [];
                                              batt.each(function (id, i) {
                                          	if(getState(id).val == true) {
                                          			id = id.split('.');
                                          			id = 'hm-rpc.0.' + id[2];
                                                      low.push(getObject(id).common.name); // Kanal-Name: Raum
                                              }
                                                   	
                                          	});
                                          	setState(idVis, low.join(','), true);		
                                          }
                                          
                                          
                                          schedule('*/5 * * * * *', lowBatt); // jeden Tag 
                                          //schedule('{"time":{"exactTime":true,"start":"18:00"},"period":{"days":1}}', lowBatt)
                                           
                                           
                                           
                                          

                                          Folgendes Warn im Log:

                                          javascript.0 2019-08-04 21:53:45.008 warn at Timer.processTimers (timers.js:223:10)
                                          javascript.0 2019-08-04 21:53:45.008 warn at listOnTimeout (timers.js:263:5)
                                          javascript.0 2019-08-04 21:53:45.008 warn at tryOnTimeout (timers.js:300:5)
                                          javascript.0 2019-08-04 21:53:45.007 warn at ontimeout (timers.js:436:11)
                                          javascript.0 2019-08-04 21:53:45.007 warn at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
                                          javascript.0 2019-08-04 21:53:45.007 warn at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
                                          javascript.0 2019-08-04 21:53:45.007 warn at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
                                          javascript.0 2019-08-04 21:53:45.007 warn at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1191:34)
                                          javascript.0 2019-08-04 21:53:45.007 warn at Object.lowBatt (script.js.common.Batteriestatus.Batteriestatus_Homematic:9:10)
                                          javascript.0 2019-08-04 21:53:45.007 warn at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:778:29)
                                          javascript.0 2019-08-04 21:53:45.006 warn at script.js.common.Batteriestatus.Batteriestatus_Homematic:10:5
                                          javascript.0 2019-08-04 21:53:45.004 warn getState "hm-rpc.0.PEQ0508233.0.LOWBAT" not found (3) states[id]=null
                                          javascript.0 2019-08-04 21:53:45.001 info script.js.common.Batteriestatus.Batteriestatus_Homematic: lowbat Homematic wird ausgeführt

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          398

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe