NEWS
[Script] Geräte zählen/Namen auslesen - Problem mit if/else
-
Hallo,
ich habe aus einigen Beispielen hier im Forum ein Script gebastelt was meine Steckdosen zählt.
Es funktioniert auch soweitIch möchte das Script allerdings noch etwas erweitern...
Generell liest mir das Script als Namen der Steckdose den Namen des übergeordneten Datenpunkts aus (sonst würde die alle switch_1 heißen). Soweit gutIch habe aber noch eine Steckdosenleiste im Einsatz. Für dieses Device möchte ich das als Name der Steckdose nicht der Name des übergeordneten Datenpunkts ausgelesen wird, sondern der Name des Datenpunkts selbst.
Ich dachte mir ich könnte das ganz schlicht mit If und else lösen...
Aber bekomme das nicht so richtig hin..
Jetzt nimmt er immer den Namen des Datenpunktes selbst (also meine if Anweisung funktioniert nicht, oder besser gesagt das else) und nicht nur wenn die angegebene DeviceID übereinstimmt...Mag mir da jemand helfen bitte?
function checkSteckdosenOst(id,i) { var obj = getObject(id); var idDev = id.substring(0, id.lastIndexOf('.')); // Zugriff auf übergeordneten Datenpunkt da der Name des Datenpunkts sonst "switch_1" heißen würde //var name = getObject(idDev).common.name; // liest den Namen des übergeordneten Datenpunkts aus var status = getState(id).val; // liest den Zustand aus (true / false) var raum = getObject(id, "rooms").enumNames[0]; log ('idDev: ' + idDev) if (status) { // wenn Zustand = true, dann wird die Anzahl der Steckdosen hochgezählt ++anzahlSteckdosenOstOn; // Name des Device bei "Steckdosenleiste" if (idDev = "meross.0.1909200726645190802148e1e9524b5f") { var name = getObject(id).common.name; // Name des Datenpunktes } else { var name = getObject(idDev).common.name; // Name des übergeordneten Datenpunkts } NameSteckdoseOstOn.push(name); // Zu Array hinzufügen if(textRaumOst.indexOf(raum) == -1) textRaumOst.push(raum); // zu Array hinzu, wenn noch nicht vorhanden } ++anzahlSteckdosenOst; // Zählt die Anzahl der vorhandenen Steckdosen im Ostflügel unabhängig vom Status }
-
@Mrs-B sagte:
if (idDev = "meross.0.1909200726645190802148e1e9524b5f") {
Ein einfaches = ist eine Zuweisung, kein Vergleich.
-
@paul53
Ah ok
Wieder was gelernt...Kannst du mir auch sagen wie dann ein Vergleich aussehen muss?
-
@Mrs-B sagte:
wie dann ein Vergleich aussehen muss?
if (idDev == "meross.0.1909200726645190802148e1e9524b5f") {
oder mit Typprüfung:
if (idDev === "meross.0.1909200726645190802148e1e9524b5f") {
-
Ganz lieben Dank!! Das == hat mir das gewünschte Ergebnis gebracht
Noch ne blöde Frage - Was bedeutet Typprüfung in dieser Hinsicht?
-
-
Nochmal ganz lieben Dank!!!