Files
core/homeassistant/components/cert_expiry/sensor.py
T

55 lines
1.8 KiB
Python

"""Counter for the days until an HTTPS (TLS) certificate will expire."""
from datetime import datetime
from typing import override
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .const import DOMAIN
from .coordinator import CertExpiryConfigEntry, CertExpiryDataUpdateCoordinator
from .entity import CertExpiryEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: CertExpiryConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Add cert-expiry entry."""
coordinator = entry.runtime_data
sensors = [SSLCertificateTimestamp(coordinator)]
async_add_entities(sensors, True)
class SSLCertificateTimestamp(CertExpiryEntity, SensorEntity):
"""Implementation of the Cert Expiry timestamp sensor."""
_attr_device_class = SensorDeviceClass.TIMESTAMP
_attr_translation_key = "certificate_expiry"
def __init__(
self,
coordinator: CertExpiryDataUpdateCoordinator,
) -> None:
"""Initialize a Cert Expiry timestamp sensor."""
super().__init__(coordinator)
self._attr_unique_id = f"{coordinator.host}:{coordinator.port}-timestamp"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, f"{coordinator.host}:{coordinator.port}")},
name=coordinator.name,
entry_type=DeviceEntryType.SERVICE,
)
@property
@override
def native_value(self) -> datetime | None:
"""Return the state of the sensor."""
if self.coordinator.data:
return self.coordinator.data
return None