Triggers 如何触发Zoneminder拨打陆地电话线
您需要通过调制解调器将电脑连接到地面线路 安装wvdial并对其进行配置,然后测试它是否响铃 然后修改以访问该页面的调制解调器搜索,例如触发器 在主目录中运行该脚本 此外,我还发现,由于调制解调器比较老式,所以在Linux中不受很好的支持。例如,WinModem很便宜,因为它们在Windows软件中执行低级操作以节省硬件,因此我的旧PC的PCI调制解调器在当前的Linux中不再受支持,即,我必须找到一个硬件驱动的调制解调器,例如Trendnet TFM 561u。这是在2013年12月14日我的Mint系统上开箱即用的,显示为/dev/ttyACM0Triggers 如何触发Zoneminder拨打陆地电话线,triggers,alarm,phone-call,modem,zoneminder,Triggers,Alarm,Phone Call,Modem,Zoneminder,您需要通过调制解调器将电脑连接到地面线路 安装wvdial并对其进行配置,然后测试它是否响铃 然后修改以访问该页面的调制解调器搜索,例如触发器 在主目录中运行该脚本 此外,我还发现,由于调制解调器比较老式,所以在Linux中不受很好的支持。例如,WinModem很便宜,因为它们在Windows软件中执行低级操作以节省硬件,因此我的旧PC的PCI调制解调器在当前的Linux中不再受支持,即,我必须找到一个硬件驱动的调制解调器,例如Trendnet TFM 561u。这是在2013年12月14日我的
#!/usr/bin/perl -w
use strict;
use lib ("/opt/zm/share/perl/5.14.2");
use ZoneMinder;
$| = 1;
# mDbgInit( "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 ) );
my $lei = eval { # avoid...
$monitor->{LastEventId}; # ...aborting
}; # ...this script
warn $@ if $@; # ...if there is no
if( ! $lei ) { # ...LastEventId
next; # ...e.g. for a clean start
} # ...after clearing out database.
my $last_event_id = zmHasAlarmed( $monitor, $lei );
if ( $last_event_id ) {
if ( $monitor->{Name} ne "monitor-1" && $monitor->{Name} ne "monitor-2" ) {
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
if ( $hour > 23 || $hour < 7 ) {
$monitor->{LastEventId} = $last_event_id;
print( "Monitor ".$monitor->{Name}." has alarmed \n" );
my $cmd .= "echo ";
$cmd .= "\"";
$cmd .= "Garage Alarm: ".$monitor->{Name};
$cmd .= "\"";
$cmd .= ' | mail -s `curl ifconfig.me` myemailaddress@gmail.com';
system ($cmd);
system('wvdial');
}
}
}
}
sleep( 1 );
}
这是我第一次尝试修改Perl。这将是艰难的
第一个系统$cmd通过电子邮件发送给我myemailaddress@gmail.com您需要自己设置此选项,以使邮件与当前URL一起工作,以防其最近发生更改
第二个系统“wvdial”响了我的电话
如您所见,监视器1和监视器2被忽略
如您所见,它在晚上11点之后到早上7点之前启用
我的/etc/wvdial.conf文件与此类似:-
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = USB Modem
Phone = 123456789
ISDN = 0
Password = <Your Password>
New PPPD = yes
Username = <Your Login Name>
Modem = /dev/ttyACM0
Baud = 460800
Dial Command = ATDT
Auto Reconnect = off
Dial Attempts = 1
你是把它作为一个教程发布给其他用户还是你有一个实际的问题?这是两周的挣扎,浓缩成半小时的解决方案+解释。你应该把你的教程发布在某个博客上。看起来很有趣。