Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
17b12d2
Bump version to 2025.10.0b0
frenck Sep 24, 2025
05820a4
Fix logical error when user has no Roborock maps (#152752)
Lash-L Sep 25, 2025
21a5aaf
Update IQS to platinum for Alexa Devices (#152905)
chemelli74 Sep 25, 2025
274f6eb
Update IQS to platinum for Comelit SimpleHome (#152906)
chemelli74 Sep 24, 2025
b4417a7
Fix ESPHome reauth not being triggered on incorrect password (#152911)
bdraco Sep 25, 2025
d8b24cc
Bump aioesphomeapi to 41.9.3 to fix segfault (#152912)
bdraco Sep 24, 2025
d9521ac
Bump to home-assistant/[email protected] (#152920)
frenck Sep 24, 2025
e9bde22
Bump aioesphomeapi to 41.9.4 (#152923)
bdraco Sep 25, 2025
a255585
Remove some more domains from common controls (#152927)
balloob Sep 25, 2025
79599e1
Add block Spook < 4.0.0 as breaking Home Assistant (#152930)
frenck Sep 25, 2025
be6f056
Prevent common control calling async methods from thread (#152931)
balloob Sep 25, 2025
2f75661
Bump librehardwaremonitor-api to version 1.4.0 (#152938)
Sab44 Sep 25, 2025
731064f
Portainer fix unique entity (#152941)
erwindouna Sep 25, 2025
cc2a5b4
Update frontend to 20250925.0 (#152945)
piitaya Sep 25, 2025
156a0f1
Bump version to 2025.10.0b1
frenck Sep 25, 2025
cdf613d
Update mvglive component (#146479)
danielpotthast Sep 25, 2025
cee8847
Remove deprecated sensors and update remaning for Alexa Devices (#151…
chemelli74 Sep 25, 2025
3905723
Bump accuweather to version 4.2.2 (#152965)
bieniu Sep 25, 2025
ccc50f2
Bump aioesphomeapi to 41.10.0 (#152975)
bdraco Sep 25, 2025
d857d88
Bump pySmartThings to 3.3.0 (#152977)
joostlek Sep 25, 2025
09e45f6
Fix incorrect Roborock test (#152980)
Lash-L Sep 25, 2025
a5af974
Update frontend to 20250925.1 (#152985)
piitaya Sep 25, 2025
6aaddad
Bump version to 2025.10.0b2
frenck Sep 25, 2025
750e849
Protect against last_comms being None (#149366)
RogerSelwyn Sep 26, 2025
1b2eab0
Add SSL options during config_flow for airOS (#150325)
CoMPaTech Sep 26, 2025
7b26a93
Portainer add ability to skip SSL verification (#152955)
erwindouna Sep 26, 2025
3d945b0
Fix EZVIZ devices merging due to empty MAC addr (#152939) (#152981)
lliwog Sep 26, 2025
68c51dc
Fix PIN failure if starting with 0 for Comelit SimpleHome (#152983)
chemelli74 Sep 26, 2025
99a0380
Ignore discovery for existing ZHA entries (#152984)
puddly Sep 26, 2025
fbed66e
Bump aiorussound to 4.8.2 (#152988)
noahhusby Sep 25, 2025
06a5747
Rename service to action in ESPHome (#152997)
bharvey88 Sep 25, 2025
0a44682
Push ESPHome discovery to ZJS addon (#153004)
balloob Sep 26, 2025
4650494
Bump ZHA to 0.0.73 (#153007)
puddly Sep 26, 2025
1386c01
Allow ZHA discovery if discovery `unique_id` conflicts with config en…
puddly Sep 26, 2025
4058ca5
Bump aioesphomeapi to 41.11.0 (#153014)
bdraco Sep 26, 2025
cf22388
Use satellite entity area in the assist pipeline (#153017)
arturpragacz Sep 26, 2025
563b58c
Bump to home-assistant/[email protected] (#153025)
agners Sep 26, 2025
1e808c9
Bump pylamarzocco to 2.1.1 (#153027)
zweckj Sep 26, 2025
08e81b2
Update Home Assistant base image to 2025.09.2 (#153035)
agners Sep 26, 2025
d835025
Fix Thread flow abort on multiple flows (#153048)
MartinHjelmare Sep 26, 2025
59fdb9f
Update frontend to 20250926.0 (#153049)
piitaya Sep 26, 2025
723902e
NINA Use better wording for filters (#153050)
DeerMaximum Sep 26, 2025
66c17e2
Add None-check for VeSync fan device.state.display_status (#153055)
SapuSeven Sep 26, 2025
dd01243
Ensure token validity in lamarzocco (#153058)
zweckj Sep 26, 2025
66c6b0f
Bump version to 2025.10.0b3
frenck Sep 26, 2025
4f0a6ef
Update Home Assistant base image to 2025.09.3 (#153064)
frenck Sep 26, 2025
77f897a
Bump version to 2025.10.0b4
frenck Sep 26, 2025
4e247a6
Prevent duplicate entities for Volvo integration (#151779)
thomasddn Sep 27, 2025
2b5f989
Add Shelly EV charger sensors (#152722)
thecode Sep 28, 2025
eb103a8
Fix: Set EPH climate heating as on only when boiler is actively heati…
mchugh19 Sep 27, 2025
a01eb48
Portainer switch terminology to API token (#152958)
erwindouna Sep 27, 2025
a6a6261
Improve hardware flow strings (#153034)
MartinHjelmare Sep 29, 2025
ef16327
Add `consumed energy` sensor for Shelly `pm1` and `switch` components…
bieniu Sep 29, 2025
9a969ce
Ensure togrill detects disconnected devices (#153067)
elupus Sep 28, 2025
d8f6f17
Fix for Hue Integration motion aware areas (#153079)
kylewhirl Sep 29, 2025
eaf2643
Fix can exclude optional holidays in workday (#153082)
gjohansson-ST Sep 27, 2025
54b1749
Remove redundant code for Alexa Devices (#153083)
chemelli74 Sep 27, 2025
07d7f4e
Add timeout to dnsip (to handle stale connections) (#153086)
gjohansson-ST Sep 29, 2025
6783c4a
Ignore gateway device in ViCare integration (#153097)
lgraf Sep 28, 2025
2dd0d69
Bump deebot-client to 15.0.0 (#153125)
edenhaus Sep 27, 2025
8466dbf
Fix event range in workday calendar (#153128)
gjohansson-ST Sep 27, 2025
f7265c8
Fix entities not being created when adding subentries for Satel Integ…
Tommatheussen Sep 29, 2025
b92e5d7
Add missing translations for Model Context Protocol integration (#153…
allenporter Sep 28, 2025
af28883
Bump reolink-aio to 0.16.0 (#153161)
starkillerOG Sep 28, 2025
cd6f3a0
Add newly added cpu temperatures to diagnostics in FRITZ!Tools (#153168)
mib1185 Sep 28, 2025
7084bca
Correct vesync water tank lifted key (#153173)
cdnninja Sep 29, 2025
be10f09
Bump aioamazondevices to 6.2.7 (#153185)
chemelli74 Sep 29, 2025
bb02158
Filter out empty integration type in extended analytics (#153188)
arturpragacz Sep 29, 2025
d9de964
Add hardware Zigbee flow strategy (#153190)
MartinHjelmare Sep 29, 2025
abc5c6e
Mark Konnected as Legacy (#153193)
joostlek Sep 29, 2025
584c1fb
Revert "Add comment on conversion factor for Carbon monoxide on depen…
emontnemery Sep 29, 2025
be942c2
Revert "Add mg/m³ as a valid UOM for sensor/number Carbon Monoxide de…
emontnemery Sep 29, 2025
5e2b276
Handle return result from ebusd being "empty" (#153199)
RogerSelwyn Sep 29, 2025
51e098e
ZHA: rename radio to adapter (#153206)
c0ffeeca7 Sep 29, 2025
00d667e
Add missing translation strings for added sensor device classes pm4 a…
jbouwh Sep 29, 2025
c75dca7
Bump version to 2025.10.0b5
frenck Sep 30, 2025
df69bce
Pihole better logging of update errors (#152077)
HarvsG Sep 30, 2025
b4747ea
Fix Sonos Dialog Select type conversion part II (#152491)
PeteRager Sep 30, 2025
e982ac1
Switchbot Cloud: Fix Roller Shade not work issue (#152528)
XiaoLing-git Sep 30, 2025
bf19060
Reduce Connect firmware install times by removing unnecessary firmwar…
puddly Sep 30, 2025
392ee5a
Use UnitOfTime.DAYS instead of custom unit for LetPot number entity (…
jpelgrom Sep 26, 2025
4fd1016
Improve ZHA multi-pan firmware repair text (#153232)
TheJulianJES Oct 1, 2025
c893552
Replace remaining ZHA "radio" strings with "adapter" (#153234)
TheJulianJES Oct 1, 2025
037e2bf
Fix ZHA unable to select "none" flow control (#153235)
TheJulianJES Oct 1, 2025
6d09411
Bump yt-dlp to 2025.09.26 (#153252)
andreimoraru Sep 30, 2025
00f6d26
Add analytics platform to wled (#153258)
arturpragacz Sep 30, 2025
53a8a25
Replace "Climate name" with "Climate program" in `ecobee` action (#15…
NoRi2909 Sep 30, 2025
38f9067
Portainer fix CONF_VERIFY_SSL (#153269)
erwindouna Sep 30, 2025
de6d34f
Filter out service type devices in extended analytics (#153271)
arturpragacz Oct 1, 2025
36ff5c0
Bump aioecowitt to 2025.9.2 (#153273)
edenhaus Sep 30, 2025
a6b6e4c
Add Eltako brand (#153276)
joostlek Sep 30, 2025
ed9cfb4
Use hardware bootloader reset methods for firmware config flows (#153…
puddly Oct 1, 2025
bd10f6e
Require cloud for Aladdin Connect (#153278)
joostlek Sep 30, 2025
58cc7c8
Add Level brand (#153279)
joostlek Sep 30, 2025
f242e29
Add Konnected brand (#153280)
joostlek Sep 30, 2025
8de200d
Fix Bayesian ConfigFlow templates in 2025.10 (#153289)
HarvsG Oct 1, 2025
8abfe42
Update frontend to 20251001.0 (#153300)
bramkragten Oct 1, 2025
c0317f6
Add analytics platform to esphome (#153311)
arturpragacz Oct 1, 2025
f616e5a
Bump version to 2025.10.0b6
frenck Oct 1, 2025
f03b16b
Bump intents to 2025.10.1 (#153340)
synesthesiam Oct 1, 2025
dde60cd
Improve `mac_address_from_name()` function to avoid double discovery …
bieniu Oct 1, 2025
6cd1283
Bump version to 2025.10.0b7
frenck Oct 1, 2025
55d5e76
Bump version to 2025.10.0
frenck Oct 1, 2025
9a29cc5
2025.10.0 (#152881)
frenck Oct 1, 2025
9b56ca8
Bump PyCync to 0.4.1 (#153401)
Kinachi249 Oct 2, 2025
bb7a177
Improve recorder migration tests (#153388)
emontnemery Oct 2, 2025
efbdfd2
Merge branch 'master' into dev
frenck Oct 2, 2025
752969b
Add test fixture for new Tuya jsq category (#153412)
epenet Oct 2, 2025
6ba2057
Bump pyportainer 1.0.3 (#153413)
erwindouna Oct 2, 2025
e0422d7
Fix Satel Integra creating new binary sensors on YAML import (#153419)
Tommatheussen Oct 2, 2025
762accb
Disable thinking for unsupported gemini models (#153415)
Shulyaka Oct 2, 2025
3a301f5
Update `markdown` field description in ntfy integration (#153421)
tr4nt0r Oct 2, 2025
00abaee
Increase onedrive upload chunk size (#153406)
zweckj Oct 2, 2025
1816c19
Add test fixture for new Tuya cjkg category (#153411)
epenet Oct 2, 2025
46056fe
Correct blocking update in ToGrill with lack of notifications (#153387)
elupus Oct 2, 2025
3b44cce
Improve recorder migration test (#153405)
emontnemery Oct 2, 2025
373bb20
Remove deprecated entity feature constants in vacuum (#153364)
gjohansson-ST Oct 2, 2025
d443529
Add more sensors to Tuya weather monitor (#153420)
epenet Oct 2, 2025
1397def
Add last check-in sensor to Habitica integration (#153293)
tr4nt0r Oct 2, 2025
73ff8d3
Bump python-roborock to 2.49.1 (#153396)
Lash-L Oct 2, 2025
6ee2b82
Cleanup sync_callback in devolo Home Control (#153321)
Shutgun Oct 2, 2025
d246836
Bump aiohomekit to 3.2.19 (#153423)
bdraco Oct 2, 2025
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
2 changes: 1 addition & 1 deletion homeassistant/components/cync/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
"integration_type": "hub",
"iot_class": "cloud_push",
"quality_scale": "bronze",
"requirements": ["pycync==0.4.0"]
"requirements": ["pycync==0.4.1"]
}
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ def __init__(
self._attr_translation_key = "button"
self._attr_translation_placeholders = {"key": str(key)}

def _sync(self, message: tuple) -> None:
def sync_callback(self, message: tuple) -> None:
"""Update the binary sensor state."""
if (
message[0] == self._remote_control_property.element_uid
Expand Down
3 changes: 1 addition & 2 deletions homeassistant/components/devolo_home_control/entity.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ def __init__(
)

self.subscriber: Subscriber | None = None
self.sync_callback = self._sync

self._value: float

Expand All @@ -69,7 +68,7 @@ async def async_will_remove_from_hass(self) -> None:
self._device_instance.uid, self.subscriber
)

def _sync(self, message: tuple) -> None:
def sync_callback(self, message: tuple) -> None:
"""Update the state."""
if message[0] == self._attr_unique_id:
self._value = message[1]
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/devolo_home_control/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ def unique_id(self) -> str:
"""
return f"{self._attr_unique_id}_{self._sensor_type}"

def _sync(self, message: tuple) -> None:
def sync_callback(self, message: tuple) -> None:
"""Update the consumption sensor state."""
if message[0] == self._attr_unique_id:
self._value = getattr(
Expand Down
5 changes: 0 additions & 5 deletions homeassistant/components/devolo_home_control/subscriber.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,3 @@ def __init__(self, name: str, callback: Callable) -> None:
"""Initiate the subscriber."""
self.name = name
self.callback = callback

def update(self, message: str) -> None:
"""Trigger hass to update the device."""
_LOGGER.debug('%s got message "%s"', self.name, message)
self.callback(message)
2 changes: 1 addition & 1 deletion homeassistant/components/devolo_home_control/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def turn_off(self, **kwargs: Any) -> None:
"""Switch off the device."""
self._binary_switch_property.set(state=False)

def _sync(self, message: tuple) -> None:
def sync_callback(self, message: tuple) -> None:
"""Update the binary switch state and consumption."""
if message[0].startswith("devolo.BinarySwitch"):
self._attr_is_on = self._device_instance.binary_switch_property[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -620,6 +620,13 @@ async def _async_handle_chat_log(
def create_generate_content_config(self) -> GenerateContentConfig:
"""Create the GenerateContentConfig for the LLM."""
options = self.subentry.data
model = options.get(CONF_CHAT_MODEL, RECOMMENDED_CHAT_MODEL)
thinking_config: ThinkingConfig | None = None
if model.startswith("models/gemini-2.5") and not model.endswith(
("tts", "image", "image-preview")
):
thinking_config = ThinkingConfig(include_thoughts=True)

return GenerateContentConfig(
temperature=options.get(CONF_TEMPERATURE, RECOMMENDED_TEMPERATURE),
top_k=options.get(CONF_TOP_K, RECOMMENDED_TOP_K),
Expand Down Expand Up @@ -652,7 +659,7 @@ def create_generate_content_config(self) -> GenerateContentConfig:
),
),
],
thinking_config=ThinkingConfig(include_thoughts=True),
thinking_config=thinking_config,
)


Expand Down
3 changes: 3 additions & 0 deletions homeassistant/components/habitica/icons.json
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,9 @@
},
"collected_items": {
"default": "mdi:sack"
},
"last_checkin": {
"default": "mdi:login-variant"
}
},
"switch": {
Expand Down
18 changes: 15 additions & 3 deletions homeassistant/components/habitica/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from collections.abc import Callable
from dataclasses import dataclass
from datetime import datetime
from enum import StrEnum
import logging
from typing import Any
Expand Down Expand Up @@ -53,7 +54,7 @@
class HabiticaSensorEntityDescription(SensorEntityDescription):
"""Habitica Sensor Description."""

value_fn: Callable[[UserData, ContentData], StateType]
value_fn: Callable[[UserData, ContentData], StateType | datetime]
attributes_fn: Callable[[UserData, ContentData], dict[str, Any] | None] | None = (
None
)
Expand Down Expand Up @@ -114,6 +115,7 @@ class HabiticaSensorEntity(StrEnum):
COLLECTED_ITEMS = "collected_items"
BOSS_RAGE = "boss_rage"
BOSS_RAGE_LIMIT = "boss_rage_limit"
LAST_CHECKIN = "last_checkin"


SENSOR_DESCRIPTIONS: tuple[HabiticaSensorEntityDescription, ...] = (
Expand Down Expand Up @@ -284,6 +286,16 @@ class HabiticaSensorEntity(StrEnum):
translation_key=HabiticaSensorEntity.PENDING_QUEST_ITEMS,
value_fn=pending_quest_items,
),
HabiticaSensorEntityDescription(
key=HabiticaSensorEntity.LAST_CHECKIN,
translation_key=HabiticaSensorEntity.LAST_CHECKIN,
value_fn=(
lambda user, _: dt_util.as_local(last)
if (last := user.auth.timestamps.loggedin)
else None
),
device_class=SensorDeviceClass.TIMESTAMP,
),
)


Expand Down Expand Up @@ -399,7 +411,7 @@ class HabiticaSensor(HabiticaBase, SensorEntity):
entity_description: HabiticaSensorEntityDescription

@property
def native_value(self) -> StateType:
def native_value(self) -> StateType | datetime:
"""Return the state of the device."""

return self.entity_description.value_fn(
Expand Down Expand Up @@ -442,7 +454,7 @@ class HabiticaPartySensor(HabiticaPartyBase, SensorEntity):
entity_description: HabiticaPartySensorEntityDescription

@property
def native_value(self) -> StateType:
def native_value(self) -> StateType | datetime:
"""Return the state of the device."""

return self.entity_description.value_fn(
Expand Down
3 changes: 3 additions & 0 deletions homeassistant/components/habitica/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,9 @@
}
}
},
"last_checkin": {
"name": "Last check-in"
},
"health": {
"name": "Health",
"unit_of_measurement": "[%key:component::habitica::common::unit_health_points%]"
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/homekit_controller/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
"documentation": "https://www.home-assistant.io/integrations/homekit_controller",
"iot_class": "local_push",
"loggers": ["aiohomekit", "commentjson"],
"requirements": ["aiohomekit==3.2.18"],
"requirements": ["aiohomekit==3.2.19"],
"zeroconf": ["_hap._tcp.local.", "_hap._udp.local."]
}
2 changes: 1 addition & 1 deletion homeassistant/components/ntfy/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@
},
"markdown": {
"name": "Format as Markdown",
"description": "Enable Markdown formatting for the message body (Web app only). See the Markdown guide for syntax details: https://www.markdownguide.org/basic-syntax/."
"description": "Enable Markdown formatting for the message body. See the Markdown guide for syntax details: https://www.markdownguide.org/basic-syntax/."
},
"tags": {
"name": "Tags/Emojis",
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/onedrive/backup.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
from .coordinator import OneDriveConfigEntry

_LOGGER = logging.getLogger(__name__)
UPLOAD_CHUNK_SIZE = 16 * 320 * 1024 # 5.2MB
UPLOAD_CHUNK_SIZE = 32 * 320 * 1024 # 10.4MB
TIMEOUT = ClientTimeout(connect=10, total=43200) # 12 hours
METADATA_VERSION = 2
CACHE_TTL = 300
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/components/portainer/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/portainer",
"iot_class": "local_polling",
"quality_scale": "bronze",
"requirements": ["pyportainer==1.0.2"]
"requirements": ["pyportainer==1.0.3"]
}
2 changes: 1 addition & 1 deletion homeassistant/components/roborock/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"loggers": ["roborock"],
"quality_scale": "silver",
"requirements": [
"python-roborock==2.47.1",
"python-roborock==2.49.1",
"vacuum-map-parser-roborock==0.1.4"
]
}
6 changes: 4 additions & 2 deletions homeassistant/components/satel_integra/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@

from .const import (
CONF_OUTPUT_NUMBER,
CONF_OUTPUTS,
CONF_ZONE_NUMBER,
CONF_ZONE_TYPE,
CONF_ZONES,
SIGNAL_OUTPUTS_UPDATED,
SIGNAL_ZONES_UPDATED,
SUBENTRY_TYPE_OUTPUT,
Expand Down Expand Up @@ -49,7 +51,7 @@ async def async_setup_entry(
zone_num,
zone_name,
zone_type,
SUBENTRY_TYPE_ZONE,
CONF_ZONES,
SIGNAL_ZONES_UPDATED,
)
],
Expand All @@ -73,7 +75,7 @@ async def async_setup_entry(
output_num,
output_name,
ouput_type,
SUBENTRY_TYPE_OUTPUT,
CONF_OUTPUTS,
SIGNAL_OUTPUTS_UPDATED,
)
],
Expand Down
22 changes: 17 additions & 5 deletions homeassistant/components/togrill/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from __future__ import annotations

import asyncio
from collections.abc import Callable
from datetime import timedelta
import logging
Expand Down Expand Up @@ -146,8 +147,9 @@ async def _connect_and_update_registry(self) -> Client:
raise DeviceNotFound("Unable to connect to device") from exc

try:
packet_a0 = await client.read(PacketA0Notify)
except (BleakError, DecodeError) as exc:
async with asyncio.timeout(10):
packet_a0 = await client.read(PacketA0Notify)
except (BleakError, DecodeError, TimeoutError) as exc:
await client.disconnect()
raise DeviceFailed(f"Device failed {exc}") from exc

Expand Down Expand Up @@ -212,9 +214,19 @@ async def _async_update_data(self) -> dict[tuple[int, int | None], Packet]:

@callback
def _async_request_refresh_soon(self) -> None:
self.config_entry.async_create_task(
self.hass, self.async_request_refresh(), eager_start=False
)
"""Request a refresh in the near future.

This way have been called during an update and
would be ignored by debounce logic, so we delay
it by a slight amount to hopefully let the current
update finish first.
"""

async def _delayed_refresh() -> None:
await asyncio.sleep(0.5)
await self.async_request_refresh()

self.config_entry.async_create_task(self.hass, _delayed_refresh())

@callback
def _disconnected_callback(self) -> None:
Expand Down
4 changes: 4 additions & 0 deletions homeassistant/components/tuya/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,7 @@ class DPCode(StrEnum):
DEHUMIDITY_SET_ENUM = "dehumidify_set_enum"
DEHUMIDITY_SET_VALUE = "dehumidify_set_value"
DELAY_SET = "delay_set"
DEW_POINT_TEMP = "dew_point_temp"
DISINFECTION = "disinfection"
DO_NOT_DISTURB = "do_not_disturb"
DOORCONTACT_STATE = "doorcontact_state" # Status of door window sensor
Expand All @@ -728,6 +729,7 @@ class DPCode(StrEnum):
FEED_REPORT = "feed_report"
FEED_STATE = "feed_state"
FEEDIN_POWER_LIMIT_ENABLE = "feedin_power_limit_enable"
FEELLIKE_TEMP = "feellike_temp"
FILTER = "filter"
FILTER_DURATION = "filter_life" # Filter duration (hours)
FILTER_LIFE = "filter" # Filter life (percentage)
Expand All @@ -739,6 +741,7 @@ class DPCode(StrEnum):
GAS_SENSOR_STATE = "gas_sensor_state"
GAS_SENSOR_STATUS = "gas_sensor_status"
GAS_SENSOR_VALUE = "gas_sensor_value"
HEAT_INDEX = "heat_index"
HUMIDIFIER = "humidifier" # Humidification
HUMIDITY = "humidity" # Humidity
HUMIDITY_CURRENT = "humidity_current" # Current humidity
Expand Down Expand Up @@ -968,6 +971,7 @@ class DPCode(StrEnum):
WET = "wet" # Humidification
WINDOW_CHECK = "window_check"
WINDOW_STATE = "window_state"
WINDCHILL_INDEX = "windchill_index"
WINDSPEED = "windspeed"
WINDSPEED_AVG = "windspeed_avg"
WIND_DIRECT = "wind_direct"
Expand Down
24 changes: 24 additions & 0 deletions homeassistant/components/tuya/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -960,6 +960,30 @@ class TuyaSensorEntityDescription(SensorEntityDescription):
state_class=SensorStateClass.MEASUREMENT,
state_conversion=lambda state: _WIND_DIRECTIONS.get(str(state)),
),
TuyaSensorEntityDescription(
key=DPCode.DEW_POINT_TEMP,
translation_key="dew_point_temperature",
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
TuyaSensorEntityDescription(
key=DPCode.FEELLIKE_TEMP,
translation_key="feels_like_temperature",
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
TuyaSensorEntityDescription(
key=DPCode.HEAT_INDEX,
translation_key="heat_index_temperature",
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
TuyaSensorEntityDescription(
key=DPCode.WINDCHILL_INDEX,
translation_key="wind_chill_index_temperature",
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
*BATTERY_SENSORS,
),
DeviceCategory.RQBJ: (
Expand Down
12 changes: 12 additions & 0 deletions homeassistant/components/tuya/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -853,6 +853,18 @@
},
"total_dissolved_solids": {
"name": "Total dissolved solids"
},
"dew_point_temperature": {
"name": "Dew point"
},
"feels_like_temperature": {
"name": "Feels like"
},
"heat_index_temperature": {
"name": "Heat index"
},
"wind_chill_index_temperature": {
"name": "Wind chill index"
}
},
"switch": {
Expand Down
Loading
Loading