Idee zu einem Brandmelder Modul oder 99_myUtils_Firedetectors.pm

Begonnen von MarkusHiba, 10 September 2017, 21:03:05

Vorheriges Thema - Nächstes Thema

MarkusHiba

Hallo FHEM Gemeinde,

Leider finde ich keine Passenden Rauch- und Differenzialmelder (Thermomelder) auf dem Markt die ich mit FHEM steuern kann bzw. mich extern Alarmieren.

Meine Idee ist es ein Modul zu entwickeln wo man Temperatursensoren oder Rauchsensoren (MQ2) in ein Modul sammelt und auswertet.

entweder man macht eine 99_myUtils_Firedetectors.pm .




userattr <Name> Sensor_Rauchsensor Sensor_Rauch_Reading Sensor_Rauch_Schwelle Sensor_Temperatursensor Sensor_Temperatur_Reading Sensor_Temperatur_Wartezeit Sensor_Temperatur_Schwellengrad Sensor_Temperatur_Schwelle Sensor_Alarm_Befehl Sensor_Inspektion Sensor_Inspektion_Reading Sensor_Test Sensor_Test_Reading Sensor_Stumm Sensor_Stumm_Reading Sensor_Stumm_Wartezeit Sensor_Sensoren_Prüfung Sensor_LED_Störung Sensor_LED_Störung_Blinken Sensor_LED_IO Sensor_LED_IO_Blinken Sensor_LED_Alarm Sensor_LED_Alarm_Blinken subType:fireDetektor Sensor_Kombiniert:ja,Rauch,Temperatur


Sensor_Rauchsensor              #Device (Name)
Sensor_Rauch_Reading            #Devicereading
Sensor_Rauch_Schwelle          #Schwellenwert ab wann ausgelöst werden soll (Analogwert) (wenn on wiedergegeben wird brauchen wir kein Schwellenwert)

Sensor_Temperatursensor        #Device (Name)
Sensor_Temperatur_Reading      #Devicereading Wert
Sensor_Temperatur_Wartezeit    #Wartezeit bis alter Temperaturwert überschrieben wird (1 Minute) z.B.: 00:01:00
Sensor_Temperatur_Schwellengrad #um wieviel °C muss überschritten werden (4°C oder Höher siehe Webseite: http://www.sm-alarmanlagen.de/index.php?nid=3&sub=6)   
Sensor_Temperatur_Schwelle                     #ab Wieviel °C soll ausgelöst werden (58°C)

Sensor_Alarm_Befehl                #Befehl zum Alarmauslösen (Aktor) und Alarm LED an (oder blinken)

Sensor_Inspektion                                    #Device (Name) (Stummschalten von Alarmbefehl (keine scharfe Alarmauslösung))
Sensor_Inspektion_Reading                       #Devicereading on

Sensor_Test                #Device (Name) Taster langer Tastendruck (https://forum.fhem.de/index.php?topic=47219.0)
Sensor_Test_Reading        #Devicereading Wert (long-click)

Sensor_Stumm                #Device (Name) Taster kurzer Tastendruck
Sensor_Stumm_Reading        #Devicereading Wert (short-click)
Sensor_Stumm_Wartezeit        #Wartezeit wenn Temperatursensor oder Rauchsensor nicht in Ruhe gegangen ist wird ein erneuter Alarm ausgelöst (oder eine
                                                                 Störungs LED Blinkt (oder leuchtet) auf)

Sensor_Sensoren_Prüfung                         #ob Sensoren vorhanden sind 0der Reale Werte angeben ansonsten Störungs LED an (oder blinken)

Sensor_LED_Störung                #Befehl zur Störungs LED auslösung (oder blinken)
Sensor_LED_Störung_Blinken        #Blinkintervall 2s (00:00:02)
Sensor_LED_IO                #Befehl zur IO LED auslösung (oder blinken)
Sensor_LED_IO_Blinken        #Blinkintervall 45s (00:00:45)
Sensor_LED_Alarm                #Befehl zur Alarm LED auslösung (oder blinken)
Sensor_LED_Alarm_Blinken        #Blinkintervall 1s (00:00:01)

subType                                                   #fireDetektor

Sensor_Kombiniert                                    #ja,Rauch,Temperatur
                       #ja: wird auf Rauch und Temperaturanstieg gewartet bis Alarm ausgelöst wird.
                       #Rauch: wird auf Rauch gewartet bis Alarm ausgelöst wird.
                       #Temperatur: wird auf Temperatur gewartet bis Alarm ausgelöst wird.

Das wird alles in ein Dummy gepackt mit dem Namen Brandmelder_.*  ,wobei das .* der Raumname sein könnte.
Vielleicht bei den LEDs ein verschiedener Blinkintervall attr setzen z.B: IO LED aller 45s, Alarm LED aller 1s, Störung LED aller 2s.
Vielleicht bei IO LED wenn es Nacht wird aller 5-10min blinken lassen.

Auslösung der Sensoren speichern und nur wenn der Taster gedrückt wurde und die Sensoren in Ruhe sind LED wieder auf IO Blinken Lassen ansonsten Störungs LED blinken lassen.

Oder man entwickelt gleich ein Brandmelder Modul.
 
Was haltet Ihr davon?

Was Programmieren angeht bin ich leider Anfänger.
Vielleicht könnt Ihr mir helfen?
Mit freundlichen Grüßen

MarkusHiba

CoolTux

Ich denke das sollte ohne Probleme das Alarm Modul abdecken können.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

MarkusHiba

