Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
8229631
Add field IDs to the bug report form (#182854)
timmo001 Sep 21, 2026
3c49717
Set tool metadata in light (#182705)
balloob Sep 21, 2026
2efaca2
Update awalsh128/cache-apt-pkgs-action action to v1.6.3 (#182812)
renovate[bot] Sep 21, 2026
92c59bf
Move update service registration to services module (#182826)
epenet Sep 21, 2026
256bb25
Move humidifier service registration to services module (#182825)
epenet Sep 21, 2026
c2bda89
Move datetime service registration to services module (#182822)
epenet Sep 21, 2026
2870369
Move remote service registration to services module (#182818)
epenet Sep 21, 2026
fd5526d
Move number service registration to services module (#182820)
epenet Sep 21, 2026
96720c8
Move fan service registration to services module (#182817)
epenet Sep 21, 2026
7fe792f
Move alarm_control_panel service registration to services module (#18…
epenet Sep 21, 2026
a0338b5
Move text service registration to services module (#182824)
epenet Sep 21, 2026
ed63699
Move date service registration to services module (#182821)
epenet Sep 21, 2026
602d564
Move lock service registration to services module (#182815)
epenet Sep 21, 2026
3eebe7e
bosch_shc: rename Smart Plug routing switch to "Range extension" (#18…
mosandlt Sep 21, 2026
082ba4b
Move time service registration to services module (#182823)
epenet Sep 21, 2026
5988177
Paj GPS dependecy upgrade to 0.4.1 (#182751)
skipperro Sep 21, 2026
fd3ecb1
Set tool metadata in lawn_mower (#182704)
balloob Sep 21, 2026
64976f1
Set tool metadata in media_player (#182707)
balloob Sep 21, 2026
8358c9c
Adjust lg_thinq energy polling schedule to mitigate server load (#182…
LG-ThinQ-Integration Sep 21, 2026
d0cd635
Fix irm_kmi serving stale data indefinitely after API errors (#182795)
YP30 Sep 21, 2026
5c99cd4
Bump async-upnp-client to 0.48.2 (#182573)
ssltg Sep 21, 2026
24fca37
Type the common part of KNX UI entity configurations (#182728)
farmio Sep 21, 2026
7718b94
Set tool metadata in fan (#182702)
balloob Sep 21, 2026
6ca1b62
Gatus: Disable diagnostic sensors by default (#182476)
TN-1 Sep 21, 2026
1699eca
Add sensor platform to INDI Allsky integration (#182326)
TN-1 Sep 21, 2026
32b8e05
Prepare the breakup of the coordinator in LibreNMS (#182388)
mib1185 Sep 21, 2026
62c9711
Handle service device in diagnostics for Alexa Devices (#182788)
chemelli74 Sep 21, 2026
71e382e
Add cover speeds for SwitchBot curtains (#182416)
joostlek Sep 21, 2026
c945eab
Offer retry when Teslemetry Powerwall approval window expires (#181334)
Bre77 Sep 21, 2026
1ca85dc
bosch_shc: add whole-home open doors/windows summary sensor (#182869)
mosandlt Sep 21, 2026
cf3580a
Use the hassio-provided Supervisor user for Unix socket auth (#182302)
agners Sep 21, 2026
1f949d9
bosch_shc: add alarm bypass switch entities (#182246)
mosandlt Sep 21, 2026
90233bf
bosch_shc: add thermostat valve position entity (#182249)
mosandlt Sep 21, 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
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,14 @@ body:
value: |
This issue form is for reporting bugs only!

Please read our [issue reporting guide][reporting-issues] before submitting a report.

If you have a feature or enhancement request, please [request them here instead][fr].

[fr]: https://github.com/orgs/home-assistant/discussions
[reporting-issues]: https://www.home-assistant.io/help/reporting_issues/
- type: textarea
id: problem
validations:
required: true
attributes:
Expand All @@ -35,12 +39,14 @@ body:

[![Open your Home Assistant instance and show the system information.](https://my.home-assistant.io/badges/system_health.svg)](https://my.home-assistant.io/redirect/system_health/)
- type: input
id: last_working_version
attributes:
label: What was the last working version of Home Assistant Core?
placeholder: core-
description: >
If known, otherwise leave blank.
- type: dropdown
id: installation_type
validations:
required: true
attributes:
Expand Down Expand Up @@ -76,6 +82,7 @@ body:
value: |
# Details
- type: textarea
id: diagnostics
attributes:
label: Diagnostics information
placeholder: "drag-and-drop the diagnostics data file here (do not copy-and-paste the content)"
Expand All @@ -87,18 +94,21 @@ body:

It generally allows pinpointing defects and thus resolving issues faster.
- type: textarea
id: configuration
attributes:
label: Example YAML snippet
description: |
If applicable, please provide an example piece of YAML that can help reproduce this problem.
This can be from an automation, script, scene or configuration.
render: yaml
- type: textarea
id: logs
attributes:
label: Anything in the logs that might be useful for us?
description: For example, error message, or stack traces.
render: txt
- type: textarea
id: additional_information
attributes:
label: Additional information
description: >
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/cache-apt-packages/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ runs:
shell: bash
run: sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
- name: Install apt packages via cache
uses: awalsh128/cache-apt-pkgs-action@2c09a5e66da6c8016428a2172bd76e5e4f14bb17 # v1.5.3
uses: awalsh128/cache-apt-pkgs-action@553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9 # v1.6.3
with:
packages: ${{ inputs.packages }}
version: ${{ inputs.version }}
Expand Down
53 changes: 3 additions & 50 deletions homeassistant/components/alarm_control_panel/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import logging
from typing import Any, Final, final, override

import probatio
from propcache.api import cached_property

from homeassistant.config_entries import ConfigEntry
Expand All @@ -22,37 +21,31 @@
from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import ServiceValidationError
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.config_validation import make_entity_service_schema
from homeassistant.helpers.entity import Entity, EntityDescription
from homeassistant.helpers.entity_component import EntityComponent
from homeassistant.helpers.typing import ConfigType
from homeassistant.util.hass_dict import HassKey

from .const import ( # noqa: F401
ATTR_CHANGED_BY,
ATTR_CODE_ARM_REQUIRED,
DATA_COMPONENT,
DOMAIN,
AlarmControlPanelEntityFeature,
AlarmControlPanelEntityStateAttribute,
AlarmControlPanelState,
CodeFormat,
)
from .services import async_setup_services

_LOGGER: Final = logging.getLogger(__name__)

DATA_COMPONENT: HassKey[EntityComponent[AlarmControlPanelEntity]] = HassKey(DOMAIN)
ENTITY_ID_FORMAT: Final = DOMAIN + ".{}"
PLATFORM_SCHEMA: Final = cv.PLATFORM_SCHEMA
PLATFORM_SCHEMA_BASE: Final = cv.PLATFORM_SCHEMA_BASE
SCAN_INTERVAL: Final = timedelta(seconds=30)

CONF_DEFAULT_CODE = "default_code"

ALARM_SERVICE_SCHEMA: Final = make_entity_service_schema(
{probatio.Optional(ATTR_CODE): cv.string}
)


# mypy: disallow-any-generics


Expand All @@ -64,47 +57,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:

await component.async_setup(config)

component.async_register_entity_service(
SERVICE_ALARM_DISARM,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_disarm",
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_HOME,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_home",
[AlarmControlPanelEntityFeature.ARM_HOME],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_AWAY,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_away",
[AlarmControlPanelEntityFeature.ARM_AWAY],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_NIGHT,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_night",
[AlarmControlPanelEntityFeature.ARM_NIGHT],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_VACATION,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_vacation",
[AlarmControlPanelEntityFeature.ARM_VACATION],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_CUSTOM_BYPASS,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_custom_bypass",
[AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS],
)
component.async_register_entity_service(
SERVICE_ALARM_TRIGGER,
ALARM_SERVICE_SCHEMA,
"async_alarm_trigger",
[AlarmControlPanelEntityFeature.TRIGGER],
)
async_setup_services(hass)

return True

Expand Down
10 changes: 9 additions & 1 deletion homeassistant/components/alarm_control_panel/const.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
"""Provides the constants needed for component."""

from enum import IntFlag, StrEnum
from typing import Final
from typing import TYPE_CHECKING, Final

from homeassistant.util.hass_dict import HassKey

if TYPE_CHECKING:
from homeassistant.helpers.entity_component import EntityComponent

from . import AlarmControlPanelEntity

DOMAIN: Final = "alarm_control_panel"
DATA_COMPONENT: HassKey[EntityComponent[AlarmControlPanelEntity]] = HassKey(DOMAIN)

ATTR_CHANGED_BY: Final = "changed_by"
ATTR_CODE_ARM_REQUIRED: Final = "code_arm_required"
Expand Down
73 changes: 73 additions & 0 deletions homeassistant/components/alarm_control_panel/services.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
"""Services for the Alarm control panel integration."""

from typing import Final

import probatio

from homeassistant.const import (
ATTR_CODE,
SERVICE_ALARM_ARM_AWAY,
SERVICE_ALARM_ARM_CUSTOM_BYPASS,
SERVICE_ALARM_ARM_HOME,
SERVICE_ALARM_ARM_NIGHT,
SERVICE_ALARM_ARM_VACATION,
SERVICE_ALARM_DISARM,
SERVICE_ALARM_TRIGGER,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.config_validation import make_entity_service_schema

from .const import DATA_COMPONENT, AlarmControlPanelEntityFeature

ALARM_SERVICE_SCHEMA: Final = make_entity_service_schema(
{probatio.Optional(ATTR_CODE): cv.string}
)


@callback
def async_setup_services(hass: HomeAssistant) -> None:
"""Register the alarm control panel services."""
component = hass.data[DATA_COMPONENT]

component.async_register_entity_service(
SERVICE_ALARM_DISARM,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_disarm",
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_HOME,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_home",
[AlarmControlPanelEntityFeature.ARM_HOME],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_AWAY,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_away",
[AlarmControlPanelEntityFeature.ARM_AWAY],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_NIGHT,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_night",
[AlarmControlPanelEntityFeature.ARM_NIGHT],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_VACATION,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_vacation",
[AlarmControlPanelEntityFeature.ARM_VACATION],
)
component.async_register_entity_service(
SERVICE_ALARM_ARM_CUSTOM_BYPASS,
ALARM_SERVICE_SCHEMA,
"async_handle_alarm_arm_custom_bypass",
[AlarmControlPanelEntityFeature.ARM_CUSTOM_BYPASS],
)
component.async_register_entity_service(
SERVICE_ALARM_TRIGGER,
ALARM_SERVICE_SCHEMA,
"async_alarm_trigger",
[AlarmControlPanelEntityFeature.TRIGGER],
)
6 changes: 4 additions & 2 deletions homeassistant/components/alexa_devices/diagnostics.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,11 @@ async def async_get_device_diagnostics(
coordinator = entry.runtime_data

if TYPE_CHECKING:
# alexa_devices does not create child devices, and devices have a serial number
assert isinstance(device_entry, DeviceEntry)
assert device_entry.serial_number

if device_entry.serial_number is None:
# Service device has no serial number and no matching coordinator data
return {"service device": True}

return build_device_data(coordinator.data[device_entry.serial_number])

Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/bosch_shc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
Platform.COVER,
Platform.SENSOR,
Platform.SWITCH,
Platform.VALVE,
]

_LOGGER = logging.getLogger(__name__)
Expand Down
6 changes: 6 additions & 0 deletions homeassistant/components/bosch_shc/icons.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
}
},
"switch": {
"bypass": {
"default": "mdi:shield-off-outline"
},
"bypass_infinite": {
"default": "mdi:timer-off-outline"
},
"child_lock": {
"default": "mdi:lock"
},
Expand Down
Loading
Loading