| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #############################################
- # Low Budget ALARM System
- ##############################################
- # ATTENTION! This is more a toy than a professional alarm system!
- # You must know what you do!
- ##############################################
- #
- # Concept:
- # 1x Signal Light (FS20 allight) to show the status (activated/deactivated)
- # 2x Sirene (in/out) (FS20 alsir1 alsir2 )
- # 2x PIRI-2 (FS20 piriu pirio)
- # 1x Sender (FS20 alsw) to activate/deactivate the system.
- # Tip: use the KeyMatic CAC with pin code or
- # optional a normal sender (FS20 alsw2)
- #
- # Add something like the following lines to the configuration file :
- # notifyon alsw {MyAlsw()}
- # notifyon alsw2 {MyAlswNoPin()}
- # notifyon piriu {MyAlarm()}
- # notifyon pirio {MyAlarm()}
- # and put this file in the <modpath>/FHZ1000 directory.
- #
- # Martin Haas
- ##############################################
- package main;
- use strict;
- use warnings;
- sub
- ALARM_Initialize($$)
- {
- my ($hash) = @_;
- }
- ##############################################
- # Switching Alarm System on or off
- sub
- MyAlsw()
- {
- my $ON="set allight on; setstate alsw on";
- my $OFF="set allight off; set alsir1 off; set alsir2 off; setstate alsw off";
- if ( -e "/var/tmp/alertsystem")
- {
- unlink "/var/tmp/alertsystem";
- #Paranoia
- for (my $i = 0; $i < 2; $i++ )
- {
- fhem "$OFF";
- };
- Log 2, "alarm system is OFF";
- } else {
- system "touch /var/tmp/alertsystem";
- #Paranoia
- for (my $i = 0; $i < 2; $i++ )
- {
- fhem "$ON"
- }
- Log 2, "alarm system is ON";
- };
- }
- ##############################################
- # If you have no Keymatic then use this workaround:
- # After 4x pushing a fs20-button within some seconds it will activate/deactivate the alarm system.
- sub
- MyAlswNoPin()
- {
- my $timedout=5;
- ## first time
- if ( ! -e "/var/tmp/alontest1")
- {
- for (my $i = 1; $i < 4; $i++ )
- {
- system "touch -t 200601010101 /var/tmp/alontest$i";
- }
- }
- ## test 4 times
- my $now= `date +%s`;
- for (my $i = 1; $i < 4; $i++ )
- {
- my $tagx=`date -r /var/tmp/alontest$i +%s`;
- my $testx=$now-$tagx;
- if ( $testx > $timedout )
- {
- system "touch /var/tmp/alontest$i";
- die "test$i: more than $timedout sec";
- }
- }
- system "touch -t 200601010101 /var/tmp/alontest*";
- Log 2, "ok, let's switch the alarm system...";
- #if you only allow to activate (and not deactivate) with this script:
- # if ( -e "/var/tmp/alertsystem") { die "deactivating alarm system not allowed"};
- MyAlsw();
- }
- ##############################################
- # ALARM! Do what you want!
- sub
- MyAlarm()
- {
- #alarm-system activated??
- if ( -e "/var/tmp/alertsystem")
- {
- my $timer=180; # time until the sirene will be quiet
- my $ON1="set alsir1 on-for-timer $timer";
- my $ON2="set alsir2 on-for-timer $timer";
- #Paranoia
- for (my $i = 0; $i < 2; $i++ )
- {
- fhem "$ON1";
- fhem "$ON2";
- }
- Log 2, "ALARM! #################" ;
- # have fun
- my @lights=("stuwz1", "stuwz2", "nachto", "nachtu", "stoliba" ,"stlileo");
- my @rollos=("rolu4", "rolu5", "roloadi", "rololeo", "roloco", "rolowz", "rolunik1", "rolunik2");
- foreach my $light (@lights) {
- fhem "set $light on"
- }
- foreach my $rollo (@rollos) {
- fhem "set $rollo on"
- }
- }
- }
- 1;
|