From b018465a4d47dbfc2e3c3efb722bd661c48892ff Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Sun, 24 Aug 2025 20:07:55 +0200 Subject: [PATCH] Update togrill to 0.8.0 (#150945) --- homeassistant/components/togrill/event.py | 2 +- .../components/togrill/manifest.json | 2 +- homeassistant/components/togrill/strings.json | 11 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- .../togrill/snapshots/test_event.ambr | 468 ++++-------------- tests/components/togrill/test_event.py | 17 +- 7 files changed, 135 insertions(+), 369 deletions(-) diff --git a/homeassistant/components/togrill/event.py b/homeassistant/components/togrill/event.py index 241bc2d4e63..d7d67b464d1 100644 --- a/homeassistant/components/togrill/event.py +++ b/homeassistant/components/togrill/event.py @@ -60,4 +60,4 @@ class ToGrillEventEntity(ToGrillEntity, EventEntity): if packet.probe != self._probe_number: return - self._trigger_event(slugify(message.name)) + self._trigger_event(message.name.lower()) diff --git a/homeassistant/components/togrill/manifest.json b/homeassistant/components/togrill/manifest.json index 4b833aec4ee..fb56b8e3a82 100644 --- a/homeassistant/components/togrill/manifest.json +++ b/homeassistant/components/togrill/manifest.json @@ -15,5 +15,5 @@ "iot_class": "local_push", "loggers": ["togrill_bluetooth"], "quality_scale": "bronze", - "requirements": ["togrill-bluetooth==0.7.0"] + "requirements": ["togrill-bluetooth==0.8.0"] } diff --git a/homeassistant/components/togrill/strings.json b/homeassistant/components/togrill/strings.json index 309ac65f54c..cef758b7d2e 100644 --- a/homeassistant/components/togrill/strings.json +++ b/homeassistant/components/togrill/strings.json @@ -55,7 +55,16 @@ "state": { "probe_acknowledge": "Alarm acknowledged", "probe_alarm": "Alarm triggered", - "probe_disconnected": "Probe disconnected" + "probe_disconnected": "Probe disconnected", + "device_low_power": "Device has low battery", + "device_high_temp": "Device has too high temperature", + "probe_below_minimum": "Temperature too low", + "probe_above_maximum": "Temperature too high", + "ignition_failure": "Ignition failure", + "ambient_low_temp": "Ambient temperature too low", + "ambient_over_heat": "Ambient temperature too high", + "ambient_cool_down": "Ambient temperature cooldown", + "probe_timer_alarm": "Timer alarm" } } } diff --git a/requirements_all.txt b/requirements_all.txt index 18876e55b90..a41c964a1fb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2951,7 +2951,7 @@ tmb==0.0.4 todoist-api-python==2.1.7 # homeassistant.components.togrill -togrill-bluetooth==0.7.0 +togrill-bluetooth==0.8.0 # homeassistant.components.tolo tololib==1.2.2 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index ba1dc3f5e8b..921d6d9d1f5 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -2428,7 +2428,7 @@ tilt-pi==0.2.1 todoist-api-python==2.1.7 # homeassistant.components.togrill -togrill-bluetooth==0.7.0 +togrill-bluetooth==0.8.0 # homeassistant.components.tolo tololib==1.2.2 diff --git a/tests/components/togrill/snapshots/test_event.ambr b/tests/components/togrill/snapshots/test_event.ambr index c0200f82461..99908cd85c2 100644 --- a/tests/components/togrill/snapshots/test_event.ambr +++ b/tests/components/togrill/snapshots/test_event.ambr @@ -1,364 +1,4 @@ # serializer version: 1 -# name: test_events[0][event.pro_05_probe_1-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'event', - 'entity_category': None, - 'entity_id': 'event.pro_05_probe_1', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Probe 1', - 'platform': 'togrill', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'event', - 'unique_id': '00000000-0000-0000-0000-000000000001_1', - 'unit_of_measurement': None, - }) -# --- -# name: test_events[0][event.pro_05_probe_1-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'event_type': 'probe_acknowledge', - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - 'friendly_name': 'Pro-05 Probe 1', - }), - 'context': , - 'entity_id': 'event.pro_05_probe_1', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '2023-10-21T00:00:00.000+00:00', - }) -# --- -# name: test_events[0][event.pro_05_probe_2-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'event', - 'entity_category': None, - 'entity_id': 'event.pro_05_probe_2', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Probe 2', - 'platform': 'togrill', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'event', - 'unique_id': '00000000-0000-0000-0000-000000000001_2', - 'unit_of_measurement': None, - }) -# --- -# name: test_events[0][event.pro_05_probe_2-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'event_type': None, - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - 'friendly_name': 'Pro-05 Probe 2', - }), - 'context': , - 'entity_id': 'event.pro_05_probe_2', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'unknown', - }) -# --- -# name: test_events[5][event.pro_05_probe_1-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'event', - 'entity_category': None, - 'entity_id': 'event.pro_05_probe_1', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Probe 1', - 'platform': 'togrill', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'event', - 'unique_id': '00000000-0000-0000-0000-000000000001_1', - 'unit_of_measurement': None, - }) -# --- -# name: test_events[5][event.pro_05_probe_1-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'event_type': 'probe_alarm', - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - 'friendly_name': 'Pro-05 Probe 1', - }), - 'context': , - 'entity_id': 'event.pro_05_probe_1', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '2023-10-21T00:00:00.000+00:00', - }) -# --- -# name: test_events[5][event.pro_05_probe_2-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'event', - 'entity_category': None, - 'entity_id': 'event.pro_05_probe_2', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Probe 2', - 'platform': 'togrill', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'event', - 'unique_id': '00000000-0000-0000-0000-000000000001_2', - 'unit_of_measurement': None, - }) -# --- -# name: test_events[5][event.pro_05_probe_2-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'event_type': None, - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - 'friendly_name': 'Pro-05 Probe 2', - }), - 'context': , - 'entity_id': 'event.pro_05_probe_2', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'unknown', - }) -# --- -# name: test_events[6][event.pro_05_probe_1-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'event', - 'entity_category': None, - 'entity_id': 'event.pro_05_probe_1', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Probe 1', - 'platform': 'togrill', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'event', - 'unique_id': '00000000-0000-0000-0000-000000000001_1', - 'unit_of_measurement': None, - }) -# --- -# name: test_events[6][event.pro_05_probe_1-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'event_type': 'probe_disconnected', - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - 'friendly_name': 'Pro-05 Probe 1', - }), - 'context': , - 'entity_id': 'event.pro_05_probe_1', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '2023-10-21T00:00:00.000+00:00', - }) -# --- -# name: test_events[6][event.pro_05_probe_2-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - }), - 'config_entry_id': , - 'config_subentry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'event', - 'entity_category': None, - 'entity_id': 'event.pro_05_probe_2', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Probe 2', - 'platform': 'togrill', - 'previous_unique_id': None, - 'suggested_object_id': None, - 'supported_features': 0, - 'translation_key': 'event', - 'unique_id': '00000000-0000-0000-0000-000000000001_2', - 'unit_of_measurement': None, - }) -# --- -# name: test_events[6][event.pro_05_probe_2-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'event_type': None, - 'event_types': list([ - 'probe_acknowledge', - 'probe_alarm', - 'probe_disconnected', - ]), - 'friendly_name': 'Pro-05 Probe 2', - }), - 'context': , - 'entity_id': 'event.pro_05_probe_2', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'unknown', - }) -# --- # name: test_setup[no_data][event.pro_05_probe_1-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -367,8 +7,17 @@ 'capabilities': dict({ 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), }), 'config_entry_id': , @@ -406,8 +55,17 @@ 'event_type': None, 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), 'friendly_name': 'Pro-05 Probe 1', }), @@ -427,8 +85,17 @@ 'capabilities': dict({ 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), }), 'config_entry_id': , @@ -466,8 +133,17 @@ 'event_type': None, 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), 'friendly_name': 'Pro-05 Probe 2', }), @@ -487,8 +163,17 @@ 'capabilities': dict({ 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), }), 'config_entry_id': , @@ -526,8 +211,17 @@ 'event_type': None, 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), 'friendly_name': 'Pro-05 Probe 1', }), @@ -547,8 +241,17 @@ 'capabilities': dict({ 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), }), 'config_entry_id': , @@ -586,8 +289,17 @@ 'event_type': None, 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), 'friendly_name': 'Pro-05 Probe 2', }), @@ -607,8 +319,17 @@ 'capabilities': dict({ 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), }), 'config_entry_id': , @@ -646,8 +367,17 @@ 'event_type': None, 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), 'friendly_name': 'Pro-05 Probe 1', }), @@ -667,8 +397,17 @@ 'capabilities': dict({ 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), }), 'config_entry_id': , @@ -706,8 +445,17 @@ 'event_type': None, 'event_types': list([ 'probe_acknowledge', + 'device_low_power', + 'device_high_temp', + 'probe_below_minimum', + 'probe_above_maximum', 'probe_alarm', 'probe_disconnected', + 'ignition_failure', + 'ambient_low_temp', + 'ambient_over_heat', + 'ambient_cool_down', + 'probe_timer_alarm', ]), 'friendly_name': 'Pro-05 Probe 2', }), diff --git a/tests/components/togrill/test_event.py b/tests/components/togrill/test_event.py index 932e6e93433..6aa6019303a 100644 --- a/tests/components/togrill/test_event.py +++ b/tests/components/togrill/test_event.py @@ -6,9 +6,11 @@ import pytest from syrupy.assertion import SnapshotAssertion from togrill_bluetooth.packets import PacketA1Notify, PacketA5Notify -from homeassistant.const import Platform +from homeassistant.components.event import ATTR_EVENT_TYPE +from homeassistant.const import STATE_UNKNOWN, Platform from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er +from homeassistant.util import slugify from . import TOGRILL_SERVICE_INFO, setup_entry @@ -48,7 +50,7 @@ async def test_setup( @pytest.mark.freeze_time("2023-10-21") @pytest.mark.parametrize( "message", - list(PacketA5Notify.Message), + [pytest.param(message, id=message.name) for message in PacketA5Notify.Message], ) async def test_events( hass: HomeAssistant, @@ -56,7 +58,7 @@ async def test_events( snapshot: SnapshotAssertion, mock_entry: MockConfigEntry, mock_client: Mock, - message, + message: PacketA5Notify.Message, ) -> None: """Test all possible events.""" @@ -66,4 +68,11 @@ async def test_events( mock_client.mocked_notify(PacketA5Notify(probe=1, message=message)) - await snapshot_platform(hass, entity_registry, snapshot, mock_entry.entry_id) + state = hass.states.get("event.pro_05_probe_2") + assert state + assert state.state == STATE_UNKNOWN + + state = hass.states.get("event.pro_05_probe_1") + assert state + assert state.state == "2023-10-21T00:00:00.000+00:00" + assert state.attributes.get(ATTR_EVENT_TYPE) == slugify(message.name)