Conversation
…rted switches Two VRF (multi-split) usability issues, both caused by the gateway caching each indoor unit's state and answering with a stale snapshot for a few seconds after a command. 1. Commands appeared to "bounce back". After setting e.g. a new target temperature, the next poll (up to 60s away) could read the gateway's old cached value and revert the UI. climate.py now remembers the options it just commanded and re-asserts them over the read-back until the device's own reported value confirms the change or an 8s TTL expires. Confirmation is checked against the value the device actually reported this cycle, not the optimistic overlay, so a genuinely-rejected command is not forced forever. A one-shot delayed refresh (~2s) also lets the UI confirm the change quickly instead of waiting for the next scan interval. The pending refresh handle is cancelled on entity removal. 2. Non-functional switches were shown. Many VRF indoor units return an empty string for properties they do not implement (Lig, Health, StHt, ...). A real, supported property comes back as an integer. switch.py adds a _prop_supported() check so xfan/lights/health/powersave/eightdegheat/ sleep/air are hidden when the unit reports the property as empty after a successful sync. State is left untouched until the first sync so nothing flickers on startup. Standalone (non-VRF) units are unaffected: they report real integers, so the switches stay available and the pending overlay simply confirms on the next read.
meirlo
marked this pull request as ready for review
September 18, 2026 10:53
Owner
|
I need some testers with VRF devices for this one! |
Contributor
Author
|
Hi @vellad1, @Ilya-Draigor and @ItayGo — you all run VRF setups. @RobHofmann needs a VRF owner to validate this PR. Could any of you give it a quick test and report back? Thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
On multi-split (VRF) setups the gateway caches each indoor unit's state and answers with a stale snapshot for a few seconds after a command. That surfaces as two annoyances:
Lig,Health,StHt, …), yet the switches are still exposed and do nothing.Changes
climate.py— hold commanded state until the device confirms~2 sdelayed refresh lets the UI confirm quickly instead of waiting for the next scan interval. The handle is cancelled on entity removal.switch.py— hide unsupported switches_prop_supported(): a supported property comes back as an integer; empty string /None/ missing after a successful sync means the unit doesn't implement it.xfan/lights/health/powersave/eightdegheat/sleep/airare hidden accordingly. State is left untouched until the first sync so nothing flickers on startup.Scope / safety
Standalone (non-VRF) units are unaffected: they report real integers, so switches stay available and the pending overlay just confirms on the next read.
Related
Part of a small VRF series (see #507 for reliable VRF discovery, and #454 for per-unit
device_info). Independent of both — can merge in any order.Testing
Tested on my own setup:
subMAC@gatewayMACform).Verified on the 4 indoor units: changing target temperature / mode no longer bounces back to the gateway's stale cached value on the next poll, and the change is confirmed in the UI within a couple of seconds. Switches the units don't implement (e.g. lights/health) are correctly hidden after the first sync, while the switches they do support remain available and functional.