NEWS
UNSOLVED Script Xiaomi Battery leer ?
-
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... -
Sieht es nicht bei dir so aus !?
-
Nein, wie gesagt das Gerät ist eine Steckdose. Diese hat keine Batterie und daher auch keinen Batteriestatus...
-
Sorry ...mit der Angabe " Homematic Schaltaktor " konnte ich leider nicht erlesen , das es sich um eine Steckdose handelt .
-
-
@Glasfaser
Muss mich entschuldigen. Ich habe mich im Gerät geirrt. Du hattest völlig recht:Scheint als hat de Fernbedienung keinen Empfang und sendet daher weder true noch false.
-
Richtig … kein Empfang ….
-
@passuff sagte in Script Xiaomi Battery leer ?:
Darüber hinaus funktioniert die Bedingung ( == true) nicht. Es werden schlussendlich alle Homematicgeräte mit LOWBAT gelistet, auch die die false sind...
Das erschließt sich mir allerdings immer noch nicht...
-
Kann leider nicht testen , da ich gerade keine leere Batterie habe , aber dein Script läuft ohne Fehler bei mir im LOG .
-
Ich habe auch keine leere Batterie. Dennoch habe ich im erzeugten Datenpunkt alle HM Geräte gelistet..
-
Habe mal den Wert Lowbat händisch auf true gesetzt .
Und die gleiche Fehlermeldungen wie bei Dir !!! -
@passuff sagte:
warn getState "hm-rpc.0.PEQ0508233.0.LOWBAT" not found (3) states[id]=null
Anscheinend hat das Objekt noch keinen Zustand ? Dann gib mal manuell den Wert false ein.
-
Das führt lediglich dazu, dass die Fehlermeldungen verschwinden. Die Bedingung wird immer noch falsch ausgewertet bzw alle Sensoren werden als lowbat = true erkannt.
-
@passuff sagte:
alle Sensoren werden als lowbat = true erkannt.
Wie sieht das Log aus, wenn in Zeile 10 ein zusätzliches Log eingefügt wird ?
batt.each(function (id, i) { log(id + ': ' + getState(id).val);
-
@paul53 sagte in Script Xiaomi Battery leer ?:
log(id + ': ' + getState(id).val);
"23:57:50.014 info javascript.0 script.js.common.Batteriestatus.Batteriestatus_Homematic: hm-rpc.0.OEQ0708741.0.LOWBAT: true"