diff --git a/homeassistant/components/brottsplatskartan/config_flow.py b/homeassistant/components/brottsplatskartan/config_flow.py index ac9a764179e..39c7421fa92 100644 --- a/homeassistant/components/brottsplatskartan/config_flow.py +++ b/homeassistant/components/brottsplatskartan/config_flow.py @@ -4,6 +4,7 @@ from __future__ import annotations from typing import Any import uuid +from brottsplatskartan import AREAS import voluptuous as vol from homeassistant import config_entries @@ -11,7 +12,7 @@ from homeassistant.const import CONF_LATITUDE, CONF_LOCATION, CONF_LONGITUDE from homeassistant.data_entry_flow import FlowResult from homeassistant.helpers import selector -from .const import AREAS, CONF_APP_ID, CONF_AREA, DEFAULT_NAME, DOMAIN +from .const import CONF_APP_ID, CONF_AREA, DEFAULT_NAME, DOMAIN DATA_SCHEMA = vol.Schema( { diff --git a/homeassistant/components/brottsplatskartan/const.py b/homeassistant/components/brottsplatskartan/const.py index b53a39755a6..94b4a7e7280 100644 --- a/homeassistant/components/brottsplatskartan/const.py +++ b/homeassistant/components/brottsplatskartan/const.py @@ -12,27 +12,3 @@ LOGGER = logging.getLogger(__package__) CONF_AREA = "area" CONF_APP_ID = "app_id" DEFAULT_NAME = "Brottsplatskartan" - -AREAS = [ - "Blekinge län", - "Dalarnas län", - "Gotlands län", - "Gävleborgs län", - "Hallands län", - "Jämtlands län", - "Jönköpings län", - "Kalmar län", - "Kronobergs län", - "Norrbottens län", - "Skåne län", - "Stockholms län", - "Södermanlands län", - "Uppsala län", - "Värmlands län", - "Västerbottens län", - "Västernorrlands län", - "Västmanlands län", - "Västra Götalands län", - "Örebro län", - "Östergötlands län", -] diff --git a/homeassistant/components/brottsplatskartan/manifest.json b/homeassistant/components/brottsplatskartan/manifest.json index 14c4a5e39c2..0a386094bae 100644 --- a/homeassistant/components/brottsplatskartan/manifest.json +++ b/homeassistant/components/brottsplatskartan/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/brottsplatskartan", "iot_class": "cloud_polling", "loggers": ["brottsplatskartan"], - "requirements": ["brottsplatskartan==0.0.1"] + "requirements": ["brottsplatskartan==1.0.5"] } diff --git a/homeassistant/components/brottsplatskartan/sensor.py b/homeassistant/components/brottsplatskartan/sensor.py index df17832f695..b30b31be985 100644 --- a/homeassistant/components/brottsplatskartan/sensor.py +++ b/homeassistant/components/brottsplatskartan/sensor.py @@ -3,6 +3,7 @@ from __future__ import annotations from collections import defaultdict from datetime import timedelta +from typing import Literal from brottsplatskartan import ATTRIBUTION, BrottsplatsKartan @@ -29,9 +30,11 @@ async def async_setup_entry( app = entry.data[CONF_APP_ID] name = entry.title - bpk = BrottsplatsKartan(app=app, area=area, latitude=latitude, longitude=longitude) + bpk = BrottsplatsKartan( + app=app, areas=[area] if area else None, latitude=latitude, longitude=longitude + ) - async_add_entities([BrottsplatskartanSensor(bpk, name, entry.entry_id)], True) + async_add_entities([BrottsplatskartanSensor(bpk, name, entry.entry_id, area)], True) class BrottsplatskartanSensor(SensorEntity): @@ -41,9 +44,12 @@ class BrottsplatskartanSensor(SensorEntity): _attr_has_entity_name = True _attr_name = None - def __init__(self, bpk: BrottsplatsKartan, name: str, entry_id: str) -> None: + def __init__( + self, bpk: BrottsplatsKartan, name: str, entry_id: str, area: str | None + ) -> None: """Initialize the Brottsplatskartan sensor.""" self._brottsplatskartan = bpk + self._area = area self._attr_unique_id = entry_id self._attr_device_info = DeviceInfo( entry_type=DeviceEntryType.SERVICE, @@ -56,12 +62,19 @@ class BrottsplatskartanSensor(SensorEntity): """Update device state.""" incident_counts: defaultdict[str, int] = defaultdict(int) - incidents = self._brottsplatskartan.get_incidents() + get_incidents: dict[str, list] | Literal[ + False + ] = self._brottsplatskartan.get_incidents() - if incidents is False: + if get_incidents is False: LOGGER.debug("Problems fetching incidents") return + if self._area: + incidents = get_incidents.get(self._area) or [] + else: + incidents = get_incidents.get("latlng") or [] + for incident in incidents: if (incident_type := incident.get("title_type")) is not None: incident_counts[incident_type] += 1 diff --git a/requirements_all.txt b/requirements_all.txt index f8be3735251..2584e5db3b9 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -589,7 +589,7 @@ broadlink==0.18.3 brother==3.0.0 # homeassistant.components.brottsplatskartan -brottsplatskartan==0.0.1 +brottsplatskartan==1.0.5 # homeassistant.components.brunt brunt==1.2.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index a08396ccd6c..79a4aca339f 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -497,7 +497,7 @@ broadlink==0.18.3 brother==3.0.0 # homeassistant.components.brottsplatskartan -brottsplatskartan==0.0.1 +brottsplatskartan==1.0.5 # homeassistant.components.brunt brunt==1.2.0