1 """Support for getting the disk temperature of a host."""
3 from __future__
import annotations
5 from datetime
import timedelta
8 from telnetlib
import Telnet
11 import voluptuous
as vol
14 PLATFORM_SCHEMA
as SENSOR_PLATFORM_SCHEMA,
30 _LOGGER = logging.getLogger(__name__)
32 ATTR_DEVICE =
"device"
35 DEFAULT_HOST =
"localhost"
37 DEFAULT_NAME =
"HD Temperature"
42 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
44 vol.Optional(CONF_DISKS, default=[]): vol.All(cv.ensure_list, [cv.string]),
45 vol.Optional(CONF_HOST, default=DEFAULT_HOST): cv.string,
46 vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
47 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
55 add_entities: AddEntitiesCallback,
56 discovery_info: DiscoveryInfoType |
None =
None,
58 """Set up the HDDTemp sensor."""
59 name = config.get(CONF_NAME)
60 host = config.get(CONF_HOST)
61 port = config.get(CONF_PORT)
62 disks = config.get(CONF_DISKS)
68 disks = [next(iter(hddtemp.data)).split(
"|")[0]]
74 """Representation of a HDDTemp sensor."""
76 _attr_device_class = SensorDeviceClass.TEMPERATURE
79 """Initialize a HDDTemp sensor."""
87 """Return the state attributes of the sensor."""
88 if self.
_details_details
is not None:
89 return {ATTR_DEVICE: self.
_details_details[0], ATTR_MODEL: self.
_details_details[1]}
93 """Get the latest data from HDDTemp daemon and updates the state."""
108 """Get the latest data from HDDTemp and update the states."""
111 """Initialize the data object."""
117 """Get the latest data from HDDTemp running as daemon."""
119 connection = Telnet(host=self.
hosthost, port=self.
portport, timeout=DEFAULT_TIMEOUT)
121 connection.read_all()
127 self.
datadata = {data[i].split(
"|")[0]: data[i]
for i
in range(0, len(data), 1)}
128 except ConnectionRefusedError:
129 _LOGGER.error(
"HDDTemp is not available at %s:%s", self.
hosthost, self.
portport)
131 except socket.gaierror:
132 _LOGGER.error(
"HDDTemp host not found %s:%s", self.
hosthost, self.
portport)
def __init__(self, host, port)
def __init__(self, name, disk, hddtemp)
_attr_native_unit_of_measurement
dict[str, Any]|None extra_state_attributes(self)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)
def add_entities(account, async_add_entities, tracked)