def test_motion_detection(self, *args): session = args[-1].return_value get = session.get url = "localhost:80/ISAPI/System/Video/inputs/channels/1/motionDetection" # Motion detection disabled self.set_motion_detection_state(get, False) device = HikCamera(host="localhost") get.assert_called_once_with(url) self.assertIsNotNone(device) self.assertFalse(device.current_motion_detection_state) # Motion detection enabled self.set_motion_detection_state(get, True) device = HikCamera(host="localhost") self.assertIsNotNone(device) self.assertTrue(device.current_motion_detection_state) # Enable calls put with the expected data self.set_motion_detection_state(get, True) session.put.return_value = MagicMock(status_code=requests.codes.ok, ok=True) device.enable_motion_detection() session.put.assert_called_once_with(url, data=XML.format("true").encode()) # Disable def change_get_response(url, data): self.set_motion_detection_state(get, False) return MagicMock(ok=True, status_code=requests.codes.ok) self.set_motion_detection_state(get, True) session.put = MagicMock(side_effect=change_get_response) device = HikCamera(host="localhost") self.assertTrue(device.current_motion_detection_state) device.disable_motion_detection() self.assertFalse(device.current_motion_detection_state)
class HikvisionData(object): """Hikvision device event stream object.""" def __init__(self, hass, url, port, name, username, password): """Initialize the data oject.""" from pyhik.hikvision import HikCamera self._url = url self._port = port self._name = name self._username = username self._password = password # Establish camera self.camdata = HikCamera( self._url, self._port, self._username, self._password) if self._name is None: self._name = self.camdata.get_name hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.stop_hik) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, self.start_hik) def stop_hik(self, event): """Shutdown Hikvision subscriptions and subscription thread on exit.""" self.camdata.disconnect() def start_hik(self, event): """Start Hikvision event stream thread.""" self.camdata.start_stream() @property def sensors(self): """Return list of available sensors and their states.""" return self.camdata.current_event_states @property def cam_id(self): """Return device id.""" return self.camdata.get_id @property def name(self): """Return device name.""" return self._name @property def type(self): """Return device type.""" return self.camdata.get_type def get_attributes(self, sensor, channel): """Return attribute list for sensor/channel.""" return self.camdata.fetch_attributes(sensor, channel)
class HikvisionData(object): """Hikvision device event stream object.""" def __init__(self, hass, url, port, name, username, password): """Initialize the data object.""" from pyhik.hikvision import HikCamera self._url = url self._port = port self._name = name self._username = username self._password = password # Establish camera self.camdata = HikCamera( self._url, self._port, self._username, self._password) if self._name is None: self._name = self.camdata.get_name hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.stop_hik) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, self.start_hik) def stop_hik(self, event): """Shutdown Hikvision subscriptions and subscription thread on exit.""" self.camdata.disconnect() def start_hik(self, event): """Start Hikvision event stream thread.""" self.camdata.start_stream() @property def sensors(self): """Return list of available sensors and their states.""" return self.camdata.current_event_states @property def cam_id(self): """Return device id.""" return self.camdata.get_id @property def name(self): """Return device name.""" return self._name @property def type(self): """Return device type.""" return self.camdata.get_type def get_attributes(self, sensor, channel): """Return attribute list for sensor/channel.""" return self.camdata.fetch_attributes(sensor, channel)
def __init__(self, hass, url, port, name, username, password): """Initialize the data object.""" self._url = url self._port = port self._name = name self._username = username self._password = password # Establish camera self.camdata = HikCamera(self._url, self._port, self._username, self._password) if self._name is None: self._name = self.camdata.get_name hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.stop_hik) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, self.start_hik)
class HikvisionData(object): """Hikvision camera event stream object.""" def __init__(self, hass, url, port, name, username, password): """Initialize the data oject.""" from pyhik.hikvision import HikCamera self._url = url self._port = port self._name = name self._username = username self._password = password # Establish camera self._cam = HikCamera(self._url, self._port, self._username, self._password) if self._name is None: self._name = self._cam.get_name # Start event stream self._cam.start_stream() hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.stop_hik) def stop_hik(self, event): """Shutdown Hikvision subscriptions and subscription thread on exit.""" self._cam.disconnect() @property def sensors(self): """Return list of available sensors and their states.""" return self._cam.current_event_states @property def cam_id(self): """Return camera id.""" return self._cam.get_id @property def name(self): """Return camera name.""" return self._name
def __init__(self, hass, url, port, name, username, password): """Initialize the data oject.""" from pyhik.hikvision import HikCamera self._url = url self._port = port self._name = name self._username = username self._password = password # Establish camera self._cam = HikCamera(self._url, self._port, self._username, self._password) if self._name is None: self._name = self._cam.get_name # Start event stream self._cam.start_stream() hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.stop_hik)
def init(): camera_name = sys.argv[1] camera_settings = get_camera(camera_name) if camera_settings["hik_url"] is None: return global camera camera = HikCamera( camera_settings["hik_url"], usr=camera_settings["hik_user"], pwd=camera_settings["hik_pass"], ) camera.start_stream() if camera.name is None: logging.error(f"Failed to initialize camera {camera_name}") sys.exit(1) for sensor, channel_list in camera.current_event_states.items(): for channel in channel_list: camera.add_update_callback( Sensor(camera_name, camera, sensor, channel[1]).update, f"{camera.get_id}.{sensor}.{channel[1]}", )
def __init__(self, hass, url, port, name, username, password): """Initialize the data oject.""" from pyhik.hikvision import HikCamera self._url = url self._port = port self._name = name self._username = username self._password = password # Establish camera self.camdata = HikCamera( self._url, self._port, self._username, self._password) if self._name is None: self._name = self.camdata.get_name hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, self.stop_hik) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, self.start_hik)