This commit is contained in:
Andrey
2021-02-17 19:10:58 +03:00
parent 9fab4fce62
commit 4fe2469a01
2 changed files with 15 additions and 12 deletions

View File

@@ -24,7 +24,7 @@ from .http import MegaView
_LOGGER = logging.getLogger(__name__)
CUSTOMIZE_PORT = vol.Schema({
CUSTOMIZE_PORT = {
vol.Optional(CONF_SKIP, description='исключить порт из сканирования', default=False): bool,
vol.Optional(CONF_INVERT, default=False): bool,
vol.Optional(CONF_NAME): vol.Any(str, {
@@ -42,16 +42,15 @@ CUSTOMIZE_PORT = vol.Schema({
vol.Optional(CONF_ACTION): cv.script_action, # пока не реализовано
vol.Optional(CONF_GET_VALUE, default=True): bool,
vol.Optional(CONF_CONV_TEMPLATE): cv.template
})
CUSTOMIZE_DS2413 = vol.Schema({
}
CUSTOMIZE_DS2413 = {
vol.Optional(str.lower, description='адрес и индекс устройства'): CUSTOMIZE_PORT
})
}
CONFIG_SCHEMA = vol.Schema(
{
DOMAIN: {
vol.Optional(CONF_ALLOW_HOSTS): [str],
# vol.Optional(CONF_FORCE_D, description='Принудительно слать d после срабатывания входа', default=False): bool,
vol.Required(str, description='id меги из веб-интерфейса'): {
vol.Optional(CONF_FORCE_D, description='Принудительно слать d после срабатывания входа', default=False): bool,
vol.Optional(int, description='номер порта'): vol.Any(

View File

@@ -125,7 +125,8 @@ class BaseMegaEntity(CoordinatorEntity, RestoreEntity):
_task_set_ev_on = asyncio.create_task(_set_events_on())
async def get_state(self):
if self.mega.mqtt is None:
self.lg.debug(f'state is %s', self.state)
if not self.mega.mqtt_inputs:
self.async_write_ha_state()
@@ -249,6 +250,9 @@ class MegaOutPort(MegaPushEntity):
elif val is not None:
val = val.get("value")
if self.index and self.addr:
if not isinstance(val, dict):
self.mega.lg.warning(f'{self} has wrong state: {val}')
return
_val = val.get(self.addr)
if not isinstance(val, str):
self.mega.lg.warning(f'{self} has wrong state: {val}')
@@ -284,10 +288,10 @@ class MegaOutPort(MegaPushEntity):
cmd = brightness
else:
cmd = 1 if not self.invert else 0
cmd = {"cmd": f"{self.cmd_port}:{cmd}"}
_cmd = {"cmd": f"{self.cmd_port}:{cmd}"}
if self.addr:
cmd['addr'] = self.addr
await self.mega.request(**cmd)
_cmd['addr'] = self.addr
await self.mega.request(**_cmd)
if self.index is not None:
# обновление текущего стейта для ds2413
await self.mega.get_port(
@@ -303,10 +307,10 @@ class MegaOutPort(MegaPushEntity):
async def async_turn_off(self, **kwargs) -> None:
cmd = "0" if not self.invert else "1"
cmd = {"cmd": f"{self.cmd_port}:{cmd}"}
_cmd = {"cmd": f"{self.cmd_port}:{cmd}"}
if self.addr:
cmd['addr'] = self.addr
await self.mega.request(**cmd)
_cmd['addr'] = self.addr
await self.mega.request(**_cmd)
if self.index is not None:
# обновление текущего стейта для ds2413
await self.mega.get_port(