Improved listing of multicast DNS services

This commit is contained in:
Ivan Kravets
2021-01-18 18:17:10 +02:00
parent 4e637ae58a
commit dd7d282d17
3 changed files with 16 additions and 17 deletions

View File

@ -8,9 +8,10 @@ PlatformIO Core 5
**A professional collaborative platform for embedded development** **A professional collaborative platform for embedded development**
5.0.4 (2020-12-??) 5.0.5 (2021-??-??)
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
* Improved listing of `multicast DNS services <https://docs.platformio.org/page/core/userguide/device/cmd_list.html>`_
* Check for debug server's "ready_pattern" in "stderr" * Check for debug server's "ready_pattern" in "stderr"
5.0.4 (2020-12-30) 5.0.4 (2020-12-30)

View File

@ -24,8 +24,9 @@ from functools import wraps
from glob import glob from glob import glob
import click import click
import zeroconf
from platformio import __version__, exception, proc from platformio import __version__, compat, exception, proc
from platformio.compat import PY2, WINDOWS from platformio.compat import PY2, WINDOWS
from platformio.fs import cd, load_json # pylint: disable=unused-import from platformio.fs import cd, load_json # pylint: disable=unused-import
from platformio.proc import exec_command # pylint: disable=unused-import from platformio.proc import exec_command # pylint: disable=unused-import
@ -162,14 +163,7 @@ def get_logical_devices():
def get_mdns_services(): def get_mdns_services():
# pylint: disable=import-outside-toplevel compat.ensure_python3()
try:
import zeroconf
except ImportError:
from platformio.package.manager.core import inject_contrib_pysite
inject_contrib_pysite()
import zeroconf # pylint: disable=import-outside-toplevel
class mDNSListener(object): class mDNSListener(object):
def __init__(self): def __init__(self):
@ -178,7 +172,15 @@ def get_mdns_services():
self._found_services = [] self._found_services = []
def __enter__(self): def __enter__(self):
zeroconf.ServiceBrowser(self._zc, "_services._dns-sd._udp.local.", self) zeroconf.ServiceBrowser(
self._zc,
[
"_http._tcp.local.",
"_hap._tcp.local.",
"_services._dns-sd._udp.local.",
],
self,
)
return self return self
def __exit__(self, etype, value, traceback): def __exit__(self, etype, value, traceback):
@ -225,12 +227,7 @@ def get_mdns_services():
{ {
"type": service.type, "type": service.type,
"name": service.name, "name": service.name,
"ip": ".".join( "ip": ", ".join(service.parsed_addresses()),
[
str(c if isinstance(c, int) else ord(c))
for c in service.address
]
),
"port": service.port, "port": service.port,
"properties": properties, "properties": properties,
} }

View File

@ -36,6 +36,7 @@ install_requires = [
"tabulate>=0.8.3,<1", "tabulate>=0.8.3,<1",
"pyelftools>=0.25,<1", "pyelftools>=0.25,<1",
"marshmallow%s" % (">=2,<3" if PY2 else ">=2"), "marshmallow%s" % (">=2,<3" if PY2 else ">=2"),
"zeroconf==%s" % ("0.19.*" if PY2 else "0.28.*"),
] ]