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 -
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); -
@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); -
@michihorn sagte: die nicht erreichbaren Geräte ermitteln?
Dein (korrigiertes) Skript ermittelt nur die erreichbaren Geräte.
-
@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
cntOffkann man auch die Differenz zur Gesamtanzahl verwenden:setState(idCntOff, ids.length - cntOn, true); -
@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
cntOffkann man auch die Differenz zur Gesamtanzahl verwenden:setState(idCntOff, ids.length - cntOn, true); -
@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 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" -
@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++; -
@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
idwird innerhalb der Schleife ids.each(id) übergeben. -
@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
idwird 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? -
@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.
-
@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.
-
@michihorn sagte: Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.
Direkt in der Ebene unter dem Gerät?
-
@michihorn sagte: Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.
Direkt in der Ebene unter dem Gerät?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
