Exemple #1
0
    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)
Exemple #4
0
    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
Exemple #6
0
    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)
Exemple #7
0
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
Exemple #8
0
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)