Hallo CoolTux,

ja das könnte sein ich habe mich mit dem Alarm Modul noch nicht beschäftigt so richtig nur mal im Testbetrieb.

Ich möchte auch sowas in der art das man das Brandmelder Modul oder 99_myUtils_Firedetectors.pm für einen oder mehrere Melder im Raum hat.
Das Sensoren auswertet und alarm schlägt.
Vielleicht geht es auch über 1Wire https://www.tm3d.de/shop/kategorien/module Nr.42
so ich habe mich mal daran gesetzt und etwas Code geschrieben.
Mit freundlichen Grüßen

MarkusHiba

Devender

Hey,

Ich hab mir das recht trivial mit structur und einem Doif umgesetzt.

Internals:
   ATTR       TYPE=LaCrosse
   CFGFN      /opt/fhem/manuell/alarmsystem.cfg
   CHANGEDCNT 9462
   DEF        TYPE=LaCrosse Temperatur.Badezimmer Temperatur.Wohnzimmer Temperatur.Dachboden Temperatur.Keller Temperatur.Wohnung
   NAME       Temperaturmelder
   NR         275
   NTFY_ORDER 50-Temperaturmelder
   STATE      T: 18.8 H: 62
   TYPE       structure
   CONTENT:
     Temperatur.Badezimmer 17.8
     Temperatur.Dachboden T: 18 H: 60
     Temperatur.Keller T: 18.8 H: 62
     Temperatur.Wohnung T: 17.8 H: 62
     Temperatur.Wohnzimmer 19.1
   READINGS:
     2017-09-14 21:53:36   LastDevice      Temperatur.Keller
     2017-09-14 21:53:36   LastDevice_Abs  Temperatur.Keller
     2017-09-14 21:53:36   state           T: 18.8 H: 62
Attributes:
   clientstate_behavior last
   clientstate_priority temperature
   room       Alarmanlage


Hier werden die Temperaturwerte aller meiner Sensoren zusammen gesucht und ein Doif prüft die Temperatur



Internals:
   CFGFN      /opt/fhem/manuell/alarmsystem.cfg
   DEF        ([Temperaturmelder:state:"(-?\d+(\.\d+)?)":$1] > 45)
(set TTSystem tts :feueralarm.mp3:)
({sendMeControllMsg('Feueralarm!! [Temperaturmelder:LastDevice] meldet [Temperaturmelder:state:"(-?\d+(\.\d+)?)":round($1,0)] Grad Celsius - Steigend!')})
(set TTSystem tts Feueralarm! [Temperaturmelder:LastDevice] meldet [Temperaturmelder:state:"(-?\d+(\.\d+)?)":round($1,0)] Grad Celsius - Steigend!)
DOELSE
(({Log 5, "Temperaturen im Normalbereich - Pruefung abgeschlossen"}))
)
   NAME       Feuermelder
   NR         273
   NTFY_ORDER 50-Feuermelder
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2017-09-14 21:55:03   Device          Temperaturmelder
     2017-09-14 21:55:03   cmd             2
     2017-09-14 21:55:03   cmd_event       Temperaturmelder
     2017-09-14 21:55:03   cmd_nr          2
     2017-09-14 21:55:03   e_Temperaturmelder_state T: 17.8 H: 61
     2017-07-12 23:36:25   last_cmd        cmd_2
     2017-09-14 21:55:03   state           cmd_2
     2017-09-10 10:45:36   wait_timer      no timer
   condition:
     0          ReadingValDoIf($hash,'Temperaturmelder','state','','(-?\d+(\.\d+)?)','$1') > 45
   devices:
     0           Temperaturmelder
     all         Temperaturmelder
   do:
     0:
       0          set TTSystem tts :feueralarm.mp3:
       1          {sendMeControllMsg('Feueralarm!! [Temperaturmelder:LastDevice] meldet [Temperaturmelder:state:"(-?\d+(\.\d+)?)":round($1,0)] Grad Celsius - Steigend!')}
       2          set TTSystem tts Feueralarm! [Temperaturmelder:LastDevice] meldet [Temperaturmelder:state:"(-?\d+(\.\d+)?)":round($1,0)] Grad Celsius - Steigend!
     1:
       0          ({Log 5, "Temperaturen im Normalbereich - Pruefung abgeschlossen"})
   helper:
     event      T: 17.8 H: 61
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Temperaturmelder
     timerevent T: 17.8 H: 61
     triggerDev Temperaturmelder
     timerevents:
       T: 17.8 H: 61
     timereventsState:
       state: T: 17.8 H: 61
     triggerEvents:
       T: 17.8 H: 61
     triggerEventsState:
       state: T: 17.8 H: 61
   internals:
   itimer:
   readings:
     0           Temperaturmelder:state
     all         Temperaturmelder:state
   regexp:
     0:
     all:
   state:
     STATE:
   trigger:
Attributes:
   devStateIcon an:10px-kreis-gruen initial*:10px-kreis-gruen disabled:10px-kreis-rot cmd.*:10px-kreis-gelb        deleteattr do   resetwait
   do         always
   eventMap   initialize:an disable:aus
   group      Steuerung
   icon       secur_smoke_detector
   room       Alarmanlage
   verbose    0
   wait       1,1,1
   webCmd     an:aus


Also wenn die Structur einen Wert grössere 45 hat und weiter steigt gibt es einen Alarm per Sprache und Jabbermessage.


Ist zwar jetzt kein Rauchmelder aber die Temperatur ist auch ein gutes Indiz fuer Feuer.

FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul