Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script Xiaomi Battery leer ?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    UNSOLVED Script Xiaomi Battery leer ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Neuschwansteini
      Neuschwansteini @karstent last edited by

      @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 Reply Last reply Reply Quote 0
      • iomountain
        iomountain last edited by

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

        1 Reply Last reply Reply Quote 0
        • P
          passuff @Neuschwansteini last edited by 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?

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @passuff last edited by

            @passuff

            var raum = getObject(id, 'rooms').enumNames.join(', ');
            
            P 1 Reply Last reply Reply Quote 1
            • P
              passuff @paul53 last edited by

              @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.

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @passuff last edited by

                @passuff sagte:

                Wo muss das hin?

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

                P 1 Reply Last reply Reply Quote 0
                • P
                  passuff @paul53 last edited by

                  @paul53 Kanalname + Raum wäre super

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @passuff last edited by 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 1 Reply Last reply Reply Quote 0
                    • P
                      passuff @paul53 last edited by

                      @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 Reply Last reply Reply Quote 0
                      • StM47
                        StM47 last edited by

                        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

                        1 Reply Last reply Reply Quote 0
                        • MyzerAT
                          MyzerAT last edited by

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

                          1 Reply Last reply Reply Quote 0
                          • StM47
                            StM47 last edited by

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

                            1 Reply Last reply Reply Quote 0
                            • MyzerAT
                              MyzerAT last edited by MyzerAT

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

                              1 Reply Last reply Reply Quote 0
                              • StM47
                                StM47 last edited by

                                Ok! Danke erstmal. Werde ich beobachten.

                                1 Reply Last reply Reply Quote 0
                                • P
                                  passuff last edited by passuff

                                  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

                                  Glasfaser paul53 2 Replies Last reply Reply Quote 0
                                  • Glasfaser
                                    Glasfaser @passuff last edited by Glasfaser

                                    @passuff sagte in Script Xiaomi Battery leer ?:

                                    …………………….> javascript.0 2019-08-04 21:53:45.004 warn getState "hm-rpc.0.PEQ0508233.0.LOWBAT" not found (3) states[id]=null
                                    ………………….

                                    Dein Skript macht kein Fehler .

                                    Da ist ein Fehler im Datenpunkt hm-rpc.0.PEQ0508233.0.LOWBAT not found (3) states[id]=null

                                    Schau mal nach ob da ein Wert vorhanden ist !?

                                    P 1 Reply Last reply Reply Quote 0
                                    • P
                                      passuff @Glasfaser last edited by

                                      @Glasfaser
                                      Der Datenpunkt ist ein Homematic Schaltaktor. Der hat, wie andere Geräte auch, keinen Batteriestatus. Warum stört sich das Skript daran?
                                      Darüber hinaus funktioniert die Bedingung ( == true) nicht. Es werden schlussendlich alle Homematicgeräte mit LOWBAT gelistet, auch die die false sind...

                                      Glasfaser P 2 Replies Last reply Reply Quote 0
                                      • Glasfaser
                                        Glasfaser @passuff last edited by

                                        @passuff

                                        Sieht es nicht bei dir so aus !?

                                        www.JPG

                                        P 1 Reply Last reply Reply Quote 0
                                        • P
                                          passuff @Glasfaser last edited by

                                          @Glasfaser

                                          Nein, wie gesagt das Gerät ist eine Steckdose. Diese hat keine Batterie und daher auch keinen Batteriestatus...

                                          Glasfaser 1 Reply Last reply Reply Quote 0
                                          • Glasfaser
                                            Glasfaser @passuff last edited by

                                            @passuff

                                            Sorry ...mit der Angabe " Homematic Schaltaktor " konnte ich leider nicht erlesen , das es sich um eine Steckdose handelt .

                                            Glasfaser 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            812
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            19
                                            93
                                            8829
                                            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