homieiot / convention

🏡 The Homie Convention: a lightweight MQTT convention for the IoT
https://homieiot.github.io/
Other
705 stars 59 forks source link

Changing $homie value #212

Open bggardner opened 4 years ago

bggardner commented 4 years ago

In 6d852df the convention was updated with:

The following MQTT topics must remain unchanged when a device is in ready, sleeping or alert state:

Any device attributes except $name and $state
The $properties attribute of any node
Any attribute of any property except $name

However, the convention also states:

Homie controllers must by default perform auto-discovery on the wildcard topic "+/+/$homie".

My first reaction would be to add $homie to the list of device attributes that cannot be changed when a device is in ready, sleeping, or alert state. However, I believe the intent is that publishing to $homie (regardless of $state) triggers a "re-discovery" since the protocol version may have changed. In any case, consider adding some clarification to the convention, either in both sections mentioned above, and/or something like:

Publishing to a device's $homie attribute will trigger a rediscovery by Homie controllers, so it is recommended that devices disconnect or enter the init state first.
piegamesde commented 4 years ago

I think adding $homie to that list is fine. A change of the $homie value – thus, a protocol version change – is a form of re-configuration and should not be performed in any of the ready states.

However, I believe the intent is that publishing to $homie (regardless of $state) triggers a "re-discovery"

No, the $homie is there for auto-discovery. As far as I understand it, there is no such thing as "re-discovery". Controllers simply use this property to enumerate all Homie devices. They can then subscribe to the related properties (especially $state) if they are interested in updates to that device.