Control H1270 main/halo elements over IoT instead of the Platform API - #715
Open
danieldubrovski wants to merge 1 commit into
Open
Control H1270 main/halo elements over IoT instead of the Platform API#715danieldubrovski wants to merge 1 commit into
danieldubrovski wants to merge 1 commit into
Conversation
The H1270 Ceiling Light Ultra has an independently switchable main panel and background halo ring, exposed by the Platform API as the mainLightToggle and backgroundLightToggle instances. Both of those return `code: 200 success` and change nothing on the device, and device/state reports an empty string for each, so the switches also show as unknown in Home Assistant. The vendor app drives these elements over IoT with a 0x33 0x30 packet. That was confirmed by decoding the ptReal payloads stored in a Tap-to-Run shortcut created in the Govee app, which is the app's own serialized command; the same capture shows the device reporting both element states back in a single 0xaa 0x30 packet, whichever element index was queried. Add codecs for both packets, route the two toggle instances through IoT with the existing Platform API path kept as a fallback, and feed the status report into the switch entities. That last part closes the TODO in CapabilitySwitch::notify_state: Govee does return meaningful state for these instances, just over IoT rather than the Platform API. Registered for H1270 only, as that is the only SKU the packet layout has been confirmed on. Verified against a physical device. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
danieldubrovski
force-pushed
the
h1270-element-toggle
branch
from
September 1, 2026 21:01
a474e80 to
d3dd84b
Compare
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.
The H1270 Ceiling Light Ultra has an independently switchable main panel and background halo ring. The Platform API exposes these as mainLightToggle and backgroundLightToggle, but on this device both return code: 200 success and change nothing, and device/state reports an empty string for each — so the switches also sit at unknown state in Home Assistant.
The vendor app drives these elements over IoT with a 0x33 0x30 packet. I found this by decoding the ptReal payloads stored in a Tap-to-Run shortcut — i.e. the app's own serialized command, not guesswork. The same capture shows the device reporting both element states back in a single 0xaa 0x30
packet, whichever element index was queried.This PR:
That last point closes the existing TODO in CapabilitySwitch::notify_state — Govee does return meaningful state for these instances, just over IoT rather than the Platform API.
Registered for H1270 only rather than Generic:Light, since that's the only SKU I can confirm the layout on.
Verified against a physical H1270