power: add support for secrets

The "user", "password", and "token" options are templates
that can resolve items stored in the secrets file.

Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2021-12-23 19:53:34 -05:00
parent a269de5dc0
commit c5fd863bb7
1 changed files with 6 additions and 7 deletions

View File

@ -386,8 +386,9 @@ class HTTPDevice(PowerDevice):
self.request_mutex = asyncio.Lock()
self.addr: str = config.get("address")
self.port = config.getint("port", default_port)
self.user = config.get("user", default_user)
self.password = config.get("password", default_password)
self.user = config.load_template("user", default_user).render()
self.password = config.load_template(
"password", default_password).render()
self.protocol = config.get("protocol", default_protocol)
async def initialize(self) -> None:
@ -781,7 +782,7 @@ class HomeAssistant(HTTPDevice):
def __init__(self, config: ConfigHelper) -> None:
super().__init__(config, default_port=8123)
self.device: str = config.get("device")
self.token: str = config.get("token")
self.token: str = config.gettemplate("token").render()
self.domain: str = config.get("domain", "switch")
self.status_delay: float = config.getfloat("status_delay", 1.)
@ -878,10 +879,8 @@ class MQTTDevice(PowerDevice):
self.state_topic: str = config.get('state_topic')
self.state_timeout = config.getfloat('state_timeout', 2.)
template: TemplateFactory = self.server.lookup_component('template')
default_state_response = template.create_template("{payload}")
self.state_response = config.gettemplate('state_response_template',
default_state_response)
self.state_response = config.load_template('state_response_template',
"{payload}")
self.qos: Optional[int] = config.getint('qos', None, minval=0, maxval=2)
self.mqtt.subscribe_topic(
self.state_topic, self._on_state_update, self.qos)