From 2ee715576421160700cca8b2e66c39cded505647 Mon Sep 17 00:00:00 2001 From: Maikel Punie Date: Mon, 26 Jan 2026 08:35:12 +0100 Subject: [PATCH] Bump valbuasio to 2026.1.4 (#161270) --- homeassistant/components/velbus/entity.py | 3 ++- homeassistant/components/velbus/manifest.json | 2 +- homeassistant/components/velbus/select.py | 2 +- homeassistant/components/velbus/sensor.py | 15 +++++++++------ requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/velbus/conftest.py | 5 ++--- 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/velbus/entity.py b/homeassistant/components/velbus/entity.py index dcf6b65c80c..e259f99462e 100644 --- a/homeassistant/components/velbus/entity.py +++ b/homeassistant/components/velbus/entity.py @@ -7,6 +7,7 @@ from functools import wraps from typing import Any, Concatenate from velbusaio.channels import Channel as VelbusChannel +from velbusaio.properties import Property as VelbusProperty from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.device_registry import DeviceInfo @@ -27,7 +28,7 @@ class VelbusEntity(Entity): _attr_has_entity_name = True _attr_should_poll: bool = False - def __init__(self, channel: VelbusChannel) -> None: + def __init__(self, channel: VelbusChannel | VelbusProperty) -> None: """Initialize a Velbus entity.""" self._channel = channel self._module_address = str(channel.get_module_address()) diff --git a/homeassistant/components/velbus/manifest.json b/homeassistant/components/velbus/manifest.json index 886a9049ce3..e89ef15f2b6 100644 --- a/homeassistant/components/velbus/manifest.json +++ b/homeassistant/components/velbus/manifest.json @@ -14,7 +14,7 @@ "velbus-protocol" ], "quality_scale": "silver", - "requirements": ["velbus-aio==2026.1.1"], + "requirements": ["velbus-aio==2026.1.4"], "usb": [ { "pid": "0B1B", diff --git a/homeassistant/components/velbus/select.py b/homeassistant/components/velbus/select.py index e49dc7416a8..baf7ff4986a 100644 --- a/homeassistant/components/velbus/select.py +++ b/homeassistant/components/velbus/select.py @@ -1,6 +1,6 @@ """Support for Velbus select.""" -from velbusaio.channels import SelectedProgram +from velbusaio.properties import SelectedProgram from homeassistant.components.select import SelectEntity from homeassistant.const import EntityCategory diff --git a/homeassistant/components/velbus/sensor.py b/homeassistant/components/velbus/sensor.py index 34190536df8..229377355e4 100644 --- a/homeassistant/components/velbus/sensor.py +++ b/homeassistant/components/velbus/sensor.py @@ -5,7 +5,8 @@ from __future__ import annotations from collections.abc import Callable from dataclasses import dataclass -from velbusaio.channels import ButtonCounter, LightSensor, SensorNumber, Temperature +from velbusaio.channels import ButtonCounter, SensorNumber, Temperature +from velbusaio.properties import LightValue from homeassistant.components.sensor import ( SensorDeviceClass, @@ -21,7 +22,7 @@ from .entity import VelbusEntity PARALLEL_UPDATES = 0 -type VelbusSensorChannel = ButtonCounter | Temperature | LightSensor | SensorNumber +type VelbusSensorChannel = ButtonCounter | Temperature | LightValue | SensorNumber @dataclass(frozen=True, kw_only=True) @@ -31,9 +32,7 @@ class VelbusSensorEntityDescription(SensorEntityDescription): value_fn: Callable[[VelbusSensorChannel], float | None] = lambda channel: float( channel.get_state() ) - unit_fn: Callable[[VelbusSensorChannel], str | None] = ( - lambda channel: channel.get_unit() - ) + unit_fn: Callable[[VelbusSensorChannel], str | None] | None = None unique_id_suffix: str = "" @@ -42,15 +41,18 @@ SENSOR_DESCRIPTIONS: dict[str, VelbusSensorEntityDescription] = { key="power", device_class=SensorDeviceClass.POWER, state_class=SensorStateClass.MEASUREMENT, + unit_fn=lambda channel: channel.get_unit(), ), "temperature": VelbusSensorEntityDescription( key="temperature", device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, + unit_fn=lambda channel: channel.get_unit(), ), "measurement": VelbusSensorEntityDescription( key="measurement", state_class=SensorStateClass.MEASUREMENT, + unit_fn=lambda channel: channel.get_unit(), ), "counter": VelbusSensorEntityDescription( key="counter", @@ -108,7 +110,8 @@ class VelbusSensor(VelbusEntity, SensorEntity): super().__init__(channel) self.entity_description = description self._is_counter = is_counter - self._attr_native_unit_of_measurement = description.unit_fn(channel) + if description.unit_fn: + self._attr_native_unit_of_measurement = description.unit_fn(channel) self._attr_unique_id = f"{self._attr_unique_id}{description.unique_id_suffix}" # Modify name for counter entities diff --git a/requirements_all.txt b/requirements_all.txt index 1d2ce19224e..b2d5d87d637 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -3124,7 +3124,7 @@ vegehub==0.1.26 vehicle==2.2.2 # homeassistant.components.velbus -velbus-aio==2026.1.1 +velbus-aio==2026.1.4 # homeassistant.components.venstar venstarcolortouch==0.21 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 175e0c13017..c7ee06cce23 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -2615,7 +2615,7 @@ vegehub==0.1.26 vehicle==2.2.2 # homeassistant.components.velbus -velbus-aio==2026.1.1 +velbus-aio==2026.1.4 # homeassistant.components.venstar venstarcolortouch==0.21 diff --git a/tests/components/velbus/conftest.py b/tests/components/velbus/conftest.py index 0a2f5b5e882..2f040ad1fb9 100644 --- a/tests/components/velbus/conftest.py +++ b/tests/components/velbus/conftest.py @@ -9,13 +9,12 @@ from velbusaio.channels import ( Button, ButtonCounter, Dimmer, - LightSensor, Relay, - SelectedProgram, SensorNumber, Temperature, ) from velbusaio.module import Module +from velbusaio.properties import LightValue, SelectedProgram from homeassistant.components.velbus import VelbusConfigEntry from homeassistant.components.velbus.const import DOMAIN @@ -238,7 +237,7 @@ def mock_sensornumber() -> AsyncMock: @pytest.fixture def mock_lightsensor() -> AsyncMock: """Mock a successful velbus channel.""" - channel = AsyncMock(spec=LightSensor) + channel = AsyncMock(spec=LightValue) channel.get_categories.return_value = ["sensor"] channel.get_name.return_value = "LightSensor" channel.get_module_address.return_value = 2