Open Hedda opened 3 years ago
Given any thought to this? ...tip is to copy DNS TXT Records from Tube so impersonate his gateways just to test proof of concept.
https://www.home-assistant.io/integrations/zha#discovery-via-usb-or-zeroconf
https://github.com/tube0013/tube_gateways
Other than Tube's Zigbee Gateways code you can also checkout syssi's and thegroove's implementations as proof-of-concept:
https://github.com/syssi/esphome-zb-gw03
At the moment I have more interesting features to implement (release 2.0)
FYI, Zero-configuration networking (zeroconf) looks to have been changed and improved in the Home Assistant 2022.02 release:
https://github.com/home-assistant/core/pull/62133
https://www.home-assistant.io/integrations/zeroconf/
This change is only a concern for custom integration developers.
Currently zeroconf matching only allows matching the macaddress
, model
, and manufacturer
properties along with the name from the ZeroconfServiceInfo.
Since properties are arbitrarily defined by the zeroconf service, the list of named properties has grown over time.
Matching now allows for any arbitrarily defined property. All property matches must be lowercase, wildcards are supported
The top level keys model
, manufacturer
, and macaddress
are now deprecated from components manifest.json
file and should be moved into a properties
dict.
For example:
- {"type":"_airplay._tcp.local.","model":"appletv*"}
+ {"type":"_airplay._tcp.local.","properties":{"model":"appletv*"}}
By the way, the Home Assistant founders/leads now explicitly said this year they will prioritize focus on these types of features:
https://www.home-assistant.io/blog/2022/01/19/streamlining-experiences/
Check out this video at around 11 min 50 sec in where talk about that highlight point about making it easier to get started, etc.
https://www.youtube.com/watch?v=t_2D_KoFIfU&t=710s
Hopefully, it should be a greater chance of getting more help from other Home Assistant developers with this if ask them.
@Hedda thanks for info!
Please consider adding Zeroconf DNS TXT Reconds parameters to allow for automatic ZHA network discovery but only enable it when running in "Zigbee Home Automation Mode".
Home Assistant OS (formerly HASSIO) support automatic network scanning and “Service Discovery” via Zeroconf and when a whitelisted Zigbee serial gateway is discovered it can pass along that to a domain like the ZHA integration component in Home Assistant.
For more context about this Zigbee gateway “Service Discovery” via Zeroconf for the ZHA integration in Home Assistant, pease see:
https://community.home-assistant.io/t/zha-automatic-discovery-of-zigbee-coordinator-bridges-gateways-ethernet-wifi-network-devices-that-support-zeroconf-or-ssdp/293300
and
https://developers.home-assistant.io/docs/creating_integration_manifest/#zeroconf
FYI, there is already a working proof-of-concept this is now supported by Tube's Zigbee gateways (based on ESPHome firmware):
https://www.home-assistant.io/integrations/zha#discovery-via-usb-or-zeroconf
https://github.com/tube0013/tube_gateways
Once support for Zeroconf has been added to the firmware you also need the firmware to provide DNS TXT records for passing along setting parameters to integration config flows.
You first need to add Zeroconf service and give it name and as well as adding information about protocol (tcp) and port (????), etc.
Then DNS TXT records is used to pass along recommended settings parameters config flow to Home Assistant's ZHA integration.
Minimum requirements are DNS TXT record(s) are values for "radio_type", "baud_rate", and "data_flow_control":
I believe that is advertised for Zeroconf config in this format or similar:
(use e.g. avahi-browse -r -a to see this)
As can see, you will need one DNS TXT Record for each attribute and value that is to be passed along to HA's ZHA integration.
Zeroconf DNS TXT records could also be used to pass along info about hostname, versions, location, MAC address, and more, etc..
http://www.zeroconf.org/Rendezvous/txtrecords.html
https://en.wikipedia.org/wiki/Zero-configuration_networking#DNS-based_service_discovery
https://en.wikipedia.org/wiki/TXT_record
More information about idea of using DNS TXT records for passing along setting parameters in https://github.com/thegroove/esphome-zbbridge#1 and https://github.com/thegroove/esphome-zha-ezsp-zeroconf
In the end it is probably best to see actual example config for ESPHome as in Tube's Zigbee Gateway as that is the reference:
https://github.com/tube0013/tube_gateways/blob/main/V2_tube_zb_gw_cc2752p2/ESPHome/tube_zb_gw_cc2652p2v2.yml
Again, support for Tube's Zigbee Gateway was initially added to Home Aassistant core for ZHA support in https://github.com/home-assistant/core/pull/48420
As I believe to then whitelist Zeroconf for more gateways and/or radio types in HA's zeroconf as well as for ZHA need to do PR for:
https://github.com/home-assistant/core/blob/dev/homeassistant/generated/zeroconf.py
and
https://github.com/home-assistant/core/blob/dev/homeassistant/components/zha/manifest.json
and
https://github.com/home-assistant/core/blob/dev/homeassistant/components/zha/config_flow.py