def __init__(self, hass, config): """Initialize a ONVIF camera.""" from onvif import ONVIFService import onvif super().__init__() self._name = config.get(CONF_NAME) self._ffmpeg_arguments = '-q:v 2' media = ONVIFService( 'http://{}:{}/onvif/device_service'.format(config.get(CONF_HOST), config.get(CONF_PORT)), config.get(CONF_USERNAME), config.get(CONF_PASSWORD), '{}/wsdl/media.wsdl'.format(os.path.dirname(onvif.__file__))) self._input = media.GetStreamUri().Uri _LOGGER.debug("ONVIF Camera Using the following URL for %s: %s", self._name, self._input)
def do_cmd(self, line): '''Usage: CMD service operation [parameters]''' try: args = self.cmd_parser.parse_args(line.split()) except ValueError as err: return error(err) # Check if args.service is valid if args.service not in SUPPORTED_SERVICES: return error('No Service: ' + args.service) args.params = ''.join(args.params) # params is optional if not args.params.strip(): args.params = '{}' # params must be a dictionary format string match = re.match(r"^.*?(\{.*\}).*$", args.params) if not match: return error('Invalid params') try: args.params = dict(literal_eval(match.group(1))) except ValueError as err: return error('Invalid params') try: # Get ONVIF service service = self.client.get_service(args.service) # Actually execute the command and get the response response = getattr(service, args.operation)(args.params) except MethodNotFound as err: return error('No Operation: %s' % args.operation) except Exception as err: return error(err) if isinstance(response, (Text, bool)): return success(response) # Try to convert instance to dictionary try: success(ONVIFService.to_dict(response)) except ONVIFError: error({})
from onvif import ONVIFService device_service = ONVIFService( 'http://192.168.0.14', 'admin', '@DIRK#Zu2', 'C:\\Users\\Starlin Cerda\\AppData\\Roaming\\Python\\Python37\\site-packages\\onvif\\wsdl\\') ret = device_service.GetHostName() print(ret.FromDHCP)