Achronite / mqtt-energenie-ener314rt

MQTT interface for Energenie ENER314-RT add-on board for the Raspberry Pi, designed for use by Home Assistant.
MIT License
13 stars 5 forks source link

Confirm function of HVAC mode for eTRV #47

Closed genestealer closed 11 months ago

genestealer commented 1 year ago

I cannot determine the your use: mode_cmd_tpl (Mode Command Template) mode_stat_tpl (Mode Status Template): in the file 3.json for the eTRV.

I was not aware the valves had a "mode", rather they can only be set to a target temperature setpoint (auto mode) or driven fully open or fully closed.

Can you please let me know, as I may be simply missing something?

genestealer commented 1 year ago

@Achronite Any feedback on this?

Achronite commented 1 year ago

There are 3 modes as you say, heat (fully open) off(fully closed) and auto. That is what the template allows so it can show as a climate entity:. The default card looks like this: image

genestealer commented 1 year ago

Have you considered just having a heat mode? To avoid confusion, considering heat mode will ignore any set temperature?

Okay so I've had a thought. It's definitely worth removing the auto mode. Leaving you with the options of:

Auto suggests the ability to both heat and cool.

If the valve needs to be fully opened or closed. Then you choose the command operation from the drop down box in the item and not from the climate panel.

This would definitely avoid issues with Google assistant voice controls. Accidentally opening the valves thinking that they need to be set to heat mode in order to operate the valve.

genestealer commented 1 year ago

@Achronite I have created a pull request, to my dev branch, with my suggested fix, can you please have a look.

"Modes were ambiguous and causing with google assistant. E.G. Voice command: "Set heat to 24 degrees" would change mode to "heat" and set temp to 24, however the implementation of "heat mode" was not correct and would foruce the valve fully open. Rather the valve should be set to "auto".

Fix: Remove "auto" and make "heat" --> "auto". The valve can still be set to fully closed and open via the "commands""

https://github.com/genestealer/mqtt-energenie-ener314rt/pull/1

genestealer commented 1 year ago

There are 3 modes as you say, heat (fully open) off(fully closed) and auto. That is what the template allows so it can show as a climate entity:. The default card looks like this: image

I just noticed the calendar icon, is that a custom card or some sort of scheduler? image

Update: I found this, which looks awesome, but does not show the calendar icon on the climate card https://github.com/nielsfaber/scheduler-component https://github.com/nielsfaber/scheduler-card

Achronite commented 1 year ago

The Calendar icon indicates 'auto' mode, it is in the standard card for climate (the screenshot is from the auto-generated dashboard) in HA 2023.9.2 image

So I think I have it right, in that 'Auto' uses the setpoint and Heat is 'always ON'. ??? image

genestealer commented 1 year ago

@Achronite I appreciate your input and the effort you've put into the eTRV system. I'd like to respectfully present my perspective on the current modes and suggest a modification that could enhance user experience and reduce confusion, especially when using voice commands with Google Assistant.

Currently, the eTRV system offers three modes: Heat (fully open), Off (fully closed), and Auto. However, this arrangement has led to some ambiguity, particularly when users interact with voice assistants. For instance, commanding Google Assistant to "Set heat to 24 degrees" changes the mode to "heat" and sets the temperature to 24 degrees. Unfortunately, this implementation of "heat mode" doesn't align with user expectations, as it fully opens the valve.

To improve the system's clarity and user-friendliness, I propose removing the "auto" mode entirely and simplifying the modes as follows:

Off: This mode will fully close the valve, effectively turning the heating off. Heat: This mode will act as the normal operational mode, where users set the desired temperature setpoint. By adopting this approach, we eliminate the potential for confusion, especially with voice controls. Users won't inadvertently open or close the valve, thinking they need to set it to "heat mode" to operate it. Instead, they can simply control the heating with the temperature setpoint, which will always operate in "auto" mode behind the scenes.

This adjustment will align with user expectations and streamline the user interface, making it more intuitive and user-friendly. It will also prevent accidental misconfigurations through voice commands, providing a smoother and safer user experience.

Achronite commented 1 year ago

Accepting this change removes the 'always on' capability for all users. I need to look into this a little more, obtaining best practice for what others have done for different brands of Thermostats/TRVs, before accepting the suggestion.

Please bear with me.

Achronite commented 1 year ago

So this is what I have found out. sources used:

  1. This problem is not unique to my implementation.
  2. There is not a direct correlation between HA and google as to what each mode means.
  3. There is not an 'always on' setting for a google thermostat.
  4. My initial understanding of 'heat' mode meaning 'always on' in HA is wrong! Heat mode uses setPoint.
  5. HA 'auto' mode means that it uses a schedule, learned behaviour or AI (which does not apply here).

Conclusion: It looks like your suggestion would be a good compromise and match for the HA Climate entity. The downside is that the 'always on' option for the eTRV is removed from the climate entity.

genestealer commented 1 year ago

Thank you for your thorough research,

It's interesting to see that our challenge isn't unique and that mode definitions vary between HA and Google. I agree with your conclusion that simplifying modes to 'off' and 'heat' aligns better with HA Climate and user understanding.

The fact that your Google Nest thermostat also uses these modes reinforces their suitability. I support this change for clarity and consistency. I have updated the pull request with this change: https://github.com/genestealer/mqtt-energenie-ener314rt/commit/6d67e92139143e71df5ba2676bb9a9164529cc25

Example nest thermostat:

Screenshot 2023-10-05 112428 Screenshot 2023-10-05 112355