Pittini / iobroker-Fensterauswertung

Zählt geöffnete Fenster pro Raum und gesamt. Kann einmalig oder zyklisch an offene Fenster erinnern. Erzeugt Lüftungswarnung uvm.
MIT License
42 stars 15 forks source link

(Version 1.6.14)

Script um offene Türen und Fenster pro Raum und insgesamt zu zählen sowie offen/zu/gekippt States anzulegen und eine pro Raum konfigurierbare Lüftungsempfehlung (zeitbezogen) zu geben. Direkte Ausgabe aller Stati via HTML Tabelle und/oder Alexa/Telegram/Mail. Flexibel konfigurierbar.

If you like it, please consider a donation:

paypal

Features

WICHTIG!!!

Vorraussetzungen: Den Geräten müssen Räume (für den gesamten Channel) zugewiesen sein, sowie eine Funktion, z.B. "Fenster", bzw. "Tuer" für jeden entsprechenden Datenpunkt.

Hier aber nur für den Datenpunkt, nicht den gesamten Channel!!!

fensteroffentut1a.jpg

Installation

  1. Wenn noch nicht geschehen, allen gewünschten Sensoren einen Raum und eine Funktion zuweisen. Die Funktion muss vorher in den Aufzählungen hinzugefügt werden und könnte z.B. "Fenster", bzw. "Tuer" lauten. Sollen andere Begriffe verwendet werden, muss dies dann auch im Script, Zeile 12 und 13 geändert werden. Nach der Zuweisung, bzw. dem anlegen neuer Aufzählungspunkte ist es empfehlenswert die JS Instanz neu zu starten da diese bei Aufzählungsänderungen gerne mal "zickt" was dann zu Skriptfehlern führt.

  2. Das Skript in ein neues JS Projekt kopieren. fensteroffentut4.jpg fensteroffentut5.jpg

  3. Zeile 9-53 kontrollieren und bei Bedarf anpassen, siehe Beschreibungen direkt neben den Variablen.

  4. Zeile 18-27 wäre der richtige Ort falls Telegram, Alexa etc. die Meldungen ausgeben sollen.

  5. Skript starten

  6. In den Objekten, unter Javascript.0.FensterUeberwachung sollte es jetzt für jeden definierten Raum einen Channel mit 13 Datenpunkten geben:

    1. RoomIsOpen (readonly): Sind in diesem Raum ein oder mehrere Fenster und/oder eine Tür geöffnet?
    2. DoorIsOpen (readonly): Sind in diesem Raum ein oder mehrere Türen geöffnet?
    3. WindowIsOpen (readonly): Sind in diesem Raum ein oder mehrere Fenster geöffnet?
    4. RoomOpenCount (readonly): Summe der in diesem Raum geöffneten (inkl. der gekippten!) Fenster und Türen, 0 wenn alle geschlossen.
    5. RoomOpenWindowCount (readonly): Anzahl der in diesem Raum geöffneten (inkl. der gekippten!) Fenster, 0 wenn alle geschlossen.
    6. RoomOpenDoorCount (readonly): Anzahl der in diesem Raum geöffneten Türen, 0 wenn alle geschlossen.
    7. RoomTiltedWindowCount (readonly): Anzahl der in diesem Raum gekippten Fenster, 0 wenn alle geschlossen.
    8. VentWarnTime: Einstellfeld für die Anzahl Tage nach denen eine Lüftungsempfehlung ausgegeben wird. Lüftungsempfehlung ist bei 0 für diesen Raum deaktiviert.
    9. SendVentMsg: Einstellfeld ob Ihr für diesen Raum eine Lüftungswarnung haben möchtet.
    10. SendWindowOpenCloseMsg: Einstellfeld ob Ihr für diesen Raum eine Benachrichtigung für das erste Öffnen und das letzte Schließen der/des Fensters haben möchtet.
    11. SendDoorOpenCloseMsg: Einstellfeld ob Ihr für diesen Raum eine Benachrichtigung für das erste Öffnen und das letzte Schließen einer Tür haben möchtet.
    12. SendWindowWarnMsg: Einstellfeld ob Ihr für diesen Raum eine Offenwarnung haben möchtet.
    13. RoomOrderPriority: Einstellfeld für die benutzerdefinierte Sortierung der Raumliste (wichtige Räume an den Listenanfang um nicht scrollen zu müssen). Keine doppelten Zahlen verwenden! Änderungen hier treten erst nach Skriptneustart in Kraft.
  7. Zusätzlich werden 15 weitere Datenpunkte in der Skript Root ("javascript.0.FensterUeberwachung") angelegt:

    1. AllWindowsClosed (Ersetzt ab V.1.6.0 die Bezeichnung "AlleFensterZu"): Gesamtstatus aller Fenster
    2. AllDoorsClosed: Gesamtstatus aller Türen
    3. DoorsOpen: Anzahl der offenen Türen über alle Räume summiert.
    4. WindowsOpen: Anzahl der offenen Fenster über alle Räume summiert (inkl. der gekippten Fenster!).
    5. WindowsTilted: Anzahl der gekippten Fenster über alle Räume summiert.
    6. RoomsWithOpenDoors: Eine Textliste von Räumen mit geöffneten Türen und deren Anzahl. Sinnvoll für Kurzfassungsanzeigen in Vis.
    7. RoomsWithOpenWindows: Eine Textliste von Räumen mit geöffneten Fenstern und deren Anzahl, sowie die Untermenge der davon gekippten Fenster (Funktioniert natürlich nur wenn entsprechende Sensoren verwendet werden die gekippt als Status melden). Sinnvoll für Kurzfassungsanzeigen in Vis.
    8. RoomsWithTiltedWindows: Eine Textliste von Räumen mit gekippten Fenstern und deren Anzahl. Sinnvoll für Kurzfassungsanzeigen in Vis (Funktioniert natürlich nur wenn entsprechende Sensoren verwendet werden die gekippt als Status melden).
    9. RoomsWithOpenings: Eine Textliste von Räumen mit geöffneten Fenstern und Türen sowie deren Anzahl, sowie die Untermenge der davon gekippten Fenster (Funktioniert natürlich nur wenn entsprechende Sensoren verwendet werden die gekippt als Status melden). Sinnvoll für Kurzfassungsanzeigen in Vis.
    10. RoomsWithVentWarning: Eine Textliste von Räumen bei denen eine Lüftungswarnung besteht.
    11. LastMessage: Die zuletzt ausgegebene Nachricht. Ermöglicht es die Meldungen mit History zu erfassen oder mit Vis auszugeben.
    12. MessageLog: Ein kleines Log der ausgegebenen Meldungen mit Zeitstempel. Zeitstempel Format und max. Anzahl der Logeinträge in den Einstellungen konfigurierbar. Default Trennzeichen ist ">br>", somit kann die Liste direkt in einem HTML Widget via Binding ({javascript.0.FensterUeberwachung.MessageLog}) in Vis ausgegeben werden.
    13. OverviewTable: Dynamisch erzeugte HTML Tabelle mit allen Räumen und den jeweiligen Fensterstati. Verwendung in Vis als Binding: {javascript.0.FensterUeberwachung.OverviewTable} in einem HTML Widget, optimale Breite 310px, Hintergrundfarbe, Schriftfarbe und Schriftart nach Wahl.
    14. MuteMode: Bietet die Möglichkeit via Datenpunkt z.B. nachts Nachrichtenausgaben zu verhindern.
      • 0 = Alle Ansagen werden ausgegeben.
      • 1 = "Stumme" Nachrichten via Telegram/Mail etc. werden ausgegeben, Sprachausgaben geblockt.
      • 2 = Alle Nachrichten werden geblockt.
    15. SendRoomsWithOpeningsMsg: Legt fest ob bei Statusänderungen eine Übersichtsmeldung gesendet wird.

fensteroffentut3.jpg

Es werden drei Icons aus dem Satz: "icons-mfd-svg" verwendet. Solltet Ihr diese nicht installiert haben, so könnt Ihr dies nachholen (wird als Adapter installiert) oder beliebige eigene Icons verwenden, hierzu muß dann jedoch der Name und Pfad im Skript, Zeile 30 - 36 angepasst werden. Sieht dann z.B. so aus:

fensteroffentut2c.png

Diese Datenpunkte könnt Ihr jetzt z.B. in Vis verwenden um offene Türen/Fenster pro Raum anzuzeigen. Es wird dabei berücksichtigt dass es mehrere Türen/Fenster pro Raum, bzw. mehrflügelige Fenster geben kann.

Changelog

22.11.21 (1.6.15)