From 30bc6f94fe79ee2cfaddfdad8eead589c4a8c9a2 Mon Sep 17 00:00:00 2001 From: Edward Brown Date: Tue, 5 Sep 2023 14:46:43 +0100 Subject: [PATCH] Implement Update control --- haco/__init__.py | 2 ++ haco/update.py | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 haco/update.py diff --git a/haco/__init__.py b/haco/__init__.py index 825ad5f..2ea5f09 100644 --- a/haco/__init__.py +++ b/haco/__init__.py @@ -5,6 +5,7 @@ from .pulldown import Select from .sensor import Sensor from .switch import Switch from .tasmota import Tasmota +from .update import Update __all__ = [ "Button", @@ -13,5 +14,6 @@ __all__ = [ "Tasmota", "Number", "Switch", + "Update", "tuya" ] diff --git a/haco/update.py b/haco/update.py new file mode 100644 index 0000000..79800b5 --- /dev/null +++ b/haco/update.py @@ -0,0 +1,41 @@ +from haco.control import Control +from haco.schema import Schema, Capability, AnnounceTopic, Tasmota, HomeAssistant + + +class Update(Control): + NAME = 'update' + + @classmethod + def get_schema(cls): + schema = Schema( + capabilities=[ + Capability( + name='state', + ha=HomeAssistant(announce_data=AnnounceTopic(key='{io_ha}_topic')), + tamota=Tasmota(announce_data=AnnounceTopic(key='{io_ha}_topic')) + ), + Capability( + name='latest_version', + ha=None, + tamota=Tasmota(announce_data=AnnounceTopic(key='{capability}_topic')) + ) + ] + ) + return schema + + # def init(name, entity_id, icon, temperature_unit, temperature_range, humidity_range, modes, preset_modes, fan_modes, swing_modes, precision, callbacks) + + def __init__(self, name=None, icon=None, release_url=None, entity_picture=None): + self.release_url = release_url + self.entity_picture = entity_picture + + super().__init__(name, icon=icon) + + def get_config_ha_ex(self): + data = { + 'entity_picture': self.entity_picture, + 'payload_install': 'INSTALL', + 'release_url': self.release_url + } + + return data