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.
    • MyzerAT
      MyzerAT last edited by

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

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

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

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

          iomountain 1 Reply Last reply Reply Quote 1
          • iomountain
            iomountain @karstent last edited by

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

            1 Reply Last reply Reply Quote 0
            • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            860
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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