- matches(): nur climate oder sensor mit device_class in {temperature, humidity, occupancy, presence, heating}
- Tests: ergänzt für relevante und nicht-relevante Sensoren
- Verhindert falsche Empfehlungen bei Strom-/Tür-/Wetter-Sensoren
29 lines
996 B
Python
29 lines
996 B
Python
from __future__ import annotations
|
|
|
|
from collections.abc import Sequence
|
|
|
|
from app.ha.models import HaEntitySummary
|
|
from app.rules.recommender import Rule
|
|
|
|
|
|
class HeatingRule(Rule):
|
|
def matches(self, entities: Sequence[HaEntitySummary]) -> bool:
|
|
domains = {item.domain for item in entities}
|
|
if "climate" in domains:
|
|
return True
|
|
if "sensor" in domains:
|
|
# Nur Sensoren mit Heizungs-/Klimarelevanz
|
|
relevant_device_classes = {
|
|
"temperature",
|
|
"humidity",
|
|
"occupancy",
|
|
"presence",
|
|
"heating",
|
|
}
|
|
for entity in entities:
|
|
if entity.domain == "sensor" and entity.device_class in relevant_device_classes:
|
|
return True
|
|
return False
|
|
|
|
def recommendation(self, entities: Sequence[HaEntitySummary]) -> str:
|
|
return "Prüfe Heizungsregelung: Aktiviere energiesparenden Modus bei Abwesenheit." |