Closed Letschi-eu closed 3 years ago
Start by posting your program. Works for me.
import pyzm
import cv2
import pyzm.api as zmapi
import pyzm.ZMMemory as zmmemory
class ZMConnector:
def __init__(self, fps, user, pw):
self.fps = fps
self.user = user
self.pw = pw
self.zmserv = 'http://localhost/zm/'
self.monitor = '1'
self.api_config = {
'apiurl' :self.zmserv +'api',
'portalurl' :self.zmserv,
'user' : self.user,
'password' : self.pw
}
#init API
self.myapi = zmapi.ZMApi(options=self.api_config)
self.token = self.myapi.get_auth()
#init Stream
self.stream = self.zmserv+'cgi-bin/nph-zms?mode=jpeg&maxfps='+self.fps+'&buffer=1000&&monitor='+self.monitor+'&'+self.token
#init Alarm listener
self.listener = zmmemory.ZMMemory(api=self.myapi, mid=self.monitor)
def getStream(self):
return self.stream
**def isAlarmed(self):
return self.listener.is_alarmed()**
con = ZMConnector('20', 'XXXXX', 'XXXXX')
capture = cv2.VideoCapture(con.getStream())
while True:
_, frame = capture.read()
if con.isAlarmed():
cv2.putText(frame, 'Alarm detected!!!!',(10,30),cv2.FONT_HERSHEY_SIMPLEX,1,(255,255,255),2)
cv2.imshow('Video', frame)
if cv2.waitKey(1) == 27:
exit(0)
please update and try. I was able to run your program after the update
it works for me now. Thank you
Simple program for catching an alarm doesnt work for me.
File "Zoneminder_Connector.py", line 35, in isAlarmed return self.listener.is_alarmed() File "/usr/local/lib/python3.8/dist-packages/pyzm/ZMMemory.py", line 122, in is_alarmed return d['shared_data']['state'] == alarm_state['STATE_ALARM']
NameError: name 'alarm_state' is not defined