YESLY Smart Home

BUGFIX! – So programmierst du deinen Rauchalarm

Geschrieben von boomx
siio-App

Wir hatten euch erst letztens ein neues Rauchalarm Skript zur Verfügung gestellt. Dies haben wir nochmals aktualisiert, da in einer bestimmten Konstellation ein Fehler die korrekte Ausführung des Skriptes verhindert hat. Uns war es wichtig, dass das Skript ordnungsgemäß bei euch funktioniert, weshalb wir uns dazu entschlossen haben, diesen kleinen Bugfix-Artikel zu veröffentlichen.

Der oben genannte Fehler erfolgte durch einem Neustart des Fibaro HomeCenter 2, bei dem dann in der Folge der Wert der erstellten Variablen nicht korrekt zurückgeschrieben wurde. Der Wert der Variablen war dann „NaN“ (Not a Number). Mit diesem Wert konnte das Skript in seiner bisherigen Form leider nichts anfangen und das Skript lieferte dadurch immer ein falsches Ergebnis.

Diese Konstellation wird jetzt in dem neuen Skript abgefangen und Ihr werdet über diesen Umstand in dem Debug-Fenster der Szene informiert. Sollte dies bei euch passieren, dann müsst Ihr die Szene einmalig manuell ausführen. Der Wert der Variablen wird dann korrigiert. Das bedeutet allerdings, dass Ihr die Szene regelmäßig kontrollieren müsst (Zumindest nach einem Neustart des HomeCenter)

smoke_nan

Die Debug-Meldungen, wenn die globale Variable auf „NaN“ gesetzt ist.

Das neue Skript könnt Ihr euch hier herunterladen (Wir haben für euch auch eine englische Version des Skriptes erstellt.)


Bei dem neuen Skript handelt es sich nur um ein Bug-Fixing des oben beschriebenen Problems, weshalb wir auf den alten Artikel zur Einrichtung verweisen. Wir stellen euch hier die Einrichtung aber erneut vor:

Konfiguration des Rauchalarm Skript

Wir wollten das Skript so einfach wie möglich gestalten, so dass jeder User sehr einfach damit klar kommt. Das Thema Rauchalarm sollte nicht durch komplizierte Konfigurationsmöglichkeiten erschwert werden und deshalb müsst Ihr einzig und allein in die bestimmten Variablen-Arrays die IDs der Module eintragen, welche benötigt werden. Solltet Ihr in die Arrays keine IDs eintragen, geht das Skript davon aus, dass Ihr dir Funktion nicht nutzen möchtet. Die Beschreibungen zu den einzelnen Punkten finden sich auch die direkt im Quellcode wieder. Wir gehen Sie trotzdem an dieser Stelle nochmal alle durch:

1.) Rauchmelder

Hier müssen die IDs eurer Rauchmelder eingetragen werden, welche in einem Alarmfall geprüft werden sollen. Zusätzlich müssen diese oben im Header eingetragen werden, damit diese Rauchmelder bei Statusänderung die Szene auch triggern. (Mehr dazu erfahrt Ihr hier)

2.) Sirenen

In diesen Part müssen eure IDs der Sirenen eingetragen werden. Diese lösen beim ersten Erkennen von Rauch aus. Wenn alle Rauchmelder wieder den Status sicher melden, werden die Sirenen im Anschluss wieder abgeschaltet.

3.) Push-Mitteilungen auf das Handy

Sofern Ihr eine Benachrichtigung auf eure Handys bekommen möchtet, müssen hier die IDs eingetragen werden. Der Text der Push-Nachricht variiert je nach Ereignis. (siehe Bilder-Galerie)

4.) Notfallbeleuchtung

Hier können die IDs von Lampen eingetragen werden, welche bei der Erkennung von Rauch automatisch angeschaltet werden sollen. So habt Ihr die Möglichkeit euren Fluchtweg auszuleuchten. Wenn alle Rauchmelder wieder den Status sicher melden, dann werden die Lampen automatisch wieder ausgeschaltet.

5.) RGBW-Notfallbeleuchtung

Die RGBW-Notfallbeleuchtung macht eigentlich nichts anderes als die normale Notfallbeleuchtung. Zusätzlich kann hier aber ein Programm bei Raucherkennung gestartet werden oder die Farbe beim Einschalten bestimmt werden. In der lokalen Variablen „mode“ muss entweder ‚color‘ (Setze Farbe) oder ‚programm‘ (Starte Programm) eingestellt seien. Direkt darunter findet Ihr die Variable programmmit der das Startprogramm bestimmt werden kann. Die Variable „color“ bestimmt die Farbe mit welcher das RGBW-Modul angeht. Nachdem kein Rauch mehr erkannt wurde, schaltet das RGBW automatisch auf rot.

6.) Öffnen von Fluchtwegen

Mit dieser Option können automatisiert bestimmte Fluchtwege geöffnet werden. In die rollershutterIDs müssen die IDs der Rollladen-Module eingetragen werden. Diese werden dann bei Raucherkennung automatisch geöffnet. So verhält es sich auch mit einem danalock, welches dann auch geöffnet werden würde. So kann bei der Flucht die Tür einfach aufgezogen werden. ACHTUNG: Sollten die Rauchmelder wieder sicher melden, werden die Rollläden und die danalocks NICHT wieder verschlossen. Hier muss im Zweifelsfall manuell eingegriffen werden.

