The firmware sets rootTopic to 'mySpa' followed by max(HNA_MAC, SNA_MAC).
Previously, adapter identification assumed rootTopic always contained
the HNA MAC address, classifying devices by checking whether rootTopic
ended with the hostname MAC suffix. When a user's SNA has a numerically
higher MAC address than their HNA, this logic inverted device detection:
the SNA was incorrectly identified as an HNA (allowing Zeroconf to
configure an adapter without spa telemetry), while manual configuration
with the actual HNA was blocked with HotSpringSNADetectedError.
Disambiguate device roles using the firmware's actual invariants:
- On HNA with an active link, SNAready is reported as 'Yes' in /startup
(the SNA firmware unconditionally sets SNAready to 'No').
- When communicating with the tub controller over RS-485, the HNA
receives live water temperatures and control box version in /status,
which are never populated on the standalone SNA.