switchbot_cloud: Add firmware information (#143693)

This commit is contained in:
Manuel Rüger 2025-04-30 14:48:18 +02:00 committed by GitHub
parent d924f0b1d6
commit bdd9099294
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 18 additions and 0 deletions

View File

@ -29,11 +29,15 @@ class SwitchBotCloudEntity(CoordinatorEntity[SwitchBotCoordinator]):
super().__init__(coordinator) super().__init__(coordinator)
self._api = api self._api = api
self._attr_unique_id = device.device_id self._attr_unique_id = device.device_id
_sw_version = None
if self.coordinator.data is not None:
_sw_version = self.coordinator.data.get("version")
self._attr_device_info = DeviceInfo( self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, device.device_id)}, identifiers={(DOMAIN, device.device_id)},
name=device.device_name, name=device.device_name,
manufacturer="SwitchBot", manufacturer="SwitchBot",
model=device.device_type, model=device.device_type,
sw_version=_sw_version,
) )
async def send_api_command( async def send_api_command(

View File

@ -19,6 +19,7 @@ async def test_pressmode_bot(
"""Test press.""" """Test press."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="bot-id-1", deviceId="bot-id-1",
deviceName="bot-1", deviceName="bot-1",
deviceType="Bot", deviceType="Bot",
@ -51,6 +52,7 @@ async def test_switchmode_bot_no_button_entity(
"""Test a switchMode bot isn't added as a button.""" """Test a switchMode bot isn't added as a button."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="bot-id-1", deviceId="bot-id-1",
deviceName="bot-1", deviceName="bot-1",
deviceType="Bot", deviceType="Bot",

View File

@ -33,30 +33,35 @@ async def test_setup_entry_success(
"""Test successful setup of entry.""" """Test successful setup of entry."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Remote( Remote(
version="V1.0",
deviceId="air-conditonner-id-1", deviceId="air-conditonner-id-1",
deviceName="air-conditonner-name-1", deviceName="air-conditonner-name-1",
remoteType="Air Conditioner", remoteType="Air Conditioner",
hubDeviceId="test-hub-id", hubDeviceId="test-hub-id",
), ),
Device( Device(
version="V1.0",
deviceId="plug-id-1", deviceId="plug-id-1",
deviceName="plug-name-1", deviceName="plug-name-1",
deviceType="Plug", deviceType="Plug",
hubDeviceId="test-hub-id", hubDeviceId="test-hub-id",
), ),
Remote( Remote(
version="V1.0",
deviceId="plug-id-2", deviceId="plug-id-2",
deviceName="plug-name-2", deviceName="plug-name-2",
remoteType="DIY Plug", remoteType="DIY Plug",
hubDeviceId="test-hub-id", hubDeviceId="test-hub-id",
), ),
Remote( Remote(
version="V1.0",
deviceId="meter-pro-1", deviceId="meter-pro-1",
deviceName="meter-pro-name-1", deviceName="meter-pro-name-1",
deviceType="MeterPro(CO2)", deviceType="MeterPro(CO2)",
hubDeviceId="test-hub-id", hubDeviceId="test-hub-id",
), ),
Remote( Remote(
version="V1.0",
deviceId="hub2-1", deviceId="hub2-1",
deviceName="hub2-name-1", deviceName="hub2-name-1",
deviceType="Hub 2", deviceType="Hub 2",
@ -104,6 +109,7 @@ async def test_setup_entry_fails_when_refreshing(
"""Test error handling in get_status in setup of entry.""" """Test error handling in get_status in setup of entry."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="test-id", deviceId="test-id",
deviceName="test-name", deviceName="test-name",
deviceType="Plug", deviceType="Plug",

View File

@ -17,6 +17,7 @@ async def test_lock(hass: HomeAssistant, mock_list_devices, mock_get_status) ->
"""Test locking and unlocking.""" """Test locking and unlocking."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="lock-id-1", deviceId="lock-id-1",
deviceName="lock-1", deviceName="lock-1",
deviceType="Smart Lock", deviceType="Smart Lock",

View File

@ -26,6 +26,7 @@ async def test_meter(
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="meter-id-1", deviceId="meter-id-1",
deviceName="meter-1", deviceName="meter-1",
deviceType="Meter", deviceType="Meter",
@ -50,6 +51,7 @@ async def test_meter_no_coordinator_data(
"""Test meter sensors are unknown without coordinator data.""" """Test meter sensors are unknown without coordinator data."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="meter-id-1", deviceId="meter-id-1",
deviceName="meter-1", deviceName="meter-1",
deviceType="Meter", deviceType="Meter",

View File

@ -25,6 +25,7 @@ async def test_relay_switch(
"""Test turn on and turn off.""" """Test turn on and turn off."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="relay-switch-id-1", deviceId="relay-switch-id-1",
deviceName="relay-switch-1", deviceName="relay-switch-1",
deviceType="Relay Switch 1", deviceType="Relay Switch 1",
@ -59,6 +60,7 @@ async def test_switchmode_bot(
"""Test turn on and turn off.""" """Test turn on and turn off."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="bot-id-1", deviceId="bot-id-1",
deviceName="bot-1", deviceName="bot-1",
deviceType="Bot", deviceType="Bot",
@ -93,6 +95,7 @@ async def test_pressmode_bot_no_switch_entity(
"""Test a pressMode bot isn't added as a switch.""" """Test a pressMode bot isn't added as a switch."""
mock_list_devices.return_value = [ mock_list_devices.return_value = [
Device( Device(
version="V1.0",
deviceId="bot-id-1", deviceId="bot-id-1",
deviceName="bot-1", deviceName="bot-1",
deviceType="Bot", deviceType="Bot",