NEWS
Objekt in Array und über Schleife auslesen...geht nicht!?
-
Hi,
ich möchte im Falle von meiner Abwesenheit alle Fensterkontakte prüfen und mir ggf. eine Nachricht schicken.
Damit das Ganze "elegant" wird, möchte ich mit einer Liste/Array in einer Schleife arbeiten.Liste also mit den Objekten aufgebaut und über Schleife den Wert versucht auszulesen...funzt irgendwie nicht...
Aufbau:
Java Script:
var ObjektListe, FensterOffen, Meldungstext, i; // Wenn Handy nicht mehr im WLAN ist, Fensterkontakte prüfen und ggf. Telegramm schicken on({ id: [].concat(['alias.0.presence.HandyMichael']), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; ObjektListe = [getObject('openknx.0.Logik.Binär.EG_Flur_Haustür'), getObject('openknx.0.Logik.Binär.EG_Flur_Fenster'), getObject('openknx.0.Logik.Binär.EG_HWR_Fenster'), getObject('openknx.0.Logik.Binär.EG_WZ_Fenster_Garten'), getObject('openknx.0.Logik.Binär.EG_Essen_Tür_Garten'), getObject('openknx.0.Logik.Binär.EG_Küche_Fenster'), getObject('openknx.0.Logik.Binär.EG_WC_Fenster'), getObject('openknx.0.Logik.Binär.OG_Büro_DFF'), getObject('openknx.0.Logik.Binär.OG_Büro_Fenster'), getObject('openknx.0.Logik.Binär.OG_Bad_Fenster'), getObject('openknx.0.Logik.Binär.OG_Bad_DFF'), getObject('openknx.0.Logik.Binär.OG_SZ_DFF'), getObject('openknx.0.Logik.Binär.OG_SZ_Fenster'), getObject('openknx.0.Logik.Binär.OG_Gast_Fenster'), getObject('openknx.0.Logik.Binär.GA_Tür_Garten')]; FensterOffen = 0; Meldungstext = 'ACHTUNG: Tür/Fenster offen'; if (!getState('alias.0.presence.HandyMichael').val) { for (var i_index in ObjektListe) { i = ObjektListe[i_index]; console.log((await getObjectAsync((ObjektListe[(i - 1)]))).common.name); if (getState((ObjektListe[(i - 1)])).val) { FensterOffen = (typeof FensterOffen === 'number' ? FensterOffen : 0) + 1; Meldungstext += '\r\n'; Meldungstext += String((await getObjectAsync((ObjektListe[(i - 1)]))).common.name); } } }
MOD-EDIT: Code in code-tags gesetzt!
-
@mdorf Nicht das Object nehmen, sondern die ObjectID
-
@mdorf Hättest Du die Code-Tags für das Listing genommen, wäre es einfacher gewesen, Zeile 14 Spalte 66 aufzufinden - da trat der Fehler auf ...
Ich vermute nach Zählen der Zeilen, es ist dieses Statement hier
if (getState((ObjektListe[(i - 1)])).val) {
.
-
Oh Mann...natürlich!!!
Ich spreche unten alles über die ObjektID an, also muss das Array auch die ID's enthalten.
Manchmal sieht man den Wald vor lauter Bäumen nicht...Danke euch!