Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
219aff0
Split the MotionMount user flow init from its data (#180730)
frenck Aug 30, 2026
d90f9f9
Split the Nightscout user flow init from its data (#180729)
frenck Aug 30, 2026
e5431b4
Split the NMBS user flow init from its data (#180728)
frenck Aug 30, 2026
ab90439
Split the NZBGet user flow init from its data (#180727)
frenck Aug 30, 2026
b88c1eb
Split the OSO Energy user flow init from its data (#180726)
frenck Aug 30, 2026
69c46c5
Split the OwnTracks user flow init from its data (#180725)
frenck Aug 30, 2026
d4a48cc
Split the Plaato user flow init from its data (#180724)
frenck Aug 30, 2026
6bd4890
Split the Met Office user flow init from its data (#180734)
frenck Aug 30, 2026
7ce4e14
Add Duco bypass target temperature controls (#176820)
ronaldvdmeer Aug 30, 2026
16e84dd
Add bronze quality scale to DNS IP (#177481)
gjohansson-ST Aug 30, 2026
9b36864
Move the Elgato color temperature range out of the light entity (#180…
frenck Aug 30, 2026
af6ddab
Add Elgato power-on behavior select (#180721)
frenck Aug 30, 2026
96f517c
Let LG ThinQ unload when the network is down (#180610)
frenck Aug 30, 2026
69d49fb
Add generic 10-key LED candle remote to LED Infrared (#178041)
tr4nt0r Aug 30, 2026
bd2d16f
Bump elgato to 6.1.0 (#180733)
frenck Aug 30, 2026
ea7c98a
Seed Sofar total sensors' high-water marks before the first poll (#18…
darkrain-nl Aug 30, 2026
21f7d4d
Add Elgato power-on number entities (#180720)
frenck Aug 30, 2026
e5e8a48
Split the LiteJet user flow init from its data (#180738)
frenck Aug 30, 2026
d16def9
Split the Meteoclimatic user flow init from its data (#180736)
frenck Aug 30, 2026
83d25a4
Split the Last.fm user flow init from its data (#180739)
frenck Aug 30, 2026
a3a138e
Split the Iskra user flow init from its data (#180741)
frenck Aug 30, 2026
ad9633a
Split the Kaleidescape user flow init from its data (#180740)
frenck Aug 30, 2026
34de710
Split the HKO user flow init from its data (#180742)
frenck Aug 30, 2026
5badd4b
Split the Goal Zero user flow init from its data (#180743)
frenck Aug 30, 2026
df68170
Split the Dynalite user flow init from its data (#180749)
frenck Aug 30, 2026
91e8c7a
Split the Dune HD user flow init from its data (#180750)
frenck Aug 30, 2026
5bca651
Split the Freedompro user flow init from its data (#180745)
frenck Aug 30, 2026
a6964e7
Split the eGauge user flow init from its data (#180747)
frenck Aug 30, 2026
267f064
Split the Honeywell user flow init from its data (#180755)
frenck Aug 30, 2026
e05f198
Split the Deluge user flow init from its data (#180752)
frenck Aug 30, 2026
de2f8b6
Split the D-Link user flow init from its data (#180751)
frenck Aug 30, 2026
ab69d80
Add Elgato Wi-Fi signal sensors (#180758)
frenck Aug 30, 2026
54363d3
Split the Discord user flow init from its data (#180756)
frenck Aug 30, 2026
b644dbb
Split the Canary user flow init from its data (#180754)
frenck Aug 30, 2026
5a40f36
Split the ISS user flow init from its data (#180753)
frenck Aug 30, 2026
b069dd0
Split the EDL21 user flow init from its data (#180748)
frenck Aug 30, 2026
3e87ee0
Split the Electra Smart user flow init from its data (#180757)
frenck Aug 30, 2026
bfb3e8e
Split the Litter-Robot user flow init from its data (#180737)
frenck Aug 30, 2026
dd3cb24
Split the Met Eireann user flow init from its data (#180780)
frenck Aug 30, 2026
e539b9f
Split the Moehlenhoff Alpha2 user flow init from its data (#180778)
frenck Aug 30, 2026
729aaf0
Split the AsusWRT user flow init from its data (#180782)
frenck Aug 30, 2026
aadd4ae
Split the Azure Data Explorer user flow init from its data (#180769)
frenck Aug 30, 2026
2b4e087
Split the Sky Remote user flow init from its data (#180772)
frenck Aug 30, 2026
add7624
Split the AEMET user flow init from its data (#180768)
frenck Aug 30, 2026
97b7fc6
Split the Amber Electric user flow init from its data (#180766)
frenck Aug 30, 2026
f6b8444
Split the AnthemAV user flow init from its data (#180765)
frenck Aug 30, 2026
76d4e0d
Split the Airzone user flow init from its data (#180767)
frenck Aug 30, 2026
fe6cd0d
Split the Telegram bot user flow init from its data (#180771)
frenck Aug 30, 2026
ed0103a
Split the SensorPush Cloud user flow init from its data (#180774)
frenck Aug 30, 2026
f8b2d2a
Split the Shopping List user flow init from its data (#180773)
frenck Aug 30, 2026
64bd0cc
Split the QNAP QSW user flow init from its data (#180775)
frenck Aug 30, 2026
c9c9bbb
Split the Pi-hole user flow init from its data (#180776)
frenck Aug 30, 2026
4b116da
Split the Panasonic Viera user flow init from its data (#180777)
frenck Aug 30, 2026
93dbfe6
Split the Android TV user flow init from its data (#180783)
frenck Aug 30, 2026
c186163
Split the Lutron Caseta user flow init from its data (#180784)
frenck Aug 30, 2026
f596125
Split the Media Extractor user flow init from its data (#180781)
frenck Aug 30, 2026
2ab375e
Split the LCN user flow init from its data (#180810)
frenck Aug 30, 2026
95f1bd1
Drop the inert prefilled data from an Energenie flow test (#180811)
frenck Aug 30, 2026
9028805
Split the Awair user flow init from its data (#180809)
frenck Aug 30, 2026
e3ac126
Split the Crownstone user flow init from its data (#180806)
frenck Aug 30, 2026
2d8de55
Split the Huawei LTE user flow init from its data (#180800)
frenck Aug 30, 2026
e1b8b12
Split the Azure Event Hub user flow init from its data (#180798)
frenck Aug 30, 2026
165b76c
Split the Color Extractor user flow init from its data (#180799)
frenck Aug 30, 2026
093ea0a
Split the Smart Meter Texas user flow init from its data (#180797)
frenck Aug 30, 2026
e4ee263
Split the Agent DVR user flow init from its data (#180796)
frenck Aug 30, 2026
bfe9160
Split the Emulated Roku user flow init from its data (#180793)
frenck Aug 30, 2026
abe565e
Split the Airzone Cloud user flow init from its data (#180795)
frenck Aug 30, 2026
2440e22
Split the Environment Canada user flow init from its data (#180792)
frenck Aug 30, 2026
7e40053
Split the JVC Projector user flow init from its data (#180788)
frenck Aug 30, 2026
733af7f
Split the Blue Current user flow init from its data (#180794)
frenck Aug 30, 2026
9aeb370
Split the HVV Departures user flow init from its data (#180790)
frenck Aug 30, 2026
f314d30
Split the Israel Rail user flow init from its data (#180789)
frenck Aug 30, 2026
b4997d5
Split the LG Netcast user flow init from its data (#180787)
frenck Aug 30, 2026
aeb3b24
Split the FAA Delays user flow init from its data (#180791)
frenck Aug 30, 2026
a94bc3b
Follow the Peblar charging session as it changes (#180744)
frenck Aug 30, 2026
dae0936
Split the APsystems user flow init from its data (#180763)
frenck Aug 30, 2026
56b1672
Split the Brunt user flow init from its data (#180761)
frenck Aug 30, 2026
24a7f37
Split the Atag user flow init from its data (#180762)
frenck Aug 30, 2026
796db7c
Split the Hive user flow init from its data (#180760)
frenck Aug 30, 2026
7538d53
Bump homematicip to 2.16.0 (#180805)
lackas Aug 30, 2026
1654e96
Fix Prana fan percentage rounding so displayed values map to the same…
alexx9363 Aug 30, 2026
8aabe76
Split the APCUPSd user flow init from its data (#180764)
frenck Aug 30, 2026
c3e9344
Migrate Lyngdorf diagnostics to the lyngdorf 2.0 API (#180705)
fishloa Aug 30, 2026
fdea999
Split the Daikin user flow init from its data (#180808)
frenck Aug 30, 2026
d6cc425
Migrate the Lyngdorf remote platform to the lyngdorf 2.0 API (#180633)
fishloa Aug 30, 2026
235a9b3
Migrate the Lyngdorf sensor platform to the lyngdorf 2.0 API (#180704)
fishloa Aug 30, 2026
13b0bf0
Migrate the Lyngdorf select platform to the lyngdorf 2.0 API (#180703)
fishloa Aug 30, 2026
616fb5a
Continue the flow these config flow tests already opened (#180823)
frenck Aug 30, 2026
4d22d19
Add Sunsynk integration (#180593)
jamesridgway Aug 30, 2026
f23cda1
Add pool light scheduling to Vistapool (#180686)
fdebrus Aug 30, 2026
48ccfc0
Migrate SMTP integration to aiosmtplib (#180707)
tr4nt0r Aug 30, 2026
426816e
Split the FireServiceRota user flow init from its data (#180746)
frenck Aug 30, 2026
6c92a63
Bump pytrafikverket to 2.0.0 (#180820)
gjohansson-ST Aug 30, 2026
daa926d
Split the Minecraft Server user flow init from its data (#180779)
frenck Aug 30, 2026
f417ad8
Abort the Silla Prism config flow when MQTT is unavailable (#180712)
ebaschiera Aug 30, 2026
0c76ebf
Fix Trafikverket Ferry no time (#180822)
gjohansson-ST Aug 30, 2026
8185ecd
Install firmware and customization updates on Peblar (#180581)
frenck Aug 30, 2026
bbe9477
Remove Teslemetry passenger seat belt binary sensor (#180467)
Bre77 Aug 30, 2026
ea04177
Add select entities to SolarEdge Modbus (#180698)
frenck Aug 30, 2026
f5d961e
Vistapool entity device class (#180679)
fdebrus Aug 30, 2026
d1e33f9
Split the TOLO Sauna user flow init from its data (#180659)
frenck Aug 30, 2026
9145c00
Use SmartThings custom setpoint bounds for air conditioners (#180304)
StellarSea Aug 30, 2026
700e9da
Add calendar platform to Apple iCloud (#180735)
FezVrasta Aug 30, 2026
5ae33ab
Add KACO Modbus integration (#180812)
g4bri3lDev Aug 30, 2026
867436e
Add option to require an admin user for the MCP server endpoint (#180…
balloob Aug 30, 2026
cb844ff
Add Daylight Saving Time switch to Frontier Silicon integration (#180…
ashh87 Aug 30, 2026
59738d0
Collapse ViCare coordinators to one per gateway (#176163)
lackas Aug 30, 2026
cea0a35
Migrate the Lyngdorf media player to the lyngdorf 2.0 API (#180618)
fishloa Aug 30, 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
2 changes: 2 additions & 0 deletions .strict-typing
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ homeassistant.components.isy994.*
homeassistant.components.jellyfin.*
homeassistant.components.jewish_calendar.*
homeassistant.components.jvc_projector.*
homeassistant.components.kaco_modbus.*
homeassistant.components.kaleidescape.*
homeassistant.components.knocki.*
homeassistant.components.knx.*
Expand Down Expand Up @@ -566,6 +567,7 @@ homeassistant.components.streamlabswater.*
homeassistant.components.stt.*
homeassistant.components.suez_water.*
homeassistant.components.sun.*
homeassistant.components.sunsynk.*
homeassistant.components.surepetcare.*
homeassistant.components.switch.*
homeassistant.components.switch_as_x.*
Expand Down
4 changes: 4 additions & 0 deletions CODEOWNERS

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions homeassistant/components/dnsip/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
"documentation": "https://www.home-assistant.io/integrations/dnsip",
"integration_type": "service",
"iot_class": "cloud_polling",
"quality_scale": "bronze",
"requirements": ["aiodns==4.0.4"]
}
90 changes: 90 additions & 0 deletions homeassistant/components/dnsip/quality_scale.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
rules:
# Bronze
action-setup:
status: exempt
comment: Integration does not register custom actions.
appropriate-polling: done
brands: done
common-modules: done
config-flow-test-coverage: done
config-flow: done
dependency-transparency: done
docs-actions:
status: exempt
comment: Integration does not register custom actions.
docs-conditions:
status: exempt
comment: Does not provide conditions
docs-high-level-description: done
docs-installation-instructions: done
docs-removal-instructions: done
docs-triggers:
status: exempt
comment: Does not provide triggers
entity-event-setup:
status: exempt
comment: Entities do not subscribe to events; the sensor polls via async_update.
entity-unique-id: done
has-entity-name: done
runtime-data: done
test-before-configure: done
test-before-setup: done
unique-config-entry: done

# Silver
action-exceptions:
status: exempt
comment: Integration does not register custom actions.
config-entry-unloading: done
docs-configuration-parameters: done
docs-installation-parameters: done
entity-unavailable: done
integration-owner: done
log-when-unavailable: todo
parallel-updates: todo
reauthentication-flow:
status: exempt
comment: DNS resolution does not require authentication.
test-coverage: done

# Gold
devices: done
diagnostics: todo
discovery-update-info:
status: exempt
comment: DNS resolvers do not support discovery.
discovery:
status: exempt
comment: DNS resolvers do not support discovery.
docs-data-update: done
docs-examples: todo
docs-known-limitations: todo
docs-supported-devices:
status: exempt
comment: Integration does not represent physical devices.
docs-supported-functions: todo
docs-troubleshooting: done
docs-use-cases: todo
dynamic-devices:
status: exempt
comment: Integration does not represent physical devices.
entity-category: done
entity-device-class: done
entity-disabled-by-default: done
entity-translations: done
exception-translations: todo
icon-translations: done
reconfiguration-flow: todo
repair-issues:
status: exempt
comment: No repairs.
stale-devices:
status: exempt
comment: Integration does not represent physical devices.

# Platinum
async-dependency: done
inject-websession:
status: exempt
comment: Integration uses aiodns directly; no shared HTTP websession applies.
strict-typing: todo
2 changes: 1 addition & 1 deletion homeassistant/components/duco/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from homeassistant.const import Platform

DOMAIN = "duco"
PLATFORMS = [Platform.FAN, Platform.SELECT, Platform.SENSOR]
PLATFORMS = [Platform.FAN, Platform.NUMBER, Platform.SELECT, Platform.SENSOR]
SCAN_INTERVAL = timedelta(seconds=10)
BOX_NODE_ID = 1
VENTILATION_CAPABLE_NODE_TYPES: tuple[NodeType, ...] = (
Expand Down
26 changes: 26 additions & 0 deletions homeassistant/components/duco/coordinator.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
)
from duco_connectivity.models import (
BoardInfo,
BypassSupplyTemperatureTarget,
Node,
NodeListActionItemList,
NodeName,
Expand All @@ -30,6 +31,7 @@

_LOGGER = logging.getLogger(__name__)


type DucoConfigEntry = ConfigEntry[DucoCoordinator]


Expand All @@ -42,6 +44,7 @@ class DucoData:
rssi_wifi: int | None
time_filter_remain: int | None
ventilation_temperatures: VentilationTemperatureInfo | None
bypass_supply_temperature_targets: dict[int, BypassSupplyTemperatureTarget]


class DucoCoordinator(DataUpdateCoordinator[DucoData]):
Expand All @@ -51,6 +54,7 @@ class DucoCoordinator(DataUpdateCoordinator[DucoData]):
board_info: BoardInfo
_supports_time_filter_remain: bool
_supports_ventilation_temperatures: bool
_supports_bypass_supply_temperature_targets: bool
_configured_node_names: dict[int, str]

def __init__(
Expand All @@ -71,6 +75,7 @@ def __init__(
self._configured_node_names = {}
self._supports_time_filter_remain = True
self._supports_ventilation_temperatures = True
self._supports_bypass_supply_temperature_targets = True

async def _async_load_node_names(self) -> None:
"""Load configured Duco node names during setup."""
Expand Down Expand Up @@ -201,10 +206,31 @@ async def _async_update_data(self) -> DucoData:
"Could not fetch Duco ventilation temperatures", exc_info=err
)

bypass_supply_temperature_targets: dict[int, BypassSupplyTemperatureTarget] = {}
if self._supports_bypass_supply_temperature_targets:
try:
bypass_supply_temperature_targets = (
await self.client.async_get_bypass_supply_temperature_targets()
)
except DucoUnsupportedCapabilityError:
bypass_supply_temperature_targets = {}
self._supports_bypass_supply_temperature_targets = False
except DucoConnectionError as err:
raise UpdateFailed(
translation_domain=DOMAIN,
translation_key="cannot_connect",
) from err
except DucoError as err:
raise UpdateFailed(
translation_domain=DOMAIN,
translation_key="api_error",
) from err

return DucoData(
nodes={node.node_id: node for node in nodes},
node_actions=node_actions,
rssi_wifi=rssi_wifi,
time_filter_remain=time_filter_remain,
ventilation_temperatures=ventilation_temperatures,
bypass_supply_temperature_targets=bypass_supply_temperature_targets,
)
Loading
Loading