Refactor Freebox Home categories (#99224)
This commit is contained in:
parent
62b1211dee
commit
750cfeb76a
4 changed files with 32 additions and 17 deletions
|
@ -12,13 +12,13 @@ from homeassistant.components.ffmpeg.camera import (
|
||||||
FFmpegCamera,
|
FFmpegCamera,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import CONF_NAME, Platform
|
from homeassistant.const import CONF_NAME
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers import entity_platform
|
from homeassistant.helpers import entity_platform
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from .const import ATTR_DETECTION, DOMAIN
|
from .const import ATTR_DETECTION, DOMAIN, FreeboxHomeCategory
|
||||||
from .home_base import FreeboxHomeEntity
|
from .home_base import FreeboxHomeEntity
|
||||||
from .router import FreeboxRouter
|
from .router import FreeboxRouter
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ def add_entities(hass: HomeAssistant, router, async_add_entities, tracked):
|
||||||
new_tracked = []
|
new_tracked = []
|
||||||
|
|
||||||
for nodeid, node in router.home_devices.items():
|
for nodeid, node in router.home_devices.items():
|
||||||
if (node["category"] != Platform.CAMERA) or (nodeid in tracked):
|
if (node["category"] != FreeboxHomeCategory.CAMERA) or (nodeid in tracked):
|
||||||
continue
|
continue
|
||||||
new_tracked.append(FreeboxCamera(hass, router, node))
|
new_tracked.append(FreeboxCamera(hass, router, node))
|
||||||
tracked.add(nodeid)
|
tracked.add(nodeid)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""Freebox component constants."""
|
"""Freebox component constants."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import enum
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
from homeassistant.const import Platform
|
from homeassistant.const import Platform
|
||||||
|
@ -58,16 +59,30 @@ DEVICE_ICONS = {
|
||||||
ATTR_DETECTION = "detection"
|
ATTR_DETECTION = "detection"
|
||||||
|
|
||||||
|
|
||||||
|
# Home
|
||||||
|
class FreeboxHomeCategory(enum.StrEnum):
|
||||||
|
"""Freebox Home categories."""
|
||||||
|
|
||||||
|
ALARM = "alarm"
|
||||||
|
CAMERA = "camera"
|
||||||
|
DWS = "dws"
|
||||||
|
IOHOME = "iohome"
|
||||||
|
KFB = "kfb"
|
||||||
|
OPENER = "opener"
|
||||||
|
PIR = "pir"
|
||||||
|
RTS = "rts"
|
||||||
|
|
||||||
|
|
||||||
CATEGORY_TO_MODEL = {
|
CATEGORY_TO_MODEL = {
|
||||||
"pir": "F-HAPIR01A",
|
FreeboxHomeCategory.PIR: "F-HAPIR01A",
|
||||||
"camera": "F-HACAM01A",
|
FreeboxHomeCategory.CAMERA: "F-HACAM01A",
|
||||||
"dws": "F-HADWS01A",
|
FreeboxHomeCategory.DWS: "F-HADWS01A",
|
||||||
"kfb": "F-HAKFB01A",
|
FreeboxHomeCategory.KFB: "F-HAKFB01A",
|
||||||
"alarm": "F-MSEC07A",
|
FreeboxHomeCategory.ALARM: "F-MSEC07A",
|
||||||
"rts": "RTS",
|
FreeboxHomeCategory.RTS: "RTS",
|
||||||
"iohome": "IOHome",
|
FreeboxHomeCategory.IOHOME: "IOHome",
|
||||||
}
|
}
|
||||||
|
|
||||||
HOME_COMPATIBLE_PLATFORMS = [
|
HOME_COMPATIBLE_CATEGORIES = [
|
||||||
Platform.CAMERA,
|
FreeboxHomeCategory.CAMERA,
|
||||||
]
|
]
|
||||||
|
|
|
@ -9,7 +9,7 @@ from homeassistant.helpers.device_registry import DeviceInfo
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
|
|
||||||
from .const import CATEGORY_TO_MODEL, DOMAIN
|
from .const import CATEGORY_TO_MODEL, DOMAIN, FreeboxHomeCategory
|
||||||
from .router import FreeboxRouter
|
from .router import FreeboxRouter
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
@ -48,10 +48,10 @@ class FreeboxHomeEntity(Entity):
|
||||||
if self._model is None:
|
if self._model is None:
|
||||||
if node["type"].get("inherit") == "node::rts":
|
if node["type"].get("inherit") == "node::rts":
|
||||||
self._manufacturer = "Somfy"
|
self._manufacturer = "Somfy"
|
||||||
self._model = CATEGORY_TO_MODEL.get("rts")
|
self._model = CATEGORY_TO_MODEL[FreeboxHomeCategory.RTS]
|
||||||
elif node["type"].get("inherit") == "node::ios":
|
elif node["type"].get("inherit") == "node::ios":
|
||||||
self._manufacturer = "Somfy"
|
self._manufacturer = "Somfy"
|
||||||
self._model = CATEGORY_TO_MODEL.get("iohome")
|
self._model = CATEGORY_TO_MODEL[FreeboxHomeCategory.IOHOME]
|
||||||
|
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = DeviceInfo(
|
||||||
identifiers={(DOMAIN, self._id)},
|
identifiers={(DOMAIN, self._id)},
|
||||||
|
|
|
@ -28,7 +28,7 @@ from .const import (
|
||||||
APP_DESC,
|
APP_DESC,
|
||||||
CONNECTION_SENSORS_KEYS,
|
CONNECTION_SENSORS_KEYS,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
HOME_COMPATIBLE_PLATFORMS,
|
HOME_COMPATIBLE_CATEGORIES,
|
||||||
STORAGE_KEY,
|
STORAGE_KEY,
|
||||||
STORAGE_VERSION,
|
STORAGE_VERSION,
|
||||||
)
|
)
|
||||||
|
@ -190,7 +190,7 @@ class FreeboxRouter:
|
||||||
|
|
||||||
new_device = False
|
new_device = False
|
||||||
for home_node in home_nodes:
|
for home_node in home_nodes:
|
||||||
if home_node["category"] in HOME_COMPATIBLE_PLATFORMS:
|
if home_node["category"] in HOME_COMPATIBLE_CATEGORIES:
|
||||||
if self.home_devices.get(home_node["id"]) is None:
|
if self.home_devices.get(home_node["id"]) is None:
|
||||||
new_device = True
|
new_device = True
|
||||||
self.home_devices[home_node["id"]] = home_node
|
self.home_devices[home_node["id"]] = home_node
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue