GELÖST: "Alarmanlage" bin noch Anfänger

Begonnen von m311331, 19 August 2014, 11:20:28

Vorheriges Thema - Nächstes Thema

m311331

Hi @ll,


Als erstes möchte ich erstmal ein Lob aussprechen !
mir gefällt das Forum hier sehr gut

FHEM ist noch recht neu für mich und von Perl habe ich auch noch keinen Plan, aber dank dem Forum hier bin ich soweit zurecht gekommen um mir eine kleine Alarmanlage zu basteln.

nur mit dem Code bin ich nicht sehr zufrieden.
# Alarmanlage

define anlage_status dummy
attr anlage_status room Alarm

define alarm_status dummy
attr alarm_status room Alarm

define benachrichtigung_status dummy
attr benachrichtigung_status room Alarm

define Scharfschalten notify FB.Alarm._armExt:Short.* {\
fhem "set anlage_status scharf";;\
}

define Unscharfschalten notify FB.Alarm._armInt:Short.* {\
fhem "set anlage_status unscharf";;\
fhem "set alarm_status kein alarm";;\
fhem "set benachrichtigung_status keine benachrichtigung";;\
}

define Alarmroutine notify BWM.Sensor.:.*on.* \
{if (Value("anlage_status") eq "scharf"){fhem "set alarm_status alarm"} \
}

define Alarmfall notify alarm_status:alarm \
{if (Value("anlage_status") eq "scharf"){fhem "set benachrichtigung_status benachrichtigt"} \
}

define Sirene notify alarm_status:alarm \
{if (Value("anlage_status") eq "scharf"){fhem "set RM.Teammelder alarmOn"} \
}

define Alarm_aus notify FB.Alarm._disarm:Short.* \
{if (Value("alarm_status") eq "alarm"){fhem "set RM.Teammelder alarmOff"} \
}


kann bitte mal einer drüberschauen und Verbesserungen aufzeigen ?
das wäre sehr nett!

was auch schön wäre wenn mir jemand zeigen kann wie ich den timer richtig in das notify einbauen kann

das würde funktionieren mit virtuellem Schalter auf dem webinterface
define Aus notify Schalter_test:off { fhem ("set RM.Teammelder alarmOff ;; define Schalter_testOff at +00:00:15 set Schalter_test on") }


nur sobald ich es mit der if abfrage kombiniere geht es nicht ?

was mir auch wichtig wäre es so zu schreiben das es möglichst wenig Funklast erzeugt
jedes notify erzeugt Funklast so wie ich verstanden habe.

Danke schonmal im voraus
m311331


martinp876

ich würde
- event-on-change-reading .* setzen
- nicht auf de state sondern das Reading "trigger" abfragen - einfach weil internal "STATE" schlecht greifbar ist. Musst du aber nicht.

welche if abfrage meinst du?

ein notify erzeugt prozessorlast - da FHEM prüfe muss ob es zutrifft. Funklast nur, wenn du ein Kommando schickst

m311331

Hi @ll,


@martinp876
Danke für deine Antwort

leider stecke ich noch nicht ganz so tief in der Materie
das mir deine gut gemeinten Tips, noch nicht all zu viel sagen  :-\
bzw. wie genau ich es umzusetzen habe, ich lerne weiter  :)
bitte nimm es mir nicht übel, es war sehr nett das du mir geantwortet hast.

 
ein Dank nochmal an Mitch, ohne ihn hätte ich das nie so hinbekommen hier der Code

####################### Alarmanlage #######################################

define anlage_status dummy
attr anlage_status room Alarm

define alarm_status dummy
attr alarm_status room Alarm

define benachrichtigung_status dummy
attr benachrichtigung_status room Alarm

define Scharfschalten notify FB.Alarm._armExt:Short.* {\
fhem "set anlage_status scharf";;\
}

define Unscharfschalten notify FB.Alarm._armInt:Short.* {\
fhem "set anlage_status unscharf";;\
fhem "set alarm_status kein alarm";;\
fhem "set benachrichtigung_status keine benachrichtigung";;\
}

define Alarmroutine notify BWM.Sensor.:.*on.*|TF.Sensor.:open \
{if (Value("anlage_status") eq "scharf"){fhem "set alarm_status alarm"} \
}


define Alarmfall notify alarm_status:alarm \
{if (Value("anlage_status") eq "scharf"){fhem "set benachrichtigung_status benachrichtigt"} \
}

define Sirene notify alarm_status:alarm {\
  if (Value("anlage_status") eq "scharf") {\
    fhem("set Piezosirene on-for-timer 10");;\
    fhem("set RM.Teammelder alarmOn");;\
    }\
}

define Alarm_aus notify FB.Alarm._disarm:Short.* {\
  if (Value("alarm_status") eq "alarm") {\
    fhem("set RM.Teammelder alarmOff");;\
    }\
}



mfg. m311331