NEWS
Fenster offen Script
-
@ralalla sagte: Say is not defined
Zeile 42:
const UseSay = true; // Sollen Nachrichten via Say ausgegeben werden? Autorenfunktion, muß deaktiviert werden.
-
@paul53 das script läuft aber auch anderweitig nicht mehr, zumindest bei mir, siehe
https://github.com/Pittini/iobroker-Fensterauswertung/issues/52selbst wenn ich das original script einfüge und starte
-
Hm schade.
Auch wenn ich "say" (hatte ich wohl übersehen) abschalte funktioniert es nicht.
Wurde ja von @crunchip auch erwähnt.Hat jemand eine Alternative die ähnliche Ergebnisse bringt und funktioniert?
-
@ralalla sagte in Fenster offen Script:
Hat jemand eine Alternative die ähnliche Ergebnisse bringt und funktioniert?
Was brauchst Du denn?
Nur die Anzahl offener Fenster?
Oder tatsächlich auch eine Meldung? Wenn ja: Wohin? Sprachausgabe, Telegram, Signal, Email, etc. p.p. -
Hm also eigentlich würde auch die Anzahl offener Türen/ offener Fenster reichen.
Den Rest bekomme ich alleine „zusammengebastelt“. -
const ids = $('(functions=window)').toArray(); // Alternativ über gleichartige DP // const ids = $('zigbee.0.*.opened').toArray(); on({id: ids, change: "ne"}, async function() { let count = 0; for (let id of ids) { if (getState(id).val) count++; } setStateAsync("0_userdata.0.Vis.fenster", count, true); });
Für die hier verwendete Variante habe ich unter "Kategorien" eine Funktion angelegt, in der die entsprechenden States aufgelistet sind. Das funktioniert prima, weil bei mir unterschiedliche Sensoren verbaut sind (Zigbee und Alarmanlage).
Wenn alles nur aus einem Adapter kommt, kann man auch die Alternative Variante verwenden.
-
@ralalla
Wann soll die Prüfung erfolgen? Bei Verlassen des Hauses?
Wenn genau den zu prüfenden Datenpunkten das Gewerk "fenster" (Schreibweise in der ID) und ein Raum zugewiesen wurde, kann es etwa so erfolgen:const ids = $('*(functions=fenster)').toArray(); const idMsg = 'xyz'; // ID eintragen const idVerlassen = 'abc'; // ID eintragen on({id: idVerlassen, change: 'gt'}, function() { const Liste = []; for(const id of ids) { if(getState(id).val) { // offen? const raum = getObject(id, 'rooms').enumNames[0]; Liste.push(raum); } } if(Liste.length) { const msg = Liste.length + ' offene Fenster im\n' + Liste.join(', '); setState(idMsg, msg); // oder sendTo() mit msg } });
-
Danke euch beiden.
So wie von @Codierknecht geschrieben passt das schon mal ganz gut.
Die Zusätze von @paul53 schaue ich mir morgen mal an und übernehme das dann.Nachricht brauche ich erst mal keine.
Gut wäre wenn man halt immer den aktuellen Status sehen kann. Das klappt ja damit schon mal.
Nice to Have für die Visu wenn man sieht wo was offen ist.Nachricht nur wenn keiner zu Hause ist. Da ich viel in Blockly zusammen klicke schaffe ich das mit der Nachricht auch im Blockly. Wobei das hier natürlich ein Ansporn ist zu lernen
-
@ralalla sagte in Fenster offen Script:
viel in Blockly
hab gerade mal bei mir nachgesehen, hab das noch in den scripten
https://forum.iobroker.net/post/904083 -
ich würde ja in so Skripts noch ein
schedule('1 1 * * *', () => {startScript(name);}
einbauen - dann braucht man auch nicht ans neustarten zu denken, wenn man 6 Monate später mal nen Sensor austauscht