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?
Ich denke das sollte ohne Probleme das Alarm Modul abdecken können.
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.
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.