Test des Rauchalarm

Das waren dann alle benötigten Informationen, welche für das Skript nötig sind. Ihr könnt MÜSST das Skript bitte vor Inbetriebnahme ausführlich testen. Dazu eignen sich am Besten mehrere Türkontakte, da sich diese polyvalent zum Rauchmelder verhalten. (offen=ausgelöst; geschlossen=sicher)

Nachdem Ihr das Skript in eurem HC2 eingerichtet habt, solltet Ihr als Erstes die Push-Funktion testen. Dazu einfach die IDs der Handys, welche benachrichtigt werden sollen, wie oben beschrieben einrichten. Dann könnt Ihr nach einem manuellen Ausführen der Szene sehen, dass eine Test-Nachricht auf eure Handys geschickt wird. Beim ersten Ausführen wird automatisch eine neue globale Variable angelegt. Dies wird euch im Debug-Fenster so auch angezeigt:

Test-Modus des Rauchalarm Skript

Test-Modus des Rauchalarm Skript

Danach können dann die weiteren IDs eingetragen und das Skript getestet werden.


An dieser Stelle möchten wir uns für die aufmerksamen Leser bedanken, welche uns das Problem im Forum gemeldet haben.

Diesen Blogpost hat geschrieben ...

boomx

8 Kommentare

  • Hallo Boomx,

    vielen Dank für das tolle Skript! Ich habe das Skript bei mir am laufen. Ich habe aber das Problem, das ein Rauchmelder immer mal wieder (so alle 2 – 3 Tage) rauch erkennt. Das Heist es geht der Rauchmelder und die Sirene für ca. 10 sec. an. Das Skript meldet „Rauch erkannt“ und nach ca. 10 sec ist eben der Spuck wieder vorbei. Hast Du eine Ahnung woran es liegen könnte? Reichweite kann es nicht sein, da ich in unmittelbarer Nähe 3 Rolloshutter habe. Ist der Melder evtl. defekt?

    Danke schon mal.

    • Hi,

      es gibt wohl viele User, bei denen die Rauchmelder ab und an Fehlalarme produzieren. Konnte dieses Verhalten bisher nicht beobachten. Hier im Forum gibt es auch den ein oder anderen Thread zu diesem Thema, vielleicht findest du da Hinweise zu diesem Problem.

      Gruß

  • Super script!
    Herzlichen Dank. Gerade um diese Jahrezeit besonders nützlich.
    Da man ja bekanntlich alles verbessern kann, habe ich, nachdem ich mir den Code angeschaut habe, einen Vorschlag für die Variable „local countID = 500“. Jede Function muss also die Schleife 500 mal durchlaufen, ob wohl in jedem Array nur eine Handvoll Werte eingetragen werden. Das erzeugt auch noch CPU Last.
    Besser wäre es die Variable ganz wegzulassen und folgenden Code nutzen:
    Beispiel anhand der phoneIDs:
    Also statt:
    — Funktion zum Versenden der Push
    function sendPush(text)
    if (phoneID[1] ~= nil) then
    for k=1, countID do
    if phoneID[k] ~= nil then
    fibaro:call(phoneID[k],’sendPush‘, text, ’smoke‘)

    Die for Schleife einfach durch diese Zeile ersetzten:
    for k=1, #phoneID do
    Die Variable #phoneID enthält die Anzahl der Werte im Array phoneID.

    Das kann man in jeder der Functionen in der for Schleife des script nutzen, also statt countID, #smokeID, usw.

    Ansonsten, wie gesagt, einfach Top.

    • Hallo zusammen,

      bin relativ neu hier im Forum und traue mich nach einiger Zeit des mitlesen und probieren mal etwas zu fragen ;-)

      Finde das Skript zum Rauchalarm extrem gelungen und sehr durchdacht.
      Allerdings würde ich gerne die Sirenen nur eine vordefinierte Zeit (z.B. 30 Sek.) laufen lassen.
      Hintergrund dafür ist, dass zum aufwecken der Bewohner bzw. signalisieren der Gefahr einige Sekunden Sirene ausreichen.
      Im Falle einer Fehlfunktion werden die Nachbarn jedoch nicht Stundenlang mit Sirenengeheul bombardiert.

      Weiter würde mich interessieren, ob es auch möglich ist die ID des heatDetector der Fibaro Rauchmelder zu verwenden?

      Abschließend ein herzliches Dankeschön an die Betreiber, Admins und Mitglieder von siio.de.
      Ist wirklich genial wie viele Ideen, Hilfen und Ratschläge diese Seite bietet.

      • Hi,

        Danke für das Lob.

        Die Sirenen der Rauchmelder kann man nicht deaktivieren. Bei externen würde das natürlich funktionieren. Das würde ich mit einer gesonderten Szene realisieren.

        Der Heatdetector kann auch eingetragen werden, das ist dem Skript gleich.

        Gruß

Gib deinen Senf dazu!