Skip to content

Model command arguments as struct parameters - #4

Merged
MarkParker5 merged 3 commits into
developfrom
struct-commands
Oct 8, 2026
Merged

MarkParker5 merged 3 commits into
developfrom
struct-commands

Conversation

@MarkParker5

Copy link
Copy Markdown
Member

Commands with arguments are SDK struct parameters (value keyed by sub-parameter id); argument-less commands stay none (buttons).

  • Sending: sub-parameter id keys are translated to zigpy field names; name keys (stored default_arguments) still work
  • Main parameter: an argument-taking main command gets an id-keyed default_value (a one-value button), so it still passes can_be_main_parameter
  • Enum valid_values are value → label for command fields and attributes (they were inverted)
  • Requires SDK 0.1.7 (a set default_value survives storage, so FanControl's off/on cycle stays a toggle); start_pairing_window accepts credentials

Tests first (6741ac8). Local: poe check --ci green, 35 passed (py3.12; 35 on py3.13 before rebase).

- Translate sub-parameter id keys to zigpy field names when sending
- Store an argument-taking main command's arguments as an id-keyed
  default_value so it stays main-parameter eligible
- Map enum valid_values (command fields and attributes) value -> label
@MarkParker5
MarkParker5 merged commit 51e0517 into develop Oct 8, 2026
6 checks passed
@MarkParker5
MarkParker5 deleted the struct-commands branch October 14, 2026 23:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant