mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-23 03:33:35 +00:00
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
|
"""Overheat module."""
|
||
|
|
||
|
from __future__ import annotations
|
||
|
|
||
|
from ...feature import Feature
|
||
|
from ..smartmodule import SmartModule
|
||
|
|
||
|
|
||
|
class OverheatProtection(SmartModule):
|
||
|
"""Implementation for overheat_protection."""
|
||
|
|
||
|
SYSINFO_LOOKUP_KEYS = ["overheated", "overheat_status"]
|
||
|
|
||
|
def _initialize_features(self) -> None:
|
||
|
"""Initialize features after the initial update."""
|
||
|
self._add_feature(
|
||
|
Feature(
|
||
|
self._device,
|
||
|
container=self,
|
||
|
id="overheated",
|
||
|
name="Overheated",
|
||
|
attribute_getter="overheated",
|
||
|
icon="mdi:heat-wave",
|
||
|
type=Feature.Type.BinarySensor,
|
||
|
category=Feature.Category.Info,
|
||
|
)
|
||
|
)
|
||
|
|
||
|
@property
|
||
|
def overheated(self) -> bool:
|
||
|
"""Return True if device reports overheating."""
|
||
|
if (value := self._device.sys_info.get("overheat_status")) is not None:
|
||
|
# Value can be normal, cooldown, or overheated.
|
||
|
# We report all but normal as overheated.
|
||
|
return value != "normal"
|
||
|
|
||
|
return self._device.sys_info["overheated"]
|
||
|
|
||
|
def query(self) -> dict:
|
||
|
"""Query to execute during the update cycle."""
|
||
|
return {}
|