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]}", )
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)
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
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