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!
-
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!
-
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 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) {.
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

