Skip to content

Commit

Permalink
Fix ZHA definition error on received command (home-assistant#90602)
Browse files Browse the repository at this point in the history
* Fix use of deprecated command schema access

* Add a unit test
  • Loading branch information
puddly authored Mar 31, 2023
1 parent ad26317 commit 84eb9c5
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
10 changes: 7 additions & 3 deletions homeassistant/components/zha/core/channels/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,19 @@ class AttrReportConfig(TypedDict, total=True):

def parse_and_log_command(channel, tsn, command_id, args):
"""Parse and log a zigbee cluster command."""
cmd = channel.cluster.server_commands.get(command_id, [command_id])[0]
try:
name = channel.cluster.server_commands[command_id].name
except KeyError:
name = f"0x{command_id:02X}"

channel.debug(
"received '%s' command with %s args on cluster_id '%s' tsn '%s'",
cmd,
name,
args,
channel.cluster.cluster_id,
tsn,
)
return cmd
return name


def decorate_command(channel, command):
Expand Down
19 changes: 19 additions & 0 deletions tests/components/zha/test_base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
"""Test ZHA base channel module."""

from homeassistant.components.zha.core.channels.base import parse_and_log_command

from tests.components.zha.test_channels import ( # noqa: F401
channel_pool,
poll_control_ch,
zigpy_coordinator_device,
)


def test_parse_and_log_command(poll_control_ch): # noqa: F811
"""Test that `parse_and_log_command` correctly parses a known command."""
assert parse_and_log_command(poll_control_ch, 0x00, 0x01, []) == "fast_poll_stop"


def test_parse_and_log_command_unknown(poll_control_ch): # noqa: F811
"""Test that `parse_and_log_command` correctly parses an unknown command."""
assert parse_and_log_command(poll_control_ch, 0x00, 0xAB, []) == "0xAB"

0 comments on commit 84eb9c5

Please sign in to comment.