NEWS
Gelöst: Anzahl der Zigbee Geräte ermitteln
-
Hallo
ich möchte gerne ohne zusätzliche Adapter die Anzahl meiner Zigbee Geräte ermitteln, habe folgenden Ansatz:const ids = $("zigbee.0.*.available"); const idCnt = "0_userdata.0.System.Zigbee.Geräte0_On"; schedule("*/1 * * * *", function () { function cntzig0() { let cnt = 0; ids.each(function (id, i) { if (getState(id).val == 'true') cnt++; }); setState(idCnt, cnt, true); log(cnt) } cntzig0(); // Skriptstart ids.on(cntzig0); });
Leider klappt das nicht.
Gruß
Michael -
@michihorn sagte: Leider klappt das nicht.
Ändere Zeile 8 in
if (getState(id).val) cnt++;
Die Datenpunkte "available" enthalten sicherlich keinen String.
... und lass schedule() weg (lösche Zeilen 4 und 15).const ids = $("zigbee.0.*.available"); const idCnt = "0_userdata.0.System.Zigbee.Geräte0_On"; function cntzig0() { let cnt = 0; ids.each(function (id, i) { if (getState(id).val) cnt++; }); setState(idCnt, cnt, true); log(cnt); } cntzig0(); // Skriptstart ids.on(cntzig0);
-
@paul53 Wie kann ich denn jetzt noch die nicht erreichbaren Geräte ermitteln?
-
@michihorn sagte: die nicht erreichbaren Geräte ermitteln?
Dein (korrigiertes) Skript ermittelt nur die erreichbaren Geräte.
-
@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?
-