NEWS
Ausnahmen Zigbeeüberwachung, Namensübermittlung
-
Liebes Forum!
Ich habe dank eurer Hilfe ein Zigbee-Statusüberwachungsskript zusammengestückelt, welches anhand der Überwachung vom Timestamp von link_quality als Datenpunkt wunderbar funktioniert.
Jedoch bestehen 2 kleine Probleme:-
Einerseits habe ich 2 Tradfri-Lampen die via Wandschalter auch immer wieder Stromlos gemacht werden, womit der Timestamp immer wieder auch älter sein kann. Diese Objekte möchte ich im Script ausnehmen. Habe dabei einfach an enum.functions.***** gedacht. Einfach alle zu überwachenden Geräte dort rein und dann eben die entsprechende Funktion überwachen. Leider funktioniert dies allerdings nicht und es werden mir dann mit der Skriptadaptierung im entsprechenden Funktionsordner ***** "0" Objekte angezeigt. Nach längerer Recherche, konnte ich das leider nicht hinbekommen.
-
Im erwähnten Script soll mir der Name der betroffenen Geräte ausgespuckt werden (nach Möglichkeit der vergebene Name wie zB TempsensorBad). Leider wird mir mit meinem Skript als Name immer nur "Link_Quality" übermittelt. Auch hier konnte ich leider keinen passenden Lösungsansatz finden.
Hat jemand von euch hier Ideen, wie ich das Lösen kann? Wäre euch sehr dankbar.
Hier mein Skript:createState('zigbeestatus.Anzahl_Geräte', 0, {type: 'number'}); createState('zigbeestatus.offline', 0, {type: 'number'}); createState('zigbeestatus.Gerät', " ", {type: 'string'}); const zigbee = $('zigbee.0*.link_quality'); const loggen = true; var arrOFFLINE; function offline(id){ var obj = getObject(id); arrOFFLINE.push(obj.common.name); if(loggen) log("Gerät: " + obj.common.name); } function countOffline() { var moeglicheOFFLINE = 0; arrOFFLINE =[]; zigbee.each(function (id, i){ if(Math.round((new Date() - new Date(getState(id).ts)) / 1000 / 60) > 60) offline(id); ++moeglicheOFFLINE; }); if(loggen) log("Text: "+arrOFFLINE.join(', ')); if(loggen) log("Anzahl Geräte: " + moeglicheOFFLINE + " // davon offline: " + arrOFFLINE.length); setState("zigbeestatus.Gerät", arrOFFLINE.join(',<br>')); setState("zigbeestatus.offline", arrOFFLINE.length); setState("zigbeestatus.Anzahl_Geräte", moeglicheOFFLINE); } countOffline();
zigbee.0*.link_quality hätte ich bei der enum-Variante zu enum.functions.ORDNERNAME.*.link_quality adaptiert. Leider ohne Erfolg.
Vielen Dank gleich,
Liebe Grüße
Sebastian -
-
@sebastian0010 sagte:
habe ich 2 Tradfri-Lampen die via Wandschalter auch immer wieder Stromlos gemacht werden
Die IDs der beiden Lampen kann man ausklammern (richtige IDs einsetzen).
if(id != 'idLampe1' && id != 'idLampe2' && (Date.now() - getState(id).ts) > 3600000) offline(id);
@sebastian0010 sagte in Ausnahmen Zigbeeüberwachung, Namensübermittlung:
als Name immer nur "Link_Quality" übermittelt
Wie sind die Namen (z.B. Temperatursensor Bad" zugeordnet ? Screenshot "Objekte" ?
Sind die Namen eine Ebene über den Datenpunkten zugeordnet, dann versuche es mal so:
function offline(id) { id = id.substring(0, id.lastIndexOf('.')); var name = getObject(id).common.name; arrOFFLINE.push(name); if(loggen) log("Gerät: " + name); }
-
Vielen Dank!
Genau damit hat es wunderbar funktioniert!
Aber rein interessehalber:
Weisst du, wie man statt unter zigbee.0 hier die objekte unter enum.functions.**** einpflegen könnte!Liebe Grüße und schönen Sonntag!