Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
155 commits
Select commit Hold shift + click to select a range
fce17c8
Bump version to 2026.6.0b0
frenck May 27, 2026
fd69d38
Reset MQTT valve opening/closing state at intermediate positions (#16…
nikhil8182 May 28, 2026
2f334d6
Fix apple_tv HomePod streaming failures when device is idle (#170033)
CSdread May 28, 2026
add7562
Fix zeversolar coordinator to raise UpdateFailed on errors (#170507)
mhuiskes May 29, 2026
46f2ad9
During onboarding, ensure Supervisor is up to date during hassio setu…
mdegat01 Jun 1, 2026
d5be54f
Migrate analytics integration to config entry setup (#171801)
mdegat01 May 28, 2026
a87083b
Bump renault-api to 0.5.11 (#172333)
tlpeter Jun 1, 2026
190350a
Bump wiim to 1.0.4 (#172334)
Linkplay2020 May 28, 2026
2c2e70a
bump iometer version to 1.0.1 (#172338)
torben-iometer May 27, 2026
38f25c4
Bump ZHA to 1.4.0 (#172357)
puddly May 27, 2026
7e178ef
Reject backup uploads with unsafe inner name (#172368)
agners May 28, 2026
b7e36e2
Bump dbus-fast to 5.0.16 (#172378)
bdraco May 27, 2026
2e4c6c4
Bump aioamazondevices to 13.8.1 (#172382)
chemelli74 May 27, 2026
9d60fce
Fix OMIE sensors not updating on setup (#172383)
abmantis May 28, 2026
cdeafdf
Bump yalexs to 9.2.1 (#172389)
bdraco May 28, 2026
7247f95
Bump onvif-zeep-async to 4.1.1 (#172391)
bdraco May 28, 2026
6b1ee57
Fix index error in DuckDNS integration (#172392)
tr4nt0r May 28, 2026
28d6eab
Improve MQTT protocol deprecation repair message (#172404)
jbouwh May 28, 2026
c204054
Convert yamaha_musiccast sw_version to string (#172411)
frenck May 28, 2026
50a3ab1
Fix iZone integration broken by python-izone 1.2.10 API change (#172427)
frenck May 28, 2026
f2f29c0
Fix SmartThings light checking wrong component for capabilities (#172…
frenck May 28, 2026
b6c40ba
Fix Jellyfin media source crash when entry is not loaded (#172437)
frenck Jun 1, 2026
ba8b33e
Fix Shelly sensor restore when not initialized (#172441)
chemelli74 Jun 1, 2026
e86a54f
Fix Hue light ZeroDivisionError when mirek value is zero (#172442)
frenck May 28, 2026
951cd71
Discard old events for Alexa Devices (#172446)
chemelli74 May 28, 2026
342b364
Fix Duco regression where entities become unavailable when LAN info f…
ronaldvdmeer May 28, 2026
d9b4b5b
Fix Matter BLE proxy blocking startup (#172456)
TheJulianJES May 28, 2026
6f3fb5c
Add lg_tv_rs232 to LG brand (#172458)
balloob May 28, 2026
47bca8d
Bump frontend to 20260527.1 (#172462)
bramkragten May 28, 2026
1828579
Fix Volvo lock crash when API field is missing from coordinator data …
frenck May 29, 2026
9dddf76
Name the Broadlink RF transmitter entity (#172468)
piitaya May 28, 2026
3bd979e
Bump samsungtvws to 3.0.5 (#172471)
chemelli74 May 28, 2026
aa87295
Fix Growatt setup failure on API rate limit (#172472)
frenck Jun 1, 2026
7ab4026
Handle DAVError in CalDAV get_supported_components (#172479)
frenck May 28, 2026
7a7ef85
Move MQTT protocol setting to main options (#172482)
jbouwh May 28, 2026
323ce99
Fix Tado config flow crash on device activation polling (#172486)
frenck May 28, 2026
114c9bb
Increase ConfigEntryNotReady retry backoff cap from 80s to 10 minutes…
frenck May 28, 2026
c6d696d
Remove redundant definitions in Alexa Devices (#172488)
chemelli74 Jun 1, 2026
c13822b
Handle FileNotFoundError in Immich upload_file action (#172490)
mib1185 May 29, 2026
df65132
Add prog operating mode to Overkiz Atlantic heater HVAC mapping (#172…
frenck May 28, 2026
f728a1b
Add missing Flexit BACnet transient operation modes to preset map (#1…
frenck Jun 1, 2026
5f98728
Convert Roomba hw_version to string for device registry (#172497)
frenck May 28, 2026
2776e96
Reduce Wyoming satellite disconnect log to debug level (#172499)
frenck May 29, 2026
5725913
Silent migrate MQTT protocol version to version 5 if the broker suppo…
jbouwh May 29, 2026
b61559b
Handle malformed response errors in Denon AVR error wrapper (#172502)
frenck Jun 1, 2026
26cf728
Handle missing notAfter field in cert_expiry certificate data (#172503)
frenck Jun 1, 2026
589d263
Fix ephember crash when zone mode is None (#172504)
frenck Jun 1, 2026
8ec3eac
Fix Overkiz UnoIO cover reporting wrong movement direction (#172506)
frenck Jun 1, 2026
c95a39c
Guard Shelly repairs checks for uninitialized RPC devices (#172509)
frenck May 29, 2026
504e22e
Raise errors instead of swallowing exceptions in Toon action handlers…
frenck Jun 1, 2026
2d74091
Refresh WLED firmware releases on manual entity update (#172517)
mik-laj May 31, 2026
4b517fb
Use state-based icon for Hue grouped light (#172535)
frenck May 29, 2026
796d82d
Add missing ssdp dependency to BraviaTV manifest (#172536)
frenck May 29, 2026
25f9cd9
Fix Yoto OAuth flow with cloud credentials (#172544)
piitaya May 29, 2026
ae278d3
Sanitize surrogate characters in MeteoAlarm alert attributes (#172545)
frenck Jun 1, 2026
c2b75b9
Bugfix: Gen-1 Inverter sensor for Indevolt to display "N/A" when turn…
Xirt Jun 1, 2026
3364096
Fix ESPHome update entity stuck on for project versions with build su…
bdraco May 30, 2026
ce8875a
Bump habluetooth to 6.8.0 (#172577)
bdraco May 29, 2026
d550d1d
Expose bluetooth address reachability diagnostics API (#172578)
bdraco May 30, 2026
de0a202
Explain why a Switchbot device could not be found (#172581)
bdraco Jun 1, 2026
dd43b11
Update rf-protocols to 4.0.1 (#172597)
renovate[bot] Jun 1, 2026
24a5c75
Show error about missing api permissions while browsing Immich media …
mib1185 May 30, 2026
0d37319
Improve Avea Bluetooth discovery flow (#172623)
pattyland May 30, 2026
b50bfda
Fix MQTT device_tracker not saving state on location accuracy changes…
jbouwh May 31, 2026
a47105d
Schlage: use lock connected status as availability signal (#172638)
dknowles2 Jun 1, 2026
22ace88
Bump ZHA to 1.4.1 (#172640)
TheJulianJES May 31, 2026
25875de
Add extra device info to FRITZ!Box Tools diagnostics (#172647)
mib1185 Jun 1, 2026
fbb68c2
Bump tuya-device-handlers to 0.0.22 (#172648)
epenet May 31, 2026
10a2536
Improve http2 task handling for Alexa Devices (#172649)
jamesonuk Jun 1, 2026
9fa0132
Add missing exception translation keys in Ecovacs (#172658)
mib1185 May 31, 2026
4b9945e
Bump pynintendoparental to 2.4.0 (#172666)
pantherale0 Jun 1, 2026
0677ed8
Fix tedee entity availability (#172667)
zweckj Jun 1, 2026
3ad3e1f
Fix ai_task camera snapshot mime type (#172682)
Shulyaka Jun 1, 2026
0d079c5
Fix Yardian water hammer diagnostic sensor name (#172698)
aeon-matrix Jun 1, 2026
56057a1
Return 404 instead of 500 when media player artwork is unavailable (#…
frenck Jun 1, 2026
acfecd7
Convert set_id to int in LG TV RS-232 config flow (#172701)
frenck Jun 1, 2026
f7afe22
Skip Overkiz events for unknown device URLs (#172712)
frenck Jun 1, 2026
e53914a
Fix MQTT device_tracker logging attributes order (#172732)
jbouwh Jun 1, 2026
9843fda
Add missing `_attr_name = None` for Tractive device tracker (#172746)
bieniu Jun 1, 2026
8699906
Translate the name of the Tractive tracker (#172747)
bieniu Jun 1, 2026
7950998
Bump aioamazondevices to 13.8.2 (#172748)
jamesonuk Jun 1, 2026
06b2ec2
Bump yoto-api to 3.1.5 (#172753)
piitaya Jun 1, 2026
7b06228
Bump version to 2026.6.0b1
frenck Jun 1, 2026
84f4f87
media_player platform fixes for Alexa Devices (#172611)
jamesonuk Jun 1, 2026
a0d713a
Use proper user-agent to fetch feeds (#172655)
mib1185 Jun 1, 2026
e5f9c78
Fix get_play_status function call in frontier silicon (#172705)
wlcrs Jun 1, 2026
5e56d74
Bump indevolt-api to 1.8.3 (#172683)
Xirt Jun 1, 2026
3dda7d9
Fix binary sensor defaults for Indevolt (#172714)
Xirt Jun 1, 2026
3233046
Explain why an Airthings BLE device could not be found (#172758)
bdraco Jun 1, 2026
51c9d0c
Bump frontend to 20260527.2 (#172759)
bramkragten Jun 1, 2026
6057d32
Explain why a Yale Access Bluetooth device could not be found (#172761)
bdraco Jun 1, 2026
c092166
Explain why an INKBIRD device could not be found (#172762)
bdraco Jun 1, 2026
0bfd4c4
Explain why a LED BLE device could not be found (#172764)
bdraco Jun 1, 2026
b49a6b8
Bump habluetooth to 6.8.1 (#172768)
bdraco Jun 1, 2026
8622f0f
Explain why an eQ-3 Bluetooth device could not be found (#172770)
bdraco Jun 1, 2026
4fbc363
Filter stale replayed BLE advertisements in Matter BLE proxy (#172773)
Apollon77 Jun 1, 2026
c82d32b
Explain why a Husqvarna Automower BLE device could not be connected t…
bdraco Jun 1, 2026
6f59bb0
Explain why an LD2410 BLE device could not be found (#172779)
bdraco Jun 1, 2026
5ff07fc
Explain why a Snooz device could not be found (#172780)
bdraco Jun 1, 2026
d8a9ea1
Fix ProxmoxVE missing unused token data (#172782)
CoMPaTech Jun 1, 2026
b03d87d
Cancel iCloud polling timer on config entry unload (#172793)
frenck Jun 1, 2026
af08e5e
Bump version to 2026.6.0b2
frenck Jun 1, 2026
d2abd7f
Add zone entered left triggers (#172412)
emontnemery May 28, 2026
05eada2
Add zone triggers occupancy detected/cleared (#172438)
emontnemery Jun 2, 2026
60f458a
alexa devices - media player code quality (#172650)
jamesonuk Jun 2, 2026
7bbd0ea
Replace usages of datetime.now(UTC) with dt_util for Sonos (#172737)
PeteRager Jun 1, 2026
763d987
prusalink: guard non-string original in config_flow workaround (#172375)
heikkih Jun 3, 2026
ada8a98
Log warning on unsupported announce media formats for Sonos (#172614)
PeteRager Jun 2, 2026
b176fb2
Update knx-frontend to 2026.6.1.213802 (#172806)
farmio Jun 2, 2026
8ce5ba2
Add zone conditions in / not in zone (#172810)
emontnemery Jun 3, 2026
db6f142
Fix SwitchBot Blind Tilt KeyError on idle BLE advertisements (#172816)
frenck Jun 3, 2026
994b210
Make the renamed trigger behavior options backwards compatible (#172822)
emontnemery Jun 2, 2026
24037fc
Don't create switch entity for switch device type in XThings Cloud (#…
zhangluofeng Jun 2, 2026
387b84e
Prevent log spam when WS subscribe_condition is active (#172832)
emontnemery Jun 3, 2026
bb8036f
Automation choose: Add optional note to options (#172837)
wendevlin Jun 3, 2026
265fe6d
Add translations for template device trackers `in_zones` option (#172…
Petro31 Jun 3, 2026
82d83fe
Bump aioamazondevices to 14.0.0 (#172857)
jamesonuk Jun 2, 2026
4e2bc61
Bump pySmartThings to 4.0.0 (#172858)
joostlek Jun 2, 2026
8e493d8
Bump frontend to 20260527.3 (#172873)
bramkragten Jun 3, 2026
0e0b29d
Regenerate mdi_icons.py for frontend 20260527.3 (#172887)
balloob Jun 3, 2026
6c87284
Catch errors when setting up condition in WS subscribe_condition (#17…
emontnemery Jun 3, 2026
083af9c
Add zone occupancy conditions (#172896)
emontnemery Jun 3, 2026
5d0565f
Bump version to 2026.6.0b3
frenck Jun 3, 2026
78a97f9
Bump intents to 2026.6.1 (#172842)
synesthesiam Jun 2, 2026
b4f8fce
Don't log condition errors when executing WS test_condition (#172897)
emontnemery Jun 3, 2026
74fd636
Add Avea Bluetooth reachability diagnostics (#172898)
pattyland Jun 3, 2026
d267205
Update frontend to 20260527.4 (#172907)
bramkragten Jun 3, 2026
ad99929
Bump version to 2026.6.0b4
frenck Jun 3, 2026
e812cd3
Bump reolink_aio to 0.20.1 (#172927)
starkillerOG Jun 3, 2026
89a033b
Remove state attributes from OPNsense (#172930)
joostlek Jun 3, 2026
bd985a2
Bump version to 2026.6.0
frenck Jun 3, 2026
fcaa11d
Fix CI failure due to missing ssdp patching in braviatv (#172561)
epenet May 29, 2026
836740c
2026.6.0 (#172932)
frenck Jun 3, 2026
a6b7641
Add diagnostics for Blebox integration (#172556)
bkobus-bbx Jun 4, 2026
a0d67b8
Fix offline devices in Fluss (#172833)
Marcello17 Jun 4, 2026
21260bf
Fix value template in MQTT Fan and Siren subentry setup (#172980)
jbouwh Jun 4, 2026
bbeb2ac
Vistapool: Add reconfiguration flow (#172836)
fdebrus Jun 4, 2026
e1d90fd
Add source selection to samsung_infrared media player (#172794)
lmaertin Jun 4, 2026
7dbce78
Bump holidays to 0.98 (#173029)
gjohansson-ST Jun 4, 2026
6e53787
Bump hassil to 3.6.0 (#173031)
synesthesiam Jun 4, 2026
837308b
Merge branch 'master' into dev
frenck Jun 4, 2026
9835014
Deprecate Evohome's `refresh_system` action (#169894)
zxdavb Jun 4, 2026
045ba4e
API refactor to replace assert (#172862)
erwindouna Jun 4, 2026
80e7166
Avoid re-registering listeners at common.py from Home Connect (#172851)
Diegorro98 Jun 4, 2026
69fb1e1
Fix platfoms fixtures return type at Home Connect (#172849)
Diegorro98 Jun 4, 2026
d825b6a
Sort Home Connect service.yaml programs (#172848)
Diegorro98 Jun 4, 2026
467c2fd
Add light platform to Vistapool (#172549)
fdebrus Jun 4, 2026
e22b03f
Add support for openSensor and drutexSmart (#169910)
bkobus-bbx Jun 4, 2026
3173e56
Fix Vistapool button test isolation by deepcopying _LED_DATA. (#172829)
fdebrus Jun 4, 2026
e2f3a32
Vistapool: add diagnostics support (#172824)
fdebrus Jun 4, 2026
227c436
Add media player missing image coverage (#172641)
jdoughty04 Jun 4, 2026
8aac0c5
Convert LinkPlay configuration_url to string for device registry (#17…
frenck Jun 4, 2026
f9fea56
Add tests of legacy device tracker states to person tests (#173023)
emontnemery Jun 4, 2026
711830b
Add tracking_type capability attribute to device tracker (#173027)
emontnemery Jun 4, 2026
07dc234
Bump py-synologydsm-api to 2.9.0 (#173041)
mib1185 Jun 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions homeassistant/components/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ def get(self, request: web.Request) -> web.Response:
states = (
state.as_dict_json
for state in hass.states.async_all()
if entity_perm(state.entity_id, "read")
if entity_perm(state.entity_id, POLICY_READ)
)
response = web.Response(
body=b"".join((b"[", b",".join(states), b"]")),
Expand Down Expand Up @@ -294,8 +294,10 @@ async def post(self, request: web.Request, entity_id: str) -> web.Response:

# Read the state back for our response
status_code = HTTPStatus.CREATED if is_new_state else HTTPStatus.OK
state = hass.states.get(entity_id)
assert state
if (state := hass.states.get(entity_id)) is None:
return self.json_message(
"Error storing state.", HTTPStatus.INTERNAL_SERVER_ERROR
)
resp = self.json(state.as_dict(), status_code)

resp.headers.add("Location", f"/api/states/{entity_id}")
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/assist_satellite/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/assist_satellite",
"integration_type": "entity",
"quality_scale": "internal",
"requirements": ["hassil==3.5.0"]
"requirements": ["hassil==3.6.0"]
}
4 changes: 4 additions & 0 deletions homeassistant/components/blebox/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
key="moisture",
device_class=BinarySensorDeviceClass.MOISTURE,
),
BinarySensorEntityDescription(
key="open",
device_class=BinarySensorDeviceClass.WINDOW,
),
)


Expand Down
7 changes: 7 additions & 0 deletions homeassistant/components/blebox/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@
DEFAULT_HOST = "192.168.0.2"
DEFAULT_PORT = 80

OPEN_STATUS: dict[int, str] = {
0: "open",
1: "unclosed_or_unlocked",
2: "ajar",
3: "closed_but_unlocked",
4: "closed",
}

LIGHT_MAX_KELVINS = 6500 # 154 Mireds
LIGHT_MIN_KELVINS = 2700 # 370 Mireds
33 changes: 33 additions & 0 deletions homeassistant/components/blebox/diagnostics.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"""Diagnostics support for BleBox devices."""

from typing import Any

from homeassistant.components.diagnostics import async_redact_data
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant

from . import BleBoxConfigEntry

TO_REDACT = {CONF_PASSWORD, CONF_USERNAME}


async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: BleBoxConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
product = entry.runtime_data.box

return {
"entry": async_redact_data(entry.as_dict(), TO_REDACT),
"device": {
"name": product.name,
"type": product.type,
"model": product.model,
"unique_id": product.unique_id,
"firmware_version": product.firmware_version,
"hardware_version": product.hardware_version,
"available_firmware_version": product.available_firmware_version,
"api_version": product.api_version,
"last_data": product.last_data,
},
}
61 changes: 41 additions & 20 deletions homeassistant/components/blebox/sensor.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"""BleBox sensor entities."""

from collections.abc import Callable
from dataclasses import dataclass
from datetime import datetime

import blebox_uniapi.sensor
Expand All @@ -26,96 +28,113 @@
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.typing import StateType

from . import BleBoxConfigEntry
from .const import OPEN_STATUS
from .coordinator import BleBoxCoordinator
from .entity import BleBoxEntity

PARALLEL_UPDATES = 0


SENSOR_TYPES = (
SensorEntityDescription(
@dataclass(kw_only=True, frozen=True)
class BleBoxSensorEntityDescription(SensorEntityDescription):
"""Describes a BleBox sensor entity."""

value_fn: Callable[[StateType], StateType] = lambda v: v


SENSOR_TYPES: tuple[BleBoxSensorEntityDescription, ...] = (
BleBoxSensorEntityDescription(
key="pm1",
device_class=SensorDeviceClass.PM1,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="pm2_5",
device_class=SensorDeviceClass.PM25,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="pm10",
device_class=SensorDeviceClass.PM10,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="temperature",
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="powerConsumption",
translation_key="power_consumption",
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
suggested_display_precision=2,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="humidity",
device_class=SensorDeviceClass.HUMIDITY,
native_unit_of_measurement=PERCENTAGE,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="wind",
device_class=SensorDeviceClass.WIND_SPEED,
native_unit_of_measurement=UnitOfSpeed.METERS_PER_SECOND,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="illuminance",
device_class=SensorDeviceClass.ILLUMINANCE,
native_unit_of_measurement=LIGHT_LUX,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="forwardActiveEnergy",
device_class=SensorDeviceClass.ENERGY,
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="reverseActiveEnergy",
device_class=SensorDeviceClass.ENERGY,
native_unit_of_measurement=UnitOfEnergy.KILO_WATT_HOUR,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="reactivePower",
device_class=SensorDeviceClass.POWER,
native_unit_of_measurement=UnitOfReactivePower.VOLT_AMPERE_REACTIVE,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="activePower",
device_class=SensorDeviceClass.POWER,
native_unit_of_measurement=UnitOfPower.WATT,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="apparentPower",
device_class=SensorDeviceClass.APPARENT_POWER,
native_unit_of_measurement=UnitOfApparentPower.VOLT_AMPERE,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="voltage",
device_class=SensorDeviceClass.VOLTAGE,
native_unit_of_measurement=UnitOfElectricPotential.VOLT,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="current",
device_class=SensorDeviceClass.CURRENT,
native_unit_of_measurement=UnitOfElectricCurrent.MILLIAMPERE,
),
SensorEntityDescription(
BleBoxSensorEntityDescription(
key="frequency",
device_class=SensorDeviceClass.FREQUENCY,
native_unit_of_measurement=UnitOfFrequency.HERTZ,
),
BleBoxSensorEntityDescription(
key="openStatus",
translation_key="open_status",
device_class=SensorDeviceClass.ENUM,
icon="mdi:window-open",
options=list(OPEN_STATUS.values()),
value_fn=lambda v: OPEN_STATUS.get(int(v)) if v is not None else None,
),
)


Expand All @@ -138,20 +157,22 @@ async def async_setup_entry(
class BleBoxSensorEntity(BleBoxEntity[blebox_uniapi.sensor.BaseSensor], SensorEntity):
"""Representation of a BleBox sensor feature."""

entity_description: BleBoxSensorEntityDescription

def __init__(
self,
coordinator: BleBoxCoordinator,
feature: blebox_uniapi.sensor.BaseSensor,
description: SensorEntityDescription,
description: BleBoxSensorEntityDescription,
) -> None:
"""Initialize a BleBox sensor feature."""
super().__init__(coordinator, feature)
self.entity_description = description

@property
def native_value(self):
def native_value(self) -> StateType:
"""Return the state."""
return self._feature.native_value
return self.entity_description.value_fn(self._feature.native_value)

@property
def last_reset(self) -> datetime | None:
Expand Down
13 changes: 13 additions & 0 deletions homeassistant/components/blebox/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,19 @@
}
}
},
"entity": {
"sensor": {
"open_status": {
"state": {
"ajar": "Ajar",
"closed": "[%key:common::state::closed%]",
"closed_but_unlocked": "Closed but unlocked",
"open": "[%key:common::state::open%]",
"unclosed_or_unlocked": "Unclosed or unlocked"
}
}
}
},
"exceptions": {
"bad_value": {
"message": "Turning on the light failed: {error}"
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/conversation/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/conversation",
"integration_type": "entity",
"quality_scale": "internal",
"requirements": ["hassil==3.5.0", "home-assistant-intents==2026.6.1"]
"requirements": ["hassil==3.6.0", "home-assistant-intents==2026.6.1"]
}
2 changes: 2 additions & 0 deletions homeassistant/components/device_tracker/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
ATTR_LOCATION_NAME,
ATTR_MAC,
ATTR_SOURCE_TYPE,
ATTR_TRACKING_TYPE,
CONF_ASSOCIATED_ZONE,
CONF_CONSIDER_HOME,
CONF_NEW_DEVICE_DEFAULTS,
Expand All @@ -36,6 +37,7 @@
PLATFORM_TYPE_LEGACY,
SCAN_INTERVAL,
SourceType,
TrackingType,
)
from .entity import ( # noqa: F401
BaseScannerEntity,
Expand Down
13 changes: 13 additions & 0 deletions homeassistant/components/device_tracker/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,18 @@ class SourceType(StrEnum):
BLUETOOTH_LE = "bluetooth_le"


class TrackingType(StrEnum):
"""Tracking type for device trackers.

Describes how the tracker determines presence: by the device's geographic
position (e.g. GPS) or by its connection to a known endpoint (e.g. a router
or beacon associated with a zone).
"""

CONNECTION = "connection"
POSITION = "position"


CONF_SCAN_INTERVAL: Final = "interval_seconds"
SCAN_INTERVAL: Final = timedelta(seconds=12)

Expand All @@ -47,6 +59,7 @@ class SourceType(StrEnum):
ATTR_LOCATION_NAME: Final = "location_name"
ATTR_MAC: Final = "mac"
ATTR_SOURCE_TYPE: Final = "source_type"
ATTR_TRACKING_TYPE: Final = "tracking_type"
ATTR_CONSIDER_HOME: Final = "consider_home"
ATTR_IP: Final = "ip"

Expand Down
8 changes: 8 additions & 0 deletions homeassistant/components/device_tracker/entity.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,13 @@
ATTR_IP,
ATTR_MAC,
ATTR_SOURCE_TYPE,
ATTR_TRACKING_TYPE,
CONF_ASSOCIATED_ZONE,
CONNECTED_DEVICE_REGISTERED,
DOMAIN,
LOGGER,
SourceType,
TrackingType,
)

_LOGGER = logging.getLogger(__name__)
Expand Down Expand Up @@ -238,6 +240,9 @@ class TrackerEntity(
"""Base class for a tracked device."""

entity_description: TrackerEntityDescription
_attr_capability_attributes: dict[str, Any] = {
ATTR_TRACKING_TYPE: TrackingType.POSITION
}
_attr_in_zones: list[str] | None = None
_attr_latitude: float | None = None
_attr_location_accuracy: float = 0
Expand Down Expand Up @@ -411,6 +416,9 @@ class BaseScannerEntity(BaseTrackerEntity):
addresses being used to identify the device.
"""

_attr_capability_attributes: dict[str, Any] = {
ATTR_TRACKING_TYPE: TrackingType.CONNECTION
}
_scanner_option_associated_zone: str = zone.ENTITY_ID_HOME
_scanner_option_associated_zone_unsub: CALLBACK_TYPE | None = None

Expand Down
7 changes: 7 additions & 0 deletions homeassistant/components/device_tracker/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@
"gps": "GPS",
"router": "Router"
}
},
"tracking_type": {
"name": "Tracking type",
"state": {
"connection": "Connection",
"position": "Position"
}
}
}
}
Expand Down
2 changes: 2 additions & 0 deletions homeassistant/components/evohome/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
ATTR_PERIOD: Final = "period" # number of days
ATTR_SETPOINT: Final = "setpoint"

# Support for the refresh_system service is being deprecated
REFRESH_BREAKS_IN_HA_VERSION: Final = "2027.1.0"
# Support for the reset service calls/presets is being deprecated
RESET_BREAKS_IN_HA_VERSION: Final = "2026.11.0"
# Support for untargeted service calls to controllers is being deprecated
Expand Down
6 changes: 6 additions & 0 deletions homeassistant/components/evohome/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
ATTR_PERIOD,
ATTR_SETPOINT,
DOMAIN,
REFRESH_BREAKS_IN_HA_VERSION,
RESET_BREAKS_IN_HA_VERSION,
SERVICE_BREAKS_IN_HA_VERSION,
EvoService,
Expand Down Expand Up @@ -204,6 +205,11 @@ def setup_service_functions(
@verify_domain_control(DOMAIN)
async def force_refresh(call: ServiceCall) -> None:
"""Obtain the latest state data via the vendor's RESTful API."""
async_create_deprecation_issue_once(
hass,
"deprecated_refresh_system_service",
REFRESH_BREAKS_IN_HA_VERSION,
)
await coordinator.async_refresh()

@verify_domain_control(DOMAIN)
Expand Down
Loading
Loading