Summary
Z2MDiscoveryService currently sweeps the local /24 probing only TCP port 8080 (the standalone Docker install default). Users running Zigbee2MQTT as a Home Assistant Community Add-on don't get discovered because that add-on serves its frontend / WebSocket on 8099.
Confirmed in the add-on's config: https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/blob/master/zigbee2mqtt/config.yaml
Proposed change
Probe both ports during the LAN sweep. When a host responds on either, record host:port (or surface it as a typed result, e.g. DiscoveredHost { host, port }) so the user lands on the right port when they tap to add the server, instead of being defaulted to 8080.
Scope
Z2MDiscoveryService.z2mPort becomes a list: [8080, 8099]. Probe loop iterates both per host.
discoveredHosts becomes Set<DiscoveredEndpoint> (or similar) with host + port; ConnectionDiscoverySection shows the port when it's non-default.
presentNewServer(prefilledHost:) → presentNewServer(prefilledHost:port:) so the editor opens with the right port pre-filled.
- HTTP probe still validates the response contains
zigbee2mqtt (already done).
Acceptance criteria
Summary
Z2MDiscoveryServicecurrently sweeps the local /24 probing only TCP port8080(the standalone Docker install default). Users running Zigbee2MQTT as a Home Assistant Community Add-on don't get discovered because that add-on serves its frontend / WebSocket on 8099.Confirmed in the add-on's config: https://github.com/zigbee2mqtt/hassio-zigbee2mqtt/blob/master/zigbee2mqtt/config.yaml
Proposed change
Probe both ports during the LAN sweep. When a host responds on either, record
host:port(or surface it as a typed result, e.g.DiscoveredHost { host, port }) so the user lands on the right port when they tap to add the server, instead of being defaulted to 8080.Scope
Z2MDiscoveryService.z2mPortbecomes a list:[8080, 8099]. Probe loop iterates both per host.discoveredHostsbecomesSet<DiscoveredEndpoint>(or similar) with host + port;ConnectionDiscoverySectionshows the port when it's non-default.presentNewServer(prefilledHost:)→presentNewServer(prefilledHost:port:)so the editor opens with the right port pre-filled.zigbee2mqtt(already done).Acceptance criteria
8099in the editor.