NEWS
Gelöst: Bluetooth Geräte zählen
-
Hallo, möchte gerne die Bluetooth Geräte zählen, die mir der tr-064 Adatper unter Devices als "true" kennzeichnet.
Ich habe dazu ein Script von Paul gefunden und versucht es abzuwandeln. Leider klappt es nicht.const ids = $('tr-064.*.devices'); const idCnt='0_userdata.0.Haus.AW.EnteredBt' //*****FUNKTION ENTERED******************************************/ function cntBt() { let cnt = 0; ids.each(function (id, i) { if (getState(id).val == true) cnt++; }); setState(idCnt, cnt, true); log(cnt); } cntBt(); // Skriptstart ids.on(cntBt);
Benötige mal Hilfe
Gruß
Michael -
Das Script sieht doch ok aus.
Was klappt jetzt nicht ? -
@bahnuhr Eigentlich war mein Verständnis, sofern eines der gelisteten Geräte "true" wird, werden alle Geräte die "true" sind gezählt und in einen Datenpunkt geschrieben, dass passiert aber nicht und ja, der DP hat die Eigenschaft "number"
-
@michihorn sagte in Bluetooth Geräte zählen:
@bahnuhr Eigentlich war mein Verständnis, sofern eines der gelisteten Geräte "true" wird, werden alle Geräte die "true" sind gezählt und in einen Datenpunkt geschrieben, dass passiert aber nicht und ja, der DP hat die Eigenschaft "number"
Nein, das Script startet 1x bei Aktivierung des Scriptes.
Das was du willst musst du mit on machen. -
@bahnuhr Auch beim Start wird nix gezählt
-
@michihorn sagte in Bluetooth Geräte zählen:
@bahnuhr Auch beim Start wird nix gezählt
Na, dann steht dort halt nix drin.
Mach doch mal einen Screenshot der DP
-
@bahnuhr
so sieht tr-064 aus:
so sieht 0_userdata aus:
-
@michihorn sagte: Leider klappt es nicht.
Stimmt der Selektor? Überprüfe es:
const ids = $('tr-064.*.devices'); const idCnt='0_userdata.0.Haus.AW.EnteredBt' log(ids);
-
@michihorn sagte: so sieht tr-064 aus:
Dann passt der Selektor nicht. Welche Datenpunkte sind die richtigen unter den Kanälen?
-
@paul53 Tatsächlich stimmte der Selector nicht ganz
const ids = $('tr-064.0.devices');
hatte die Instance vergessen, trotzdem läuft es nicht
Überprüfen möchte ich:
tr-064.0.devices.IPhone-Noel tr-064.0.devices.S20-FE-von-Heike tr-064.0.devices.S20-FE-von-Michael
-
@michihorn sagte: hatte die Instance vergessen
Das genügt nicht, denn so werden keine Datenpunkte gefunden.
@paul53 sagte in Bluetooth Geräte zählen:
Welche Datenpunkte sind die richtigen unter den Kanälen?
-
@paul53 Überprüfen möchte ich:
tr-064.0.devices.IPhone-Noel tr-064.0.devices.S20-FE-von-Heike tr-064.0.devices.S20-FE-von-Michael
-
@michihorn sagte: Überprüfen möchte ich:
const ids = $('tr-064.0.devices.*');
Da die Datenpunkte Ordner sind, werden noch weitere Datenpunkt (unterhalb der Ordner) selektiert. Das kann ein Problem sein.
-
@paul53 sagte in Bluetooth Geräte zählen:
const ids = $('tr-064.0.devices.*');
-
@paul53 ja stimmt, ich will nur die 3 Geräte ermitteln, nun wird mir die 6 ermittelt
Also würde ich nun, da der Vorgang ja statisch ist und immer nur diese 3 Ordner umfasst, dass Script soweit abwandeln:
const ids = $('tr-064.0.devices.*'); const idCnt='0_userdata.0.Haus.AW.EnteredBt' //*****FUNKTION ENTERED******************************************/ function cntBt() { let cnt = 0; ids.each(function (id, i) { if (getState(id).val == true) cnt++; }); setState(idCnt, cnt-3, true); log(cnt-3); } cntBt(); // Skriptstart ids.on(cntBt);
Zumindest das Ergebnis passt
Bei jeder Veränderung der DP löst das Script aus, tut was es soll. Erstmal Danke an Paul53 und Bahnuhr -
@michihorn sagte: Zumindest das Ergebnis passt
Ist der Wert der Datenpunkte unterhalb der Ordner immer true? Was sind das für Datenpunkte?
-
@paul53
JA sobald ACTIVE true ist, ist auch das Verzeichnis true
-
@michihorn sagte: sobald ACTIVE true ist, ist auch das Verzeichnis true
Dann beschränke den Selektor auf "active".
const ids = $('tr-064.0.devices.*.active');
-
@paul53 sagte in Gelöst: Bluetooth Geräte zählen:
const ids = $('tr-064.0.devices.*.active');
Paul...Du bist der Beste. Danke für Deine Unterstützung