NEWS
Problem mit "Fenster offen Script"
-
Ich bin doch jetzt neuen script, da es mir einfacher ist:
const ids = Array.prototype.slice.apply($("(functions=window)")); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); });@werner2000x sagte in Problem mit "Fenster offen Script":
Ich bin doch jetzt neuen script:
Wir aber (noch) nicht.
Wir möchten erstmal Stück für Stück sehen, was da wie eingerichtet ist. -
Ich bin doch jetzt neuen script, da es mir einfacher ist:
const ids = Array.prototype.slice.apply($("(functions=window)")); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); });@werner2000x sagte in Problem mit "Fenster offen Script":
Ich bin doch jetzt neuen script:
sollst du aber nicht
-
Ich bin doch jetzt neuen script, da es mir einfacher ist:
const ids = Array.prototype.slice.apply($("(functions=window)")); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); });@werner2000x sagte: neuen script
Dann ergänze es durch Log-Ausgaben:
const ids = Array.prototype.slice.apply($("(functions=window)")); log(ids); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); log('Anzahl offen: ' + count); }); -
@werner2000x sagte: neuen script
Dann ergänze es durch Log-Ausgaben:
const ids = Array.prototype.slice.apply($("(functions=window)")); log(ids); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); log('Anzahl offen: ' + count); });@paul53 Hier der Log:
javascript.0 16:11:59.416 info script.js.Meine_Geräte.FensterOffenWarung: Anzahl offen: 3 -
@paul53 Hier der Log:
javascript.0 16:11:59.416 info script.js.Meine_Geräte.FensterOffenWarung: Anzahl offen: 3@werner2000x sagte: Hier der Log:
Wo ist der Log aus Zeile 2?
-
@werner2000x sagte: Hier der Log:
Wo ist der Log aus Zeile 2?
@paul53 Log aus 2. Zeile:
avascript.0 16:15:19.420 info script.js.Meine_Geräte.FensterOffenWarung: [ 'innogy-smarthome.0.Esszimmer.Fenstersensor-Esszimmer.Fenstersensor-Esszimmer.IsOpen', 'innogy-smarthome.0.Flur.Tür-und-Fenstersensor-1.Tür-und-Fenstersensor-1.IsOpen', 'innogy-smarthome.0.Küche.Fenstersensor-Küche.Fenstersensor-Küche.IsOpen', 'innogy-smarthome.0.Schlafzimmer.Fenster.WDS.IsOpen', 'zigbee.0.00158d008b158119.contact', 'zigbee.0.00158d008b159b8c.contact', 'zigbee.0.00158d008b159c0a.contact', 'zigbee.0.00158d008b31a568.contact' ] javascript.0 16:15:19.421 info script.js.Meine_Geräte.FensterOffenWarung: registered 8 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions -
@paul53 Log aus 2. Zeile:
avascript.0 16:15:19.420 info script.js.Meine_Geräte.FensterOffenWarung: [ 'innogy-smarthome.0.Esszimmer.Fenstersensor-Esszimmer.Fenstersensor-Esszimmer.IsOpen', 'innogy-smarthome.0.Flur.Tür-und-Fenstersensor-1.Tür-und-Fenstersensor-1.IsOpen', 'innogy-smarthome.0.Küche.Fenstersensor-Küche.Fenstersensor-Küche.IsOpen', 'innogy-smarthome.0.Schlafzimmer.Fenster.WDS.IsOpen', 'zigbee.0.00158d008b158119.contact', 'zigbee.0.00158d008b159b8c.contact', 'zigbee.0.00158d008b159c0a.contact', 'zigbee.0.00158d008b31a568.contact' ] javascript.0 16:15:19.421 info script.js.Meine_Geräte.FensterOffenWarung: registered 8 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions@werner2000x sagte: Log aus 2. Zeile
Da sind doch die 8 Datenpunkt-IDs der Fenster!
Liefert "contact" ebenfalls true bei "offen"? -
@werner2000x sagte: Log aus 2. Zeile
Da sind doch die 8 Datenpunkt-IDs der Fenster!
Liefert "contact" ebenfalls true bei "offen"?@paul53 Die Fenster isopen (innogy) liefern 0 bei zu, die contact-event 1 bei zu.

-
@paul53 Die Fenster isopen (innogy) liefern 0 bei zu, die contact-event 1 bei zu.

@werner2000x sagte: contact-event 1 bei zu.
Dann modifiziere die Schleife:
for (let id of ids) { let open = getState(id).val; if(id.includes('contact')) open = !open; if(open) count++; }Ich würde allerdings eine Vereinheitlichung per Alias bevorzugen, wie @Codierknecht bereits erwähnte.
-
@werner2000x sagte: contact-event 1 bei zu.
Dann modifiziere die Schleife:
for (let id of ids) { let open = getState(id).val; if(id.includes('contact')) open = !open; if(open) count++; }Ich würde allerdings eine Vereinheitlichung per Alias bevorzugen, wie @Codierknecht bereits erwähnte.
@paul53 Danke für die Hilfe.
Es kommt der Fehler "open is not defined"onst ids = Array.prototype.slice.apply($("(functions=window)")); log(ids); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; if(id.includes('contact')) open = !open; if(open) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); log('Anzahl offen: ' + count); }); -
@paul53 Danke für die Hilfe.
Es kommt der Fehler "open is not defined"onst ids = Array.prototype.slice.apply($("(functions=window)")); log(ids); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; if(id.includes('contact')) open = !open; if(open) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); log('Anzahl offen: ' + count); });@werner2000x sagte: "contact event" jedoch immer noch als offen gewertet.
Du solltest die bestehende Schleife modifizieren und nicht eine weitere Schleife hinzufügen.
const ids = Array.prototype.slice.apply($("(functions=window)")); // log(ids); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { let open = getState(id).val; if(id.includes('contact')) open = !open; if(open) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); log('Anzahl offen: ' + count); }); -
@werner2000x sagte: "contact event" jedoch immer noch als offen gewertet.
Du solltest die bestehende Schleife modifizieren und nicht eine weitere Schleife hinzufügen.
const ids = Array.prototype.slice.apply($("(functions=window)")); // log(ids); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { let open = getState(id).val; if(id.includes('contact')) open = !open; if(open) count++; } setStateAsync("javascript.0.FensterUeberwachung.DoorsOpen", count, true); log('Anzahl offen: ' + count); });@paul53 sorry, habe falsch eingefügt. Jetzt klappt es. :-)
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