我想在这里分享我的倒计时传感器,希望有人会发现它有用或有知识,使它正确地实现为一个内置传感器。从屏幕截图和配置可以看出,我是为了特定的目的而构建的
它的目的是为多日远离事件,而不是作为一个计时器。(每分钟只更新一次)
要实现,创建一个custom_components
Home Assistant目录的根目录。19463331伟德国际在里面,创建一个传感器
目录中。在里面,创建文件sensor.py
包括以下内容:
""" Date Countdown """ import datetime from datetime import timedelta import logging import voluptuous as vol import homeassistant.helpers. "从homeassistant.components.sensor导入PLATFORM_SCHEMAconst import CONF_NAME from homeassistant.helpers. Entity import从homeassistant导入实体。util import Throttle _LOGGER = logging.getLogger(__name__) ATTR_DAYS = 'days' ATTR_HOURS = 'hours' ATTR_MINUTES = 'minutes' DEFAULT_NAME = "Countdown" CONF_DATE = 'date' MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=60) PLATFORM_SCHEMA = PLATFORM_SCHEMA。扩展({vol.Required (CONF_DATE):简历。string, vol.可选(CONF_NAME, default=DEFAULT_NAME): cv. string, vol.可选(CONF_NAME, default=DEFAULT_NAME): cv。def setup_platform(hass, config, add_devices, discovery_info=None): ""设置日期倒计时传感器。"end_date = config.get(CONF_DATE) sensor_name = config.get(CONF_NAME) add_devices([Countdown(sensor_name, end_date)]) class倒计时(Entity): ""执行日期倒计时传感器。"" def __init__(self, sensor_name, end_date): ""初始化传感器。"”“自我。End_date = End_date self。_name = sensor_name self。_state = None self。_data = {} self.update() @property def name(self): """返回传感器名称"”“回归自我。@property def state(self): """返回传感器的状态"”“回归自我。@ state @property def device_state_attributes(self): return {ATTR_DAYS: self._data.get("days"), ATTR_HOURS: self._data.get("hours"), ATTR_MINUTES: self._data.get("minutes")}"" return 'mdi:calendar' @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): ""计算时间直到结束""" end_date = datetime.datetime.strptime(self。'%d-%m-%Y %H:% m ') days = (end_date - datetime.datetime.now()) days, seconds = days。天,天。Seconds hours = Seconds // 3600分钟= (Seconds % 3600) // 60秒= Seconds % 60自我。_data["days"] = days self。_data["hours"] = hours self._data["minutes"] = minutes self._state = str(days) + " days " + str(hours) \ + " hours " + str(minutes) + " minutes"
然后按照以下格式配置/sensors.yaml:
倒计时日期:“2005-2018 18:00”