Update togrill to 0.8.0 (#150945)

This commit is contained in:
Joakim Plate
2025-08-24 20:07:55 +02:00
committed by GitHub
parent e797d651b5
commit b018465a4d
7 changed files with 135 additions and 369 deletions

View File

@@ -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())

View File

@@ -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"]
}

View File

@@ -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"
}
}
}

2
requirements_all.txt generated
View File

@@ -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

View File

@@ -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

View File

@@ -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': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'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': <ANY>,
'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': <ANY>,
'entity_id': 'event.pro_05_probe_1',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'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': <ANY>,
'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': <ANY>,
'entity_id': 'event.pro_05_probe_2',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'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': <ANY>,
'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': <ANY>,
'entity_id': 'event.pro_05_probe_1',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'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': <ANY>,
'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': <ANY>,
'entity_id': 'event.pro_05_probe_2',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'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': <ANY>,
'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': <ANY>,
'entity_id': 'event.pro_05_probe_1',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'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': <ANY>,
'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': <ANY>,
'entity_id': 'event.pro_05_probe_2',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'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': <ANY>,
@@ -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': <ANY>,
@@ -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': <ANY>,
@@ -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': <ANY>,
@@ -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': <ANY>,
@@ -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': <ANY>,
@@ -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',
}),

View File

@@ -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)