NEWS
Gelöst: Anzahl der Zigbee Geräte ermitteln
-
@paul53 Ja ich weiß, ich möchte jetzt gerne noch über "available" das true oder false auswerten um die nicht erreichbaren Geräte separat zu zählen
-
@michihorn sagte: nicht erreichbaren Geräte separat zu zählen
const ids = $("zigbee.0.*.available"); const idCntOn = "0_userdata.0.System.Zigbee.Geräte0_On"; const idCntOff = "0_userdata.0.System.Zigbee.Geräte0_Off"; function cntzig0() { let cntOn = 0; let cntOff = 0; ids.each(function (id, i) { if (getState(id).val) cntOn++; else cntOff++ }); setState(idCntOn, cntOn, true); setState(idCntOff, cntOff, true); log('On: ' + cntOn + ', Off: ' + cntOff); } cntzig0(); // Skriptstart ids.on(cntzig0);
EDIT: Anstelle von
cntOff
kann man auch die Differenz zur Gesamtanzahl verwenden:setState(idCntOff, ids.length - cntOn, true);
-
@paul53 Danke Paul das klappt
-
@michihorn sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:
@paul53 Danke Paul das klappt
Hätte allerdings noch eine Bitte:
Wie kann ich die Anzahl der Tuya Geräte ermitteln, die im Common.Name "CAS_xxxxx" oder NL_xxxxx" enthalten?
So einfach geht es nicht.const ids = $("tuya.1.*.common.name"); const idCnt = "0_userdata.0.System.Tuya.CAS_Count"; function cnttuya() { let cnt = 0; ids.each(function (id, i) { if (getState(id).val == 'CAS*') cnt++; //if (getState(id).val) cnt++; }); setState(idCnt, cnt, true); log(cnt); } cnttuya(); // Skriptstart ids.on(cnttuya);
-
@michihorn sagte: im Common.Name "CAS_xxxxx" oder NL_xxxxx" enthalten?
const nameDp = getObject(id).common.name; if (nameDp.includes('CAS') || nameDp.includes('NL')) cnt++;
Der Selektor stimmt nicht!!
-
@paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:
const nameDp = getObject(id).common.name; if (nameDp.includes('CAS') || nameDp.includes('NL')) cnt++;
Ich möchte separat die Anzahl der Geräte mit CAS_xxx und ebenfalls separat die NL_Geräte ermitteln
Ich habe dazu DP angelegt:
"0_userdata.0.System.Tuya.CAS_Count" und
"0_userdata.0.System.Tuya.NL_Count" -
@michihorn sagte: separat die Anzahl der Geräte mit CAS_xxx und ebenfalls separat die NL_Geräte
const nameDp = getObject(id).common.name; if (nameDp.includes('CAS')) cntCAS++; if (nameDp.includes('NL')) cntNL++;
-
@paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:
const nameDp = getObject(id).common.name
Wie komme ich denn ie id? Muss ich nicht zunächst den Selector einrichten?
const ids = $("tuya.1.*.Common.Name"); -
@michihorn sagte: const ids = $("tuya.1.*.Common.Name");
Dieser Selektor ist mit großer Wahrscheinlichkeit falsch!
Zeige bitte mind. einen zu selektierenden Datenpunkt.@michihorn sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:
Wie komme ich denn ie id?
Die
id
wird innerhalb der Schleife ids.each(id) übergeben. -
@paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:
Dieser Selektor ist mit großer Wahrscheinlichkeit falsch!
-
@michihorn
Ich sehe keinen Datenpunkt, sondern nur Geräte!
Gibt es einen Datenpunkt, der zu jedem Tuya-Gerät existiert? -
@paul53 OK mein Fehler, ich will die Geräte zählen, ist wohl am einfachsten, und das separiert nach CAS_* und NL_*
-
@michihorn sagte: ich will die Geräte zählen
Dazu ist es zweckmäßig, im Selektor einen Datenpunkt(ID) anzugeben, der pro Gerät genau einmal existiert.
-
@paul53 Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.
-
@michihorn sagte: Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.
Direkt in der Ebene unter dem Gerät?
-
-
@michihorn
Versuche es so:const ids = $("tuya.1.*.online"); const idCAS = "0_userdata.0.System.Tuya.CAS_Count"; const idNL = "0_userdata.0.System.Tuya.NL_Count"; let cntCAS = 0; let cntNL = 0; ids.each(function(id) { id = id.substring(0, id.lastIndexOf('.')); const devName = getObject(id).common.name; if(devName.includes('CAS')) cntCAS++; if(devName.includes('NL')) cntNL++; }); setState(idCAS, cntCAS, true); setState(idNL, cntNL, true); log('CAS: ' + cntCAS + ', NL: ' + cntNL);
-
Ja Paul das funktioniert. Dankeschön