1 """Counter for the days until an HTTPS (TLS) certificate will expire."""
3 from __future__
import annotations
5 from datetime
import datetime, timedelta
7 import voluptuous
as vol
10 PLATFORM_SCHEMA
as SENSOR_PLATFORM_SCHEMA,
23 from .
import CertExpiryConfigEntry
24 from .const
import DEFAULT_PORT, DOMAIN
25 from .coordinator
import CertExpiryDataUpdateCoordinator
26 from .entity
import CertExpiryEntity
30 PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
32 vol.Required(CONF_HOST): cv.string,
33 vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
41 async_add_entities: AddEntitiesCallback,
42 discovery_info: DiscoveryInfoType |
None =
None,
44 """Set up certificate expiry sensor."""
47 def schedule_import(_: Event) ->
None:
48 """Schedule delayed import after HA is fully started."""
52 def do_import(_: datetime) ->
None:
53 """Process YAML import."""
54 hass.async_create_task(
55 hass.config_entries.flow.async_init(
56 DOMAIN, context={
"source": SOURCE_IMPORT}, data=
dict(config)
60 hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, schedule_import)
65 entry: CertExpiryConfigEntry,
66 async_add_entities: AddEntitiesCallback,
68 """Add cert-expiry entry."""
69 coordinator = entry.runtime_data
77 """Implementation of the Cert Expiry timestamp sensor."""
79 _attr_device_class = SensorDeviceClass.TIMESTAMP
80 _attr_translation_key =
"certificate_expiry"
84 coordinator: CertExpiryDataUpdateCoordinator,
86 """Initialize a Cert Expiry timestamp sensor."""
88 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.host}:{coordinator.port}-timestamp"
90 identifiers={(DOMAIN, f
"{coordinator.host}:{coordinator.port}")},
91 name=coordinator.name,
92 entry_type=DeviceEntryType.SERVICE,
97 """Return the state of the sensor."""
98 if self.coordinator.data:
99 return self.coordinator.data
None __init__(self, CertExpiryDataUpdateCoordinator coordinator)
datetime|None native_value(self)
None async_setup_entry(HomeAssistant hass, CertExpiryConfigEntry entry, AddEntitiesCallback async_add_entities)
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)
CALLBACK_TYPE async_call_later(HomeAssistant hass, float|timedelta delay, HassJob[[datetime], Coroutine[Any, Any, None]|None]|Callable[[datetime], Coroutine[Any, Any, None]|None] action)