Repository navigation
Run modes (music/custom shows, effect state), Fireworks ID, deviceTypes 127/171, metadata guard - #48
Conversation
aa79b27 to
f678132
Compare
|
Hardware confirmation for deviceType 171, and one extra data point on the metadata guard. Type 171 is the Matter revision of the Full Color A19. I have two of them. In The unknown-type crash isn't limited to the HA-birth re-announce. On a build of Each failing packet was dropped ( Happy to test this branch against my live mesh (21 devices, mix of BT-relayed and Wi-Fi bridges, both type-171 bulbs included) and report back, if that's useful. I'd run it merged with my fork's mesh-refresh commits. |
…evice Covers the 0x73 mesh-info path crdson93 hit in baudneo#48 (handlers._process_73_mesh_info -> CyncDevice.handle_entity_update -> parse_entity_state): with two type-171 bulbs in a 19-device mesh, the AttributeError dropped the whole mesh packet, so status from the known devices in it stopped too. Fails without the metadata guard (commit 3), passes with it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013u4ng89WpKczAqWx9eWCLX
|
Thanks, this is really useful, both the type 171 confirmation from your own bulbs and the mesh-info trace. I've added a test for that path: a status for a type the table doesn't know goes through And yes, please test it on your mesh, merged with your mesh-refresh commits. 21 devices with a mix of BT-relayed and Wi-Fi bridges is a much wider check than my setup. I'd especially like to hear whether the type-171 bulbs come up as lights with color and white once you switch them back from |
On a type 75 (24' Cafe Lights, fw 1.0.516) 0x3A did nothing, also with the table's own last byte 0xDA, while 0x03 ran Fireworks (status 0x82). 0x3A works on the devices FACTORY_EFFECTS_BYTES was built from, so it stays the default and LIGHT_SHOW_ID_OVERRIDES picks the ID by deviceType (suggested in baudneo#46). The other nine IDs matched on type 75. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… A19, Matter) 127: GE Cync Dynamic Effects Outdoor Smart Eave Lights, CEV100CDOD, fw 1.0.510 (color, tunable white, dynamic per the Cync cloud's own capability data). 171: GE CYNC Full Color A19, CLEDA199CD1MS, Matter logo, 800 lm, 9.5 W, 2000-7000 K, fw 1.1.204; color, temperature and brightness verified working. Details in issue baudneo#12. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A deviceType that model_info does not know has metadata None, and the motion check read node.metadata.capabilities. On an HA birth the re-announce loop stopped at the first such device, so every device after it kept an unknown state (baudneo#45). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ct in state set_lightshow sends op E2 / cmd 0E 11 02 07 <mode> <index> <any> for every run-mode effect: the factory light shows (mode 1, IDs per deviceType via light_show_id), the 8 music shows (mode 2), the user's custom show slots (index 10 up in both modes) and stop_show (mode 0). Dynamic devices get the music shows and custom slots in the HA effect list. Status byte 6 names the running show (80+index-1 light, A0+index-1 music, E3 Cyber), decoded with the device's type and published as the entity's effect. Values measured one by one on a deviceType 75; see docs/protocol.md and baudneo#46 / baudneo#47. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…evice Covers the 0x73 mesh-info path crdson93 hit in baudneo#48 (handlers._process_73_mesh_info -> CyncDevice.handle_entity_update -> parse_entity_state): with two type-171 bulbs in a 19-device mesh, the AttributeError dropped the whole mesh packet, so status from the known devices in it stopped too. Fails without the metadata guard (commit 3), passes with it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
871402d to
61d9e11
Compare
Rebased onto
claude-refactoras asked in #45. Five commits, each with its own tests. Each one passespytestandruffon its own, so you can take any of them separately:Fireworks ID per deviceType:
0x3Astays the default.0x03is used on deviceType 75, where0x3Adoes nothing, also with0xDA. See Light show (preset effect) IDs verified on hardware: Fireworks is0x03, not0x3A; plus status codes for reporting the active effect #46.Add deviceTypes 127 and 171 (the Dynamic Effects eave lights and the Matter revision of the Full Color A19). Details in Device not working / Unknown device / Incorrect device / Have better info available / Better white temp handling #12.
parse_entity_state: don't raise for a device without metadata. On an HA birth, the re-announce stopped at the first unknown deviceType, so every device after it kept an unknown state. See MQTT receiver dies on HA birth re-announce when a device type has no metadata ('NoneType' object has no attribute 'capabilities') #45. As @crdson93 found below, the same guard also fixes the 0x73 mesh-info path, where an unknown type dropped the whole mesh packet and stopped status from the known devices in it.Run modes: music shows, the user's custom show slots,
stop_show, and the running show published as the entity'seffect(read from status byte 6). The newcync_lan/effects.pyholds pure functions and uses the same per-deviceType light-show IDs.set_lightshowuses it, anddocs/protocol.mdgets a run-mode section with confidence tags. See Light show (preset effect) IDs verified on hardware: Fireworks is0x03, not0x3A; plus status codes for reporting the active effect #46 and Feature: music shows (preset + custom) via run mode - same0xE2 / 0x0Ecommand asset_lightshow#47.Test for the mesh-info path (the chain
_process_73_mesh_infouses): an unknown type's status followed by a known device's status, and both must publish. It fails without commit 3 and passes with it.Testing
uv run pytest -q: 266 passed (198 before + 68 new).uv run ruff check src testsis clean. Both were checked at every commit.pythonbranch plus these changes) on that string. The0x3A+0xDAFireworks packet was re-tested locally on 2026-10-26.dynamicdevices), the metadata guard through a real HA restart, and this exact branch on hardware.Notes
0x03, not0x3A; plus status codes for reporting the active effect #46: commit 1 now picks the Fireworks ID by deviceType instead of replacing0x3A. The branch was rebuilt so every commit still works on its own.FACTORY_EFFECTS_BYTES[...][1]). The new effects send a random byte, like homebridge-cync-app. Any byte worked for every show tested.music_supernovaandcustom_music_4(the app's 4th custom music slot, index 13).🤖 Generated with Claude Code