Python3開(kāi)發(fā)監(jiān)控自動(dòng)化觸發(fā)聲光報(bào)警
使用python制作一個(gè)自動(dòng)監(jiān)控并觸發(fā)聲光報(bào)警是不是感覺(jué)很高端,很多人都會(huì)認(rèn)為只是一件很難的事情,但實(shí)際很簡(jiǎn)單就能實(shí)現(xiàn)。
代碼如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import serial
import time
import urllib3
import json
import tkinter as tk
import tkinter.messagebox
from tkinter import *
#發(fā)送
d11=bytes.fromhex('7E FF 06 3A 00 01 00 EF') #開(kāi)燈 播放 1 次第 1 首
d12=bytes.fromhex('7E FF 06 3A 00 01 01 EF') #關(guān)燈 播放 1 次第 1 首
d21=bytes.fromhex('7E FF 06 3A 00 02 00 EF') #開(kāi)燈 播放 1 次第 2 首
d22=bytes.fromhex('7E FF 06 3A 00 02 01 EF') #關(guān)燈 播放 1 次第 2 首
d31=bytes.fromhex('7E FF 06 3A 00 81 00 EF') #開(kāi)燈 循環(huán)播放第 1 首
d32=bytes.fromhex('7E FF 06 3A 00 81 01 EF') #關(guān)燈 循環(huán)播放第 1 首
d41=bytes.fromhex('7E FF 06 3A 00 82 00 EF') #開(kāi)燈 循環(huán)播放第 2 首
d42=bytes.fromhex('7E FF 06 3A 00 82 01 EF') #關(guān)燈 循環(huán)播放第 2 首
d51=bytes.fromhex('7E FF 06 06 00 00 1E EF') #單量級(jí)別調(diào)節(jié) 30 級(jí)音量可調(diào)(當(dāng)前指令為最大音量)
d52=bytes.fromhex('7E FF 06 04 00 00 00 EF') #音量加 當(dāng)前音量+1 級(jí),共 30 級(jí)
d53=bytes.fromhex('7E FF 06 05 00 00 00 EF') #音量減 當(dāng)前音量-1 級(jí),共 30 級(jí)
d54=bytes.fromhex('7E FF 06 3A 00 00 00 EF') #閃燈開(kāi) 單獨(dú)打開(kāi)閃燈,不影響當(dāng)前播放狀態(tài)
d55=bytes.fromhex('7E FF 06 3A 00 00 01 EF') #閃燈關(guān) 單獨(dú)關(guān)閉閃燈,不影響當(dāng)前播放狀態(tài)
d56=bytes.fromhex('7E FF 06 0C 00 00 00 EF') #設(shè)備復(fù)位 恢復(fù)設(shè)備的初始狀態(tài)
d57=bytes.fromhex('7E FF 06 16 00 00 00 EF') #全部停止 停止報(bào)警并關(guān)閉閃燈
# ser = serial.Serial('COM3', 9600, timeout=0.1)
# ser.write(d54)
# # ser.write(d52)
# time.sleep(1)
# ser.write(d57)
# ser.close()
# 延時(shí)自動(dòng)關(guān)閉提示彈框
def countdown(time):
if time == -1:
root.destroy()
ser.write(d57)
ser.close()
else:
label.configure(text=content+"報(bào)警")
root.after(1000, countdown, time-1)
# 手動(dòng)關(guān)閉
def handstop():
countdown(-1)
# 在這執(zhí)行關(guān)閉操作
http = urllib3.PoolManager()
url = 'http://flxt.xxx.com/api/alarm/scanning_stop?school=' + schoolid
http.request('GET', url)
scanning()
# 觸發(fā)報(bào)警
def shout():
global ser
global root
global label
ser = serial.Serial(com, 9600, timeout=0.1)
ser.write(d31) #循環(huán)播放第一首
# ser.write(d54) # 循環(huán)播放閃光
root = tk.Tk()
label = tk.Label(root, width=20)
label.pack(padx=20, pady=20)
countdown(continued_time) #10秒關(guān)閉
btn = Button(root, text="關(guān)閉報(bào)警", command=handstop)
btn.pack()
btn.mainloop()
# 定時(shí)請(qǐng)求腳本
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('響應(yīng)成功')
retjsondata = json.loads(retdata.data.decode())
if retjsondata['code']==1:
global content
content = retjsondata['data'][0]['content']
print('有動(dòng)作,開(kāi)干,觸發(fā)報(bào)警器')
print(retjsondata['msg'])
shout() #執(zhí)行播放事件
return 2
else:
print(retjsondata['msg'])
return 1
else:
print('響應(yīng)失敗')
#循環(huán)學(xué)校進(jìn)行報(bào)警
def scanning(str='3'):
print('開(kāi)始循環(huán)搞事情')
while 1 <= 2:
if str==3:
pushdata()
time.sleep(3)
else:
type = pushdata()
if type == 2: # 延時(shí)播放
time.sleep(delayed_time)
else:
time.sleep(3)
print('監(jiān)控中...')
scanning('2')
# 登錄執(zhí)行報(bào)警邏輯
def login():
global com
global schoolid
global continued_time #持續(xù)時(shí)間
global delayed_time #報(bào)警間隔時(shí)間
continued_time=60
delayed_time=1200
schoolid = entryName.get()
com = entryPwd.get()
if schoolid=='':
tk.messagebox.showinfo('提示', '學(xué)校ID不能為空')
return
if com=='':
tk.messagebox.showinfo('提示', '串口不能為空')
return
root.destroy()
scanning() #執(zhí)行監(jiān)控
# 測(cè)試報(bào)警按鈕
def textalarm():
com = entryPwd.get()
if com=='':
tk.messagebox.showinfo('提示', '串口不能為空,請(qǐng)打開(kāi)設(shè)備管理器檢查端口,查看串口號(hào)。示例:COM3(字母大寫(xiě))')
return
testshout(com)
print('測(cè)試完成')
# 測(cè)試報(bào)警執(zhí)行
def testshout(com):
ser = serial.Serial(com, 9600, timeout=0.1)
# ser = serial.Serial('COM3', 9600, timeout=0.1)
ser.write(d31) #循環(huán)播放第一首
time.sleep(3) #播放時(shí)長(zhǎng)3秒
ser.write(d57) #全部停止
ser.close() #結(jié)束
print('播放完成')
#
root = tk.Tk()
varName = tk.StringVar(value='')
varPwd = tk.StringVar(value='COM3')
labelName = tk.Label(root, text='學(xué)校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='測(cè)試報(bào)警', 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()到此這篇關(guān)于Python3開(kāi)發(fā)監(jiān)控自動(dòng)化觸發(fā)聲光報(bào)警的文章就介紹到這了,更多相關(guān)Python監(jiān)控聲光報(bào)警器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
wxpython實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了wxpython實(shí)現(xiàn)圖書(shū)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
pytorch中transform.Compose()用法詳解
PyTorch是一個(gè)開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù),基于Torch,用于自然語(yǔ)言處理等應(yīng)用程序,這篇文章主要介紹了pytorch中transform.Compose()用法,需要的朋友可以參考下2023-10-10
django中賬號(hào)密碼驗(yàn)證登陸功能的實(shí)現(xiàn)方法
這篇文章主要介紹了django中賬號(hào)密碼驗(yàn)證登陸功能的實(shí)現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
解決Python的requests中text中文亂碼的問(wèn)題
學(xué)習(xí)Python爬蟲(chóng)時(shí)遇到中文亂碼問(wèn)題,發(fā)現(xiàn)req.text返回的是unicode,無(wú)法再次decode,通過(guò)查看網(wǎng)站源碼,發(fā)現(xiàn)網(wǎng)站使用的是gbk編碼,Requests會(huì)自動(dòng)解碼來(lái)自服務(wù)器的內(nèi)容,但有時(shí)推測(cè)錯(cuò)誤,通過(guò)設(shè)置r.encoding為gbk,然后對(duì)text進(jìn)行編碼,可以正確打印出中文2025-01-01
python批量修改圖片后綴的方法(png到j(luò)pg)
今天小編就為大家分享一篇python批量修改圖片后綴(png到j(luò)pg),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Python入門(mén)學(xué)習(xí)之類(lèi)的相關(guān)知識(shí)總結(jié)
今天帶大家復(fù)習(xí)python的基礎(chǔ)知識(shí),文中對(duì)類(lèi)的相關(guān)知識(shí)作了非常詳細(xì)的介紹,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
在python中實(shí)現(xiàn)將一張圖片剪切成四份的方法
今天小編就為大家分享一篇在python中實(shí)現(xiàn)將一張圖片剪切成四份的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12

