zoneminder报警(微信、QQ提醒)

原创 2017年01月31日 15:43:41

zoneminder报警:当无人在家(dhcp保留手机IP,通过ping手机IP判断是否有人在家),过去10秒所有帧画面平均分值超过10分时,发送报警邮件到QQ邮箱,微信开通邮件提醒后,可以直接经过微信通知

suspend:检测到手机,不报警

fine:检测不到手机,开启报警,无警报

alarm:检测不到手机,开启报警,有警报

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
import smtplib
import datetime
import os
from email.mime.text import MIMEText


mail_host = 'smtp.163.com'
mail_user = '***'
mail_pass = '***'
mail_postfix = '163.com'
mail_subject = 'zm_alarm:' + datetime.datetime.now().strftime('%y-%m-%d_%H:%M:%S')
strsql='select e.id,f.score from frames f,events e where f.eventid=e.id and e.monitorid=1 and f.timestamp>date_sub(now(), interval 10 second)'


def send_mail(sub,content):
        me='zm<' + mail_user + '@' + mail_postfix + '>'
        msg = MIMEText(content,_subtype='html',_charset='utf-8')
        msg['Subject'] = sub
        msg['From'] = me
        msg['To'] = '***@qq.com'
        try:
                server = smtplib.SMTP()
                server.connect(mail_host)
                server.login(mail_user,mail_pass)
                server.sendmail(me, '***@qq.com', msg.as_string())
                server.close()
        except Exception, e:
                print str(e)


if len(os.popen('ping -c 2 -W 1 192.168.2.188 | grep time | grep from ').readlines()) == 0:
        db = MySQLdb.connect('192.168.2.50','zmuser','zmpass','zm' )
        cur = db.cursor()
        num = cur.execute(strsql)
        data = cur.fetchall()
        score = 0
        scoremax = 0
        eventid = 0
        for rec in data:
                score = score + rec[1]
                if rec[1] > 10:
                        eventid = rec[0]
                if scoremax < rec[1]:
                        scoremax=rec[1]
        if score > num * 10:
                print 'ALARM'
                send_mail(mail_subject + '[mx:%s]'%(scoremax,),\
                        'Alarm <br />EventID:<a href="http://***/zm?view=event&mode=stream&amp;mid=1&eid=%s">%s</a>'\
                        '<br />Frames: %s<br />MaxScore: %s<br />'\
                        'CAM_VIEW:<a href="http://***/zm/?view=montage&group=0" target="_blank">http://***/zm/?view=montage&group=0</a>'%(eventid,eventid,num,scoremax))
                os.system('echo `date "+%Y-%m-%d %H:%M:%S : 1 - ALARM."` >> /var/works/mlog')
        else:
                os.system('echo `date "+%Y-%m-%d %H:%M:%S : 0 - FINE."` >> /var/works/mlog')
        cur.close()
        db.close()
else:
        os.system('echo `date "+%Y-%m-%d %H:%M:%S : 0 - SUSPEND."` >> /var/works/mlog')
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ZABBIX 微信报警 插件(python无图)

ZABBIX可以实现短信、邮件、微信等各种报警,这三种基本大家都很熟悉, 现在基于微信写py,感觉钉钉的团队是从微信出来的,变量都不改,太懒了,说可以实现微信报警苍老师说过:Life is short...

通过微信企业号发送zabbix报警..

最近飞信不能用了…zabbix报警无法收到短信 … 其实搭建的方法很简单,微信官网的API文档也非常详细了.只是之前网上没有找到具体的文档..自己饶了不少弯路..刚开始用微信公众平台试了下..有一个...

第一小项目(python磁盘空间不足QQ邮箱报警0.0001)

# -*- coding:utf-8 -*-  ''' 运行环境 centos 6 python3.6.0 @hyhmnnn 2017-5-24 可能有些问题, 新手见谅 QQ邮箱发送是看到知乎...

友盟+分享到微信、QQ问题解决

之前使用友盟+集成分享功能,但是分享到微信总是会出现问题,下面说一下出现的问题及解决办法,然后再详细介绍一下集成步骤。 一、遇见的问题 1、分享到微信的时候只是闪过,然后又回到应用 解决办法:A...

网页分享到微信、微博、QQ等

首先要说明的是,pc端微信分享只能通过二维码来分享。 部分代码如下: //分享到新浪微博 function shareToSinaWB(event){ event.preve...

android ViewPager加Fragment实现导航加左右滑动(类似QQ、微信)

1.布局文件 这里为了简单起见,只有两个布局文件 activity_main.xml <RelativeLayout xmlns:android="http://schemas.androi...

自己动手写js分享插件 [支持https] (QQ空间,微信,新浪微博。。。)

微信分享效果:QQ空间分享效果:HTML jQuery弹出社交分享按钮 <link rel="stylesheet" h

WAP调用微信支付https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1

网页调用微信支付(WabView 调用微信支付)

Android三方登陆之QQ,微信,微博登录及注意事项

Android 应用三方登录功能,使用ShareSDK 和官方 SDK分别实现,及其封装
  • wbwjx
  • wbwjx
  • 2015-12-20 20:18
  • 2190
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)