Hi,
ich kann bestätigen, dass batteriebetriebene Sensoren hier anders reagieren als Sensoren mit Netzanbindung.
Einer meiner Schalter die am Netz hängen wechseln available auf FALSE wenn man ihnen den saft abdreht.
Batteriesensoren bleiben auf dem letzten Wert.
Ich hatte nun versucht den Zeitstempel von "available" auszulesen. Aber batteriebetriebene Werte verbleiben heir auch auf dem Zeitpunkt wann er zuletzt Online gegangen ist. Die anderen States wie "click" oder "temp" etc bekommen natürlich ständig neue Werte.
Das wäre schön gewesen, da "available" die einzige Gemeinsamkeit ist, die alle Zigbeesensoren haben. Denn mein script parst mit einer vor schleife durch das Array der Zigbeesensoren.
Stündlich
var text='Zigbee Offline Sensor(s): ';
var cnt = 0;
setState("javascript.0.Alerts.SensorOffline",false); //reset before testing
for (var i = 0; i < arrayLength; i++) { // for every array object
var name;
//wenn ein sensor false wird und vorher true war dann setze eine meldung ab
if (getState(sensor_array[i]+".available").val===false && sensorstate_array[i] === true){
name = getObject(sensor_array[i]).common.name;
text = text+name;
cnt++;
if (cnt > 1) {
text = text+", ";
}
setState("javascript.0.Alerts.SensorOffline", true);
}
sensorstate_array[i] = getState(sensor_array[i]+".available").val;
/* auskommentiert weil jetzt .available verfügbar ist
var then;
var now;
var result;
//berechnen der einzelnen differenzen
now = new Date().getTime();
then = getDateObject(getState(sensor_array[i]+".link_quality").ts).getTime();
result = now - then;
if ((new Date().getTime() - getDateObject(getState(sensor_array[i]+".link_quality").ts).getTime()) > 14400000) { //if answer is older than 4 hours
//console.log('Eingeschlafen :'+sensor_array[i]+" - "+result);
name = getObject(sensor_array[i]).common.name
setState("javascript.0.Logbuch.LogText", 'Sensor '+name+' ist eingeschlafen');
setState("javascript.0.Alerts.SensorOffline", true);
}
*/
}