Running script on alarm
Posted: Tue Dec 31, 2013 2:35 pm
Hello all,
Used ZM years ago and am coming back to it again.
I want to trigger an x10 event when a ZM monitor goes into alarm, problem is that I am running heyu on the same machine so it has my x10 CM11a tied up, so I decided to try to just have ZM trigger another script where I'll run a heyu command to trigger my x10 event.
I found on the FAQ page there is a script to do exactly this:
http://www.zoneminder.com/wiki/index.ph ... n_alarm.3F
I am trying to run this script but I get an error:
I have ZM 1.25 installed and the ZoneMinder Perl Module is installed. Anyone able to shed any light on this problem?
Tom
Used ZM years ago and am coming back to it again.
I want to trigger an x10 event when a ZM monitor goes into alarm, problem is that I am running heyu on the same machine so it has my x10 CM11a tied up, so I decided to try to just have ZM trigger another script where I'll run a heyu command to trigger my x10 event.
I found on the FAQ page there is a script to do exactly this:
http://www.zoneminder.com/wiki/index.ph ... n_alarm.3F
Code: Select all
#!/usr/bin/perl -w
use strict;
use ZoneMinder;
$| = 1;
zmDbgInit( "myscript", level=>0, to_log=>0, to_syslog=>0, to_term=>1 );
my $dbh = DBI->connect( "DBI:mysql:database=".ZM_DB_NAME.";host=".ZM_DB_HOST, ZM_DB_USER, ZM_DB_PASS );
my $sql = "select M.*, max(E.Id) as LastEventId from Monitors as M left join Events as E on M.Id = E.MonitorId where M.Function != 'None' group by (M.Id)";
my $sth = $dbh->prepare_cached( $sql ) or die( "Can't prepare '$sql': ".$dbh->errstr() );
my $res = $sth->execute() or die( "Can't execute '$sql': ".$sth->errstr() );
my @monitors;
while ( my $monitor = $sth->fetchrow_hashref() )
{
push( @monitors, $monitor );
}
while( 1 )
{
foreach my $monitor ( @monitors )
{
next if ( !zmMemVerify( $monitor ) );
if ( my $last_event_id = zmHasAlarmed( $monitor, $monitor->{LastEventId} ) )
{
$monitor->{LastEventId} = $last_event_id;
print( "Monitor ".$monitor->{Name}." has alarmed\n" );
#
# Do your stuff here
#
}
}
sleep( 1 );
}
Code: Select all
$ ./zmtest.pl
Undefined subroutine &main::zmDbgInit called at ./zmtest.pl line 9.
Tom