Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Evohome doesn't support FocusProWifiRetail system modes #118169

Open
aidanlane opened this issue May 26, 2024 · 14 comments
Open

Evohome doesn't support FocusProWifiRetail system modes #118169

aidanlane opened this issue May 26, 2024 · 14 comments
Assignees

Comments

@aidanlane
Copy link

aidanlane commented May 26, 2024

The problem

Temperature visible, but cannot control turn system on or off, nor set temperature (the UI dial doesn't move position at all).

e.g. when trying to switch it off, I see this error in the Home Assistant UI:

Failed to call service climate/set_hvac_mode. ControlSystem(id='2893084'): Unsupported/unknown mode: HeatingOff

See diagnostics information below.

Please let me know if there's anything I can do to help - thanks!

What version of Home Assistant Core has the issue?

core-2024.5.5

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

evohome

Link to integration documentation on our website

https://www.home-assistant.io/integrations/evohome/

Diagnostics information

Debug info from evohome-async client:

[
    {
        "locationInfo": {...},
        "gateways": [
            {
                "gatewayInfo": {...},
                "temperatureControlSystems": [
                    {
                        "systemId": "REDACTED",
                        "modelType": "FocusProWifiRetail",
                        "zones": [
                            {
                                "zoneId": "REDACTED",
                                "modelType": "FocusProWifiRetail",
                                "setpointCapabilities": {
                                    "vacationHoldCapabilities": {"isChangeable": false, "isCancelable": false},
                                    "maxHeatSetpoint": 32.0,
                                    "minHeatSetpoint": 4.5,
                                    "valueResolution": 0.5,
                                    "canControlHeat": true,
                                    "canControlCool": false,
                                    "allowedSetpointModes": ["PermanentOverride", "FollowSchedule", "TemporaryOverride", "VacationHold"],
                                    "maxDuration": "1.00:00:00",
                                    "timingResolution": "00:15:00"
                                },
                                "scheduleCapabilities": {
                                    "maxSwitchpointsPerDay": 4, "minSwitchpointsPerDay": 0, "timingResolution": "00:15:00", "setpointValueResolution": 0.5
                                },
                                "name": "THERMOSTAT",
                                "zoneType": "Thermostat"
                            }
                        ],
                        "allowedSystemModes": [
                            {"systemMode": "Off",  "canBePermanent": true, "canBeTemporary": false},
                            {"systemMode": "Heat", "canBePermanent": true, "canBeTemporary": false}
                        ]
                    }
                ]
            }
        ]
    }
]

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

@home-assistant
Copy link

Hey there @zxdavb, mind taking a look at this issue as it has been labeled with an integration (evohome) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of evohome can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign evohome Removes the current integration label and assignees on the issue, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


evohome documentation
evohome source
(message by IssueLinks)

@aidanlane
Copy link
Author

aidanlane commented May 26, 2024

These work correct when using evohome-async client:

On: await tcs.set_mode(SystemMode.HEAT)
Off: await tcs.set_mode(SystemMode.OFF)

@aidanlane
Copy link
Author

aidanlane commented May 26, 2024

This also works correctly with evohome-async client:

child: HotWater | Zone = tcs.zones_by_id['REDACTED']
print(child.temperature)
await child.set_temperature(19.0)

@zxdavb
Copy link
Contributor

zxdavb commented May 26, 2024

Thanks for your submission. This integration was written for - tested on - evohome. It should be able to support all TCC-based systems, but their are some subtle differences:

  • for 'off' this integration uses HeatingOff (as per evohome), whereas FocusPro requires Off. This should be easy enough to fix.
  • FocusPro supports a VacationHold mode for zones whereas that evohome does not
  • and other differences

This should be fixed easily enough, but there are two confounding factors:

  • HA is reluctant to accept any improvements to integrations until after that have been modified to use config flow... evohome does not yet support config flow
  • the scheme that evohome uses within HA is not compatible with HomeKit, etc. Fixing that will be a breaking change - and that should be fixed before adding support for FocusPro

@zxdavb
Copy link
Contributor

zxdavb commented May 26, 2024

For EvoTouch (EvoTouch/HeatingZone) temperature control systems (TCSs, aka controllers) we have the following allowedSystemModes:

{"systemMode": "HeatingOff",    "canBePermanent": true, "canBeTemporary": false},
{"systemMode": "Auto",          "canBePermanent": true, "canBeTemporary": false},
{"systemMode": "AutoWithReset", "canBePermanent": true, "canBeTemporary": false},
{"systemMode": "AutoWithEco",   "canBePermanent": true, "canBeTemporary": true, "maxDuration":  "1.00:00:00", "timingResolution":   "01:00:00", "timingMode": "Duration"},
{"systemMode": "Away",          "canBePermanent": true, "canBeTemporary": true, "maxDuration": "99.00:00:00", "timingResolution": "1.00:00:00", "timingMode": "Period"},
{"systemMode": "DayOff",        "canBePermanent": true, "canBeTemporary": true, "maxDuration": "99.00:00:00", "timingResolution": "1.00:00:00", "timingMode": "Period"},
{"systemMode": "Custom",        "canBePermanent": true, "canBeTemporary": true, "maxDuration": "99.00:00:00", "timingResolution": "1.00:00:00", "timingMode": "Period"}

Later versions of the above definitely can support Cool mode, but I am yet to receive the corresponding JSON.

For EvoTouch/RoundWireless and EvoTouch/RoundModulation TCSs we have the following allowedSystemModes:

{"systemMode": "HeatingOff",    "canBePermanent": true, "canBeTemporary": false}
{"systemMode": "Auto",          "canBePermanent": true, "canBeTemporary": false},
{"systemMode": "AutoWithEco",   "canBePermanent": true, "canBeTemporary": true, "maxDuration":  "1.00:00:00", "timingResolution":   "01:00:00", "timingMode": "Duration"},
{"systemMode": "Away",          "canBePermanent": true, "canBeTemporary": true, "maxDuration": "99.00:00:00", "timingResolution": "1.00:00:00", "timingMode": "Period"},

These systems are simply a subset of the first schema, above.

However, for FocusProWifi TCSs we have the following allowedSystemModes:

{"systemMode": "Off",           "canBePermanent": true, "canBeTemporary": false},
{"systemMode": "Heat",          "canBePermanent": true, "canBeTemporary": false},
{"systemMode": "Cool",          "canBePermanent": true, "canBeTemporary": false}

Not all systems support Cool (in which case that mode is absent).

@zxdavb zxdavb changed the title Evohome doesn't support FocusProWifiRetail correctly, needs to use different system modes Evohome doesn't support FocusProWifiRetail system modes May 26, 2024
@zxdavb
Copy link
Contributor

zxdavb commented May 26, 2024

There are other differences. Regarding zone modes...

For all EvoTouch zones, we have the following allowedSetpointModes

["PermanentOverride", "FollowSchedule", "TemporaryOverride"]

However, for FocusProWifi zones we have:

["PermanentOverride", "FollowSchedule", "TemporaryOverride", "VacationHold"],

@zxdavb
Copy link
Contributor

zxdavb commented May 26, 2024

I note the following issues, which are relevant here:

@aidanlane
Copy link
Author

Thanks for your super speedy reply, insights, and research @zxdavb!

Is there something I can help with?
I can put my old coding hat back on😉 and help with some of the blockers.

@zxdavb
Copy link
Contributor

zxdavb commented May 27, 2024

Is there something I can help with?

I think it's time to get config flow into this integration. Here's where I'll be working on it: origin/evo_config_flow

@zxdavb
Copy link
Contributor

zxdavb commented May 29, 2024

This is the first PR: #118385

@aidanlane
Copy link
Author

Exciting! Let me know if you want me to test anything 👍

@zxdavb
Copy link
Contributor

zxdavb commented Jun 11, 2024

I am still working on this - latest PR is #119432

@aidanlane
Copy link
Author

Thanks!

@zxdavb zxdavb mentioned this issue Aug 4, 2024
19 tasks
@zxdavb
Copy link
Contributor

zxdavb commented Aug 5, 2024

@aidanlane Have a look at: https://github.com/zxdavb/evohome-async/wiki/Hass:-Evohome-Debug-Logs

If you could post those debug log entries here, I'd be grateful!

If you can't, I'll post an updated evohome-async client - let me know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants