NEWS
[gelöst] Überwachung Fensterkontakte (zigbee) per Javascript 4.0.5 funktioniert nicht mehr
-
Hallo Paul,
erstmal vielen Dank für deine Hilfe. Bei mir funktioniert der obere Teil noch nicht so ganz. Ist da ein Fehler im Javascript 4.0.5 Adapter?
Dann sollte man doch den Fehler melden, oder?
Folgendes Skript führe ich auf Anforderung aus:
`const sensor = getObject('enum.functions.sensors').common.members; sendTo('telegram.0', { text: 'BlaBla' }); for(let i = 0; i < sensor.length; i++) { var name = getObject(sensor[i]).common.name; on(sensor[i] + '.voltage', function (dp) { if(dp.state.val <= 4.8) { sendTo('telegram.0', { text: 'Die Batterie vom Sensor ' + name + ' neigt sich dem Ende zu. Die aktuelle Spannung beträgt ' + dp.state.val + ' V.' }); } }); }` Effekt: BlaBla schreibt er noch, aber bzgl. des Batterie-Anzeige wird nichts generiert. Ich habe mal den Value auf 4.8 hochgesetzt. Das sollte bei allen meinen Zigbee-Devices gelten, aber nichts passiert. Kann man vielleicht nur den Javascript-Adapter auf die ältere Version downgraden, ohne Probleme zu erwarten? Zumindestens bis das Problem behoben ist?[/i][/i] -
Hallo zusammen,
vielen Dank nochmal an Paul. Er hat mir mit seinen Hinweisen zum Ziel geleitet.
Hier das fertige Skript. Es läuft unter dem Javascript 4.0.5 Adapter:
`const sensor = getObject('enum.functions.sensors').common.members; for(let i = 0; i < sensor.length; i++) { var name = getObject(sensor[i]).common.name; on(sensor[i] + '.battery', function (dp) { if(dp.state.val <= 20) { var name = getObject(sensor[i]).common.name; sendTo('telegram.0', { text: 'Die Batterie vom Sensor '+ name +' neigt sich dem Ende zu. Aktuell noch ' + dp.state.val + '% Batterie.' }); } }); on(sensor[i] + '.voltage', function (dp) { if(dp.state.val <= 2.8) { var name = getObject(sensor[i]).common.name; sendTo('telegram.0', { text: 'Die Batterie vom Sensor ' + name + ' neigt sich dem Ende zu. Die aktuelle Spannung beträgt ' + dp.state.val + 'V.' }); } }); on(sensor[i] + '.opened', function (dp) { if(dp.state.val == true) { var name = getObject(sensor[i]).common.name; var id = getObject(sensor[i])._id; var idkurz = id.split('.')[2]; createState('isopen.'+idkurz, true, { read: true, write: true, desc: name, type: "boolean", def: false }); } if(dp.state.val == false) { var name = getObject(sensor[i]).common.name; var id = getObject(sensor[i])._id; var idkurz = id.split('.')[2]; deleteState('isopen.'+idkurz); } }); }` Ich setze den Thread auf gelöst.[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i] -
Habe auf Version 4.0.5 hochgezogen und getestet (Gewerk "batterie" zwei Geräten zugeordnet).
$('device[state.id=*.state](functions=batterie)');funktioniert nicht.
const rm = $('*.state(functions=batterie)'); rm.each(function(id, i) { log(id); });funktioniert erst nach Neustart (Javascript / ioBroker).
19:50:11.243 info javascript.1 script.js.common.Test3: zigbee.0.002.state 19:50:11.243 info javascript.1 script.js.common.Test3: zigbee.0.003.state ```` `Also stimmst du mir zu, das die enum funktionen sich nicht so verhalten wie sie sollten?
Was ist jetzt die Ursache?
Sollte man das bei github als issue melden? Bei Zigbee oder javascript?
-
Sollte man das bei github als issue melden? Bei Zigbee oder javascript? `
Ja, bei Javascript.