NEWS
Script für autom. Benachrichtigung bei low Batteriestand
-
Hi, ich habe viele Xiaomi Sensoren über Zigbee eingebunden.
Diese werden ja über eine CR2032 Batterie betrieben, welche auch irgendwann mal ausgetauscht werden muss.
Damit ich rechtzeitig bemerke, habe ich mir ein Script gebaut das den Batteriestand überwacht und bei <=20% eine E-Mail an mich versendet.
Ich habe im Moment 14 Sensoren eingebunden, es werden aber demnächst noch mal ca.16 Stück dazukommen.
Für jedes Gerät habe ich ein "eigenes Script laufen".
Es funktioniert zwar wunderbar, aber das geht doch bestimmt auch etwas übersichtlicher vom Code her oder?on({id: 'zigbee.0.00158d000421e240.battery', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("zigbee.0.00158d000421e240.battery").val <= 20) { sendTo("email", "send", { text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.', to: 'xxx@t-online.de', subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.' }); } }); on({id: 'zigbee.0.00158d0004445915.battery', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("zigbee.0.00158d0004445915.battery").val <= 20) { sendTo("email", "send", { text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.', to: 'xxx@t-online.de', subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.' }); } });
-
Hi, ich habe viele Xiaomi Sensoren über Zigbee eingebunden.
Diese werden ja über eine CR2032 Batterie betrieben, welche auch irgendwann mal ausgetauscht werden muss.
Damit ich rechtzeitig bemerke, habe ich mir ein Script gebaut das den Batteriestand überwacht und bei <=20% eine E-Mail an mich versendet.
Ich habe im Moment 14 Sensoren eingebunden, es werden aber demnächst noch mal ca.16 Stück dazukommen.
Für jedes Gerät habe ich ein "eigenes Script laufen".
Es funktioniert zwar wunderbar, aber das geht doch bestimmt auch etwas übersichtlicher vom Code her oder?on({id: 'zigbee.0.00158d000421e240.battery', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("zigbee.0.00158d000421e240.battery").val <= 20) { sendTo("email", "send", { text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.', to: 'xxx@t-online.de', subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.' }); } }); on({id: 'zigbee.0.00158d0004445915.battery', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("zigbee.0.00158d0004445915.battery").val <= 20) { sendTo("email", "send", { text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.', to: 'xxx@t-online.de', subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.' }); } });
-
Hi, ich habe viele Xiaomi Sensoren über Zigbee eingebunden.
Diese werden ja über eine CR2032 Batterie betrieben, welche auch irgendwann mal ausgetauscht werden muss.
Damit ich rechtzeitig bemerke, habe ich mir ein Script gebaut das den Batteriestand überwacht und bei <=20% eine E-Mail an mich versendet.
Ich habe im Moment 14 Sensoren eingebunden, es werden aber demnächst noch mal ca.16 Stück dazukommen.
Für jedes Gerät habe ich ein "eigenes Script laufen".
Es funktioniert zwar wunderbar, aber das geht doch bestimmt auch etwas übersichtlicher vom Code her oder?on({id: 'zigbee.0.00158d000421e240.battery', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("zigbee.0.00158d000421e240.battery").val <= 20) { sendTo("email", "send", { text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.', to: 'xxx@t-online.de', subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.' }); } }); on({id: 'zigbee.0.00158d0004445915.battery', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("zigbee.0.00158d0004445915.battery").val <= 20) { sendTo("email", "send", { text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.', to: 'xxx@t-online.de', subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.' }); } });
@Atifan sagte:
das geht doch bestimmt auch etwas übersichtlicher vom Code her oder?
Ja.
const ids = $('zigbee.0.*.battery'); ids.on(function(dp) { if (dp.state.val <= 20 && dp.oldState.val > 20) { sendTo("email", "send", { text: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer: ' + dp.id, to: 'xxx@t-online.de', subject: 'Batterien bei Zigbee-Geräten prüfen, eine Batterie ist fast leer.' }); } }); -
@Atifan Mit Aqara Sensoren habe ich das in Blockly so gemacht

Die Trigger Liste wird mit Deinen >30 Sensoren dabei zwar sehr lang, aber ich wüsste nicht, wie man die Lösung von paul53 in Blockly realisieren könnte. Da musst Du dann im JS Code Hand anlegen. -
@Atifan Mit Aqara Sensoren habe ich das in Blockly so gemacht

Die Trigger Liste wird mit Deinen >30 Sensoren dabei zwar sehr lang, aber ich wüsste nicht, wie man die Lösung von paul53 in Blockly realisieren könnte. Da musst Du dann im JS Code Hand anlegen. -
@paul53 ach das ist ja cool. Und auf regexp kann man triggern?
Kann man womöglich auf alle System Bausteine triggern, die sich an dem Trigger andocken lassen? -
@paul53 ach das ist ja cool. Und auf regexp kann man triggern?
Kann man womöglich auf alle System Bausteine triggern, die sich an dem Trigger andocken lassen? -
@Atifan Mit Aqara Sensoren habe ich das in Blockly so gemacht

Die Trigger Liste wird mit Deinen >30 Sensoren dabei zwar sehr lang, aber ich wüsste nicht, wie man die Lösung von paul53 in Blockly realisieren könnte. Da musst Du dann im JS Code Hand anlegen.@buggybeast sagte in Script für autom. Benachrichtigung bei low Batteriestand:
@Atifan Mit Aqara Sensoren habe ich das in Blockly so gemacht

Die Trigger Liste wird mit Deinen >30 Sensoren dabei zwar sehr lang, aber ich wüsste nicht, wie man die Lösung von paul53 in Blockly realisieren könnte. Da musst Du dann im JS Code Hand anlegen.Bei mir funktioniert das Script so nicht, worauf bezieht sich denn deine Variable "Wert" ?
-
@buggybeast sagte in Script für autom. Benachrichtigung bei low Batteriestand:
@Atifan Mit Aqara Sensoren habe ich das in Blockly so gemacht

Die Trigger Liste wird mit Deinen >30 Sensoren dabei zwar sehr lang, aber ich wüsste nicht, wie man die Lösung von paul53 in Blockly realisieren könnte. Da musst Du dann im JS Code Hand anlegen.Bei mir funktioniert das Script so nicht, worauf bezieht sich denn deine Variable "Wert" ?
-
Super vielen Dank! Jetzt funktioniert es :) Und sieht gleich viel übersichtlicher aus als meine 14x bzw. später 30x Blöcke.

-
@Atifan außerdem würde ich auf „wurde geändert“ prüfen. Zumindest meine Aqara Sensoren aktualisieren sich alle paar Sekunden, dann würde dein Skript auch alle paar Sekunden einmal kurz laufen, auch wenn keine Nachricht versendet wird.
Das ist unnötig. -
Hi, ja ich weiß :D Effizienter wäre es mit "geändert". Ich nutze aber absichtlich irgendwie lieber "aktualisiert". Klar wird viel öfter getriggert, aber mein NUC langweilt sich sowieso.
Ich möchte damit einfach vermeiden, dass aufgrund von ungünstigen Konstellationen evtl. mal nicht getriggert wird :) Wie gesagt effizienter wäre es anders :)
Und ich hab versucht bei "Wert" und "Name" ohne in String zu konvertieren, dann funktioniert das Script irgendwie nicht.

