|
|
- """Discover Axis devices."""
- from . import MDNSDiscoverable
-
- from ..const import (
- ATTR_HOST, ATTR_PORT, ATTR_HOSTNAME, ATTR_PROPERTIES)
-
-
- class Discoverable(MDNSDiscoverable):
- """Add support for discovering Axis devices."""
-
- def info_from_entry(self, entry):
- """Return most important info from mDNS entries."""
- properties = {}
-
- for key, value in entry.properties.items():
- if isinstance(value, bytes):
- value = value.decode('utf-8')
- properties[key.decode('utf-8')] = value
-
- return {
- ATTR_HOST: self.ip_from_host(entry.server),
- ATTR_PORT: entry.port,
- ATTR_HOSTNAME: entry.server,
- ATTR_PROPERTIES: properties,
- }
-
- def __init__(self, nd):
- """Initialize the Axis discovery."""
- super(Discoverable, self).__init__(nd, '_axis-video._tcp.local.')
-
- def ip_from_host(self, host):
- """Attempt to return the ip address from an mDNS host.
-
- Return host if failed.
- """
- ips = self.netdis.mdns.zeroconf.cache.entries_with_name(host.lower())
-
- try:
- return repr(ips[0]) if ips else host
- except TypeError:
- return host
|