NEWS
Script Xiaomi Battery leer ?
-
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 -
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 !?
-
@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... -
@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... -
Nein, wie gesagt das Gerät ist eine Steckdose. Diese hat keine Batterie und daher auch keinen Batteriestatus...
-
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.
-
@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.
-
@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...@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...
-
@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..
-
Ich habe auch keine leere Batterie. Dennoch habe ich im erzeugten Datenpunkt alle HM Geräte gelistet..
-
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 -
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);
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden



