class FoscamCam(Camera): """An implementation of a Foscam IP camera.""" def __init__(self, device_info): """Initialize a Foscam camera.""" from libpyfoscam import FoscamCamera super(FoscamCam, self).__init__() ip_address = device_info.get(CONF_IP) port = device_info.get(CONF_PORT) self._username = device_info.get(CONF_USERNAME) self._password = device_info.get(CONF_PASSWORD) self._name = device_info.get(CONF_NAME) self._motion_status = False self._foscam_session = FoscamCamera(ip_address, port, self._username, self._password, verbose=False) def camera_image(self): """Return a still image response from the camera.""" # Send the request to snap a picture and return raw jpg data # Handle exception if host is not reachable or url failed result, response = self._foscam_session.snap_picture_2() if result == FOSCAM_COMM_ERROR: return None return response @property def motion_detection_enabled(self): """Camera Motion Detection Status.""" return self._motion_status def enable_motion_detection(self): """Enable motion detection in camera.""" try: ret = self._foscam_session.enable_motion_detection() self._motion_status = ret == FOSCAM_COMM_ERROR except TypeError: _LOGGER.debug("Communication problem") self._motion_status = False def disable_motion_detection(self): """Disable motion detection.""" try: ret = self._foscam_session.disable_motion_detection() self._motion_status = ret == FOSCAM_COMM_ERROR except TypeError: _LOGGER.debug("Communication problem") self._motion_status = False @property def name(self): """Return the name of this camera.""" return self._name
class FoscamCam(Camera): """An implementation of a Foscam IP camera.""" def __init__(self, device_info): """Initialize a Foscam camera.""" from libpyfoscam import FoscamCamera super(FoscamCam, self).__init__() ip_address = device_info.get(CONF_IP) port = device_info.get(CONF_PORT) self._username = device_info.get(CONF_USERNAME) self._password = device_info.get(CONF_PASSWORD) self._name = device_info.get(CONF_NAME) self._motion_status = False self._foscam_session = FoscamCamera( ip_address, port, self._username, self._password, verbose=False) def camera_image(self): """Return a still image response from the camera.""" # Send the request to snap a picture and return raw jpg data # Handle exception if host is not reachable or url failed result, response = self._foscam_session.snap_picture_2() if result == FOSCAM_COMM_ERROR: return None return response @property def motion_detection_enabled(self): """Camera Motion Detection Status.""" return self._motion_status def enable_motion_detection(self): """Enable motion detection in camera.""" try: ret = self._foscam_session.enable_motion_detection() self._motion_status = ret == FOSCAM_COMM_ERROR except TypeError: _LOGGER.debug("Communication problem") self._motion_status = False def disable_motion_detection(self): """Disable motion detection.""" try: ret = self._foscam_session.disable_motion_detection() self._motion_status = ret == FOSCAM_COMM_ERROR except TypeError: _LOGGER.debug("Communication problem") self._motion_status = False @property def name(self): """Return the name of this camera.""" return self._name
class FoscamCam(Camera): """An implementation of a Foscam IP camera.""" def __init__(self, device_info): """Initialize a Foscam camera.""" from libpyfoscam import FoscamCamera super().__init__() ip_address = device_info.get(CONF_IP) port = device_info.get(CONF_PORT) self._username = device_info.get(CONF_USERNAME) self._password = device_info.get(CONF_PASSWORD) self._name = device_info.get(CONF_NAME) self._motion_status = False self._foscam_session = FoscamCamera( ip_address, port, self._username, self._password, verbose=False ) self._rtsp_port = device_info.get(CONF_RTSP_PORT) if not self._rtsp_port: result, response = self._foscam_session.get_port_info() if result == 0: self._rtsp_port = response.get("rtspPort") or response.get("mediaPort") def camera_image(self): """Return a still image response from the camera.""" # Send the request to snap a picture and return raw jpg data # Handle exception if host is not reachable or url failed result, response = self._foscam_session.snap_picture_2() if result == FOSCAM_COMM_ERROR: return None return response @property def supported_features(self): """Return supported features.""" if self._rtsp_port: return SUPPORT_STREAM return 0 async def stream_source(self): """Return the stream source.""" if self._rtsp_port: return "rtsp://{}:{}@{}:{}/videoMain".format( self._username, self._password, self._foscam_session.host, self._rtsp_port, ) return None @property def motion_detection_enabled(self): """Camera Motion Detection Status.""" return self._motion_status def enable_motion_detection(self): """Enable motion detection in camera.""" try: ret = self._foscam_session.enable_motion_detection() self._motion_status = ret == FOSCAM_COMM_ERROR except TypeError: _LOGGER.debug("Communication problem") self._motion_status = False def disable_motion_detection(self): """Disable motion detection.""" try: ret = self._foscam_session.disable_motion_detection() self._motion_status = ret == FOSCAM_COMM_ERROR except TypeError: _LOGGER.debug("Communication problem") self._motion_status = False @property def name(self): """Return the name of this camera.""" return self._name