NEWS
UNSOLVED Script Xiaomi Battery leer ?
- 
					
					
					
					
 Ist das die Variable "Batterie.MiHomeBatterietausch"? Eine andere finde ich nicht. 
- 
					
					
					
					
 
- 
					
					
					
					
 @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. DankeIch 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. 
- 
					
					
					
					
 @karstent so sieht es bei mir aus: 
  
- 
					
					
					
					
 @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 StundeVielen 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: 
 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?
- 
					
					
					
					
 var raum = getObject(id, 'rooms').enumNames.join(', ');
- 
					
					
					
					
 @paul53 sagte in Script Xiaomi Battery leer ?: 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. 
- 
					
					
					
					
 @passuff sagte: Wo muss das hin? Wie willst Du die Räume anzeigen ? Zusammen mit dem Kanalnamen (davor / dahinter) oder getrennt ? 
- 
					
					
					
					
 @paul53 Kanalname + Raum wäre super 
- 
					
					
					
					
 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 }
- 
					
					
					
					
 @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! 
- 
					
					
					
					
 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.  
- 
					
					
					
					
 hast du ihn erst angelernt? wenn ja dauert das bis zu ein paar stunden! 
- 
					
					
					
					
 Ja habe ich. 
 Die Anderen, welche ich gleichzeitig angelernt habe, liefern aber direkt die Daten
- 
					
					
					
					
 die Temp und Feuchtigkeit liefert er ja, hauch ihn an , dann siehst ja eh ob er reagiert, Status der Batterie kann dennoch ewig dauern! 
- 
					
					
					
					
 Ok! Danke erstmal. Werde ich beobachten. 
- 
					
					
					
					
 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
- 
					
					
					
					
 @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 !? 
- 
					
					
					
					
 @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...
- 
					
					
					
					
 
 
		
	 
		
	 
			
		 
			
		 
			
		 
			
		 
			
			