ZoneMinder / pyzm

Python API, Log, Event Server and Memory wrapper for ZoneMinder
GNU General Public License v2.0
31 stars 20 forks source link

ZMMemory alarm_state is not defined #16

Closed Letschi-eu closed 3 years ago

Letschi-eu commented 3 years ago

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

pliablepixels commented 3 years ago

Start by posting your program. Works for me.

Letschi-eu commented 3 years ago
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)
pliablepixels commented 3 years ago

please update and try. I was able to run your program after the update

Letschi-eu commented 3 years ago

it works for me now. Thank you