Improved devicePublish topic parsing #1373
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I have refactored the devicePublish topic parsing to use regex capture groups as this seems more natural than manually splitting on slashes.
Furthermore I have added the ability to set attributes directly using the mqtt topic rather than having to set it using JSON while still maintaining backwards compatibility with the JSON approach.
This was mainly done to enable thermostat integration with homeassistant's MQTT climate component: https://www.home-assistant.io/components/climate.mqtt/ which does not support templating for the command topics to set the target temperature or mode.
In my case I have an eCozy thermostat named
zigbee2mqtt/livingroom/thermostat_right
which means I can now publish to the following topic to set the target temperature:zigbee2mqtt/livingroom/thermostat_right/set/occupied_heating_setpoint
.As such I can now control it from homeassitant with the following yaml:
Next step is to add climate device discovery but that'll be later in a different PR.