Python3开发监控自动化触发声光报警
投稿:yin
使用python制作一个自动监控并触发声光报警是不是感觉很高端,很多人都会认为只是一件很难的事情,但实际很简单就能实现。
使用python制作一个自动监控并触发声光报警是不是感觉很高端,很多人都会认为只是一件很难的事情,但实际很简单就能实现。
代码如下:
#!/usr/bin/python # -*- coding: utf-8 -*- import serial import time import urllib3 import json import tkinter as tk import tkinter.messagebox from tkinter import * #发送 d11=bytes.fromhex('7E FF 06 3A 00 01 00 EF') #开灯 播放 1 次第 1 首 d12=bytes.fromhex('7E FF 06 3A 00 01 01 EF') #关灯 播放 1 次第 1 首 d21=bytes.fromhex('7E FF 06 3A 00 02 00 EF') #开灯 播放 1 次第 2 首 d22=bytes.fromhex('7E FF 06 3A 00 02 01 EF') #关灯 播放 1 次第 2 首 d31=bytes.fromhex('7E FF 06 3A 00 81 00 EF') #开灯 循环播放第 1 首 d32=bytes.fromhex('7E FF 06 3A 00 81 01 EF') #关灯 循环播放第 1 首 d41=bytes.fromhex('7E FF 06 3A 00 82 00 EF') #开灯 循环播放第 2 首 d42=bytes.fromhex('7E FF 06 3A 00 82 01 EF') #关灯 循环播放第 2 首 d51=bytes.fromhex('7E FF 06 06 00 00 1E EF') #单量级别调节 30 级音量可调(当前指令为最大音量) d52=bytes.fromhex('7E FF 06 04 00 00 00 EF') #音量加 当前音量+1 级,共 30 级 d53=bytes.fromhex('7E FF 06 05 00 00 00 EF') #音量减 当前音量-1 级,共 30 级 d54=bytes.fromhex('7E FF 06 3A 00 00 00 EF') #闪灯开 单独打开闪灯,不影响当前播放状态 d55=bytes.fromhex('7E FF 06 3A 00 00 01 EF') #闪灯关 单独关闭闪灯,不影响当前播放状态 d56=bytes.fromhex('7E FF 06 0C 00 00 00 EF') #设备复位 恢复设备的初始状态 d57=bytes.fromhex('7E FF 06 16 00 00 00 EF') #全部停止 停止报警并关闭闪灯 # ser = serial.Serial('COM3', 9600, timeout=0.1) # ser.write(d54) # # ser.write(d52) # time.sleep(1) # ser.write(d57) # ser.close() # 延时自动关闭提示弹框 def countdown(time): if time == -1: root.destroy() ser.write(d57) ser.close() else: label.configure(text=content+"报警") root.after(1000, countdown, time-1) # 手动关闭 def handstop(): countdown(-1) # 在这执行关闭操作 http = urllib3.PoolManager() url = 'http://flxt.xxx.com/api/alarm/scanning_stop?school=' + schoolid http.request('GET', url) scanning() # 触发报警 def shout(): global ser global root global label ser = serial.Serial(com, 9600, timeout=0.1) ser.write(d31) #循环播放第一首 # ser.write(d54) # 循环播放闪光 root = tk.Tk() label = tk.Label(root, width=20) label.pack(padx=20, pady=20) countdown(continued_time) #10秒关闭 btn = Button(root, text="关闭报警", command=handstop) btn.pack() btn.mainloop() # 定时请求脚本 def pushdata(): http = urllib3.PoolManager() url = 'http://flxt.xxx.com/api/alarm/scanning?school='+schoolid retdata=http.request('GET', url) if retdata.status==200 : print('响应成功') retjsondata = json.loads(retdata.data.decode()) if retjsondata['code']==1: global content content = retjsondata['data'][0]['content'] print('有动作,开干,触发报警器') print(retjsondata['msg']) shout() #执行播放事件 return 2 else: print(retjsondata['msg']) return 1 else: print('响应失败') #循环学校进行报警 def scanning(str='3'): print('开始循环搞事情') while 1 <= 2: if str==3: pushdata() time.sleep(3) else: type = pushdata() if type == 2: # 延时播放 time.sleep(delayed_time) else: time.sleep(3) print('监控中...') scanning('2') # 登录执行报警逻辑 def login(): global com global schoolid global continued_time #持续时间 global delayed_time #报警间隔时间 continued_time=60 delayed_time=1200 schoolid = entryName.get() com = entryPwd.get() if schoolid=='': tk.messagebox.showinfo('提示', '学校ID不能为空') return if com=='': tk.messagebox.showinfo('提示', '串口不能为空') return root.destroy() scanning() #执行监控 # 测试报警按钮 def textalarm(): com = entryPwd.get() if com=='': tk.messagebox.showinfo('提示', '串口不能为空,请打开设备管理器检查端口,查看串口号。示例:COM3(字母大写)') return testshout(com) print('测试完成') # 测试报警执行 def testshout(com): ser = serial.Serial(com, 9600, timeout=0.1) # ser = serial.Serial('COM3', 9600, timeout=0.1) ser.write(d31) #循环播放第一首 time.sleep(3) #播放时长3秒 ser.write(d57) #全部停止 ser.close() #结束 print('播放完成') # root = tk.Tk() varName = tk.StringVar(value='') varPwd = tk.StringVar(value='COM3') labelName = tk.Label(root, text='学校ID:', justify=tk.RIGHT, width=80) labelName.place(x=10, y=5, width=80, height=20) entryName = tk.Entry(root, width=80, textvariable=varName) entryName.place(x=100, y=5, width=80, height=20) labelPwd = tk.Label(root, text='串口:', justify=tk.RIGHT, width=80) labelPwd.place(x=10, y=30, width=80, height=20) entryPwd = tk.Entry(root, width=80, textvariable=varPwd) entryPwd.place(x=100, y=30, width=80, height=20) buttonOk = tk.Button(root, text='测试报警', command=textalarm) buttonOk.place(x=30, y=70, width=70, height=20) buttonOk = tk.Button(root, text='登录', command=login) buttonOk.place(x=120, y=70, width=50, height=20) root.mainloop()
到此这篇关于Python3开发监控自动化触发声光报警的文章就介绍到这了,更多相关Python监控声光报警器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!