Filter room management maintenance actions
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
# Changelog
|
||||
|
||||
## 1.7.8 - 2026-07-26
|
||||
- Raumverwaltung blendet Wartungs-/Diagnose-Aktoren wie Batterie-Reset,
|
||||
Ping, Identify, Restart/Reboot/Reload und Wake-on-LAN aus den
|
||||
Raumvorschlägen aus.
|
||||
- Dadurch bleiben Räume auf nutzbare Steuerungen fokussiert: Licht, Strom,
|
||||
Schalter, Steckdosen, Heizung, Wasser, Belüftung, Sicherheit, Rollos und
|
||||
echte Szenen/Regler.
|
||||
|
||||
## 1.7.7 - 2026-07-26
|
||||
- Raumverwaltung erzeugt jetzt eine vollständige Übersicht aus allen
|
||||
Home-Assistant-Bereichen, nicht nur aus bereits konfigurierten Aktoren.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: SillyHome Next
|
||||
version: "1.7.7"
|
||||
version: "1.7.8"
|
||||
slug: sillyhome_next
|
||||
description: Lernt automatisch aus deinem Verhalten und steuert freigegebene Aktoren
|
||||
url: http://192.168.6.31:3000/pino/sillyhome-next
|
||||
|
||||
@@ -604,6 +604,8 @@ def room_management_overview(request: Request) -> RoomManagementOverview:
|
||||
actuator = entities.get(entity_id)
|
||||
if actuator is None:
|
||||
continue
|
||||
if not _is_management_actuator(actuator):
|
||||
continue
|
||||
room = _entity_room(actuator)
|
||||
if room not in rooms:
|
||||
rooms[room] = RoomManagementGroup(room=room, actuator_count=0)
|
||||
@@ -1151,6 +1153,41 @@ def _entity_room(entity: HaEntitySummary) -> str:
|
||||
return room or "Ohne Raum"
|
||||
|
||||
|
||||
def _is_management_actuator(entity: HaEntitySummary) -> bool:
|
||||
if entity.domain not in {
|
||||
"climate",
|
||||
"cover",
|
||||
"fan",
|
||||
"humidifier",
|
||||
"input_boolean",
|
||||
"light",
|
||||
"lock",
|
||||
"number",
|
||||
"scene",
|
||||
"siren",
|
||||
"switch",
|
||||
"valve",
|
||||
}:
|
||||
return False
|
||||
text = " ".join(
|
||||
str(value).lower().replace("_", " ")
|
||||
for value in [entity.entity_id, entity.friendly_name, entity.device_name]
|
||||
if value
|
||||
)
|
||||
noisy_tokens = {
|
||||
"battery replaced",
|
||||
"identify",
|
||||
"ping",
|
||||
"reboot",
|
||||
"reload",
|
||||
"restart",
|
||||
"wake on lan",
|
||||
}
|
||||
if any(token in text for token in noisy_tokens):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def _room_from_text(value: str) -> str | None:
|
||||
normalized = value.replace("_", " ").replace("-", " ").strip()
|
||||
if not normalized:
|
||||
|
||||
@@ -117,7 +117,7 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]:
|
||||
app = FastAPI(
|
||||
title="SillyHome Next API",
|
||||
description="Lokales Smart-Home-Intelligenzsystem für Home Assistant.",
|
||||
version="1.7.7",
|
||||
version="1.7.8",
|
||||
lifespan=lifespan,
|
||||
)
|
||||
app.state.settings = load_settings()
|
||||
|
||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "sillyhome-next"
|
||||
version = "1.7.7"
|
||||
version = "1.7.8"
|
||||
description = "Lokales Smart-Home-Intelligenzsystem für Home Assistant"
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
|
||||
Reference in New Issue
Block a user