mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-12 09:34:28 +05:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4fe2469a01 |
@@ -24,7 +24,7 @@ from .http import MegaView
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
CUSTOMIZE_PORT = vol.Schema({
|
CUSTOMIZE_PORT = {
|
||||||
vol.Optional(CONF_SKIP, description='исключить порт из сканирования', default=False): bool,
|
vol.Optional(CONF_SKIP, description='исключить порт из сканирования', default=False): bool,
|
||||||
vol.Optional(CONF_INVERT, default=False): bool,
|
vol.Optional(CONF_INVERT, default=False): bool,
|
||||||
vol.Optional(CONF_NAME): vol.Any(str, {
|
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_ACTION): cv.script_action, # пока не реализовано
|
||||||
vol.Optional(CONF_GET_VALUE, default=True): bool,
|
vol.Optional(CONF_GET_VALUE, default=True): bool,
|
||||||
vol.Optional(CONF_CONV_TEMPLATE): cv.template
|
vol.Optional(CONF_CONV_TEMPLATE): cv.template
|
||||||
})
|
}
|
||||||
CUSTOMIZE_DS2413 = vol.Schema({
|
CUSTOMIZE_DS2413 = {
|
||||||
vol.Optional(str.lower, description='адрес и индекс устройства'): CUSTOMIZE_PORT
|
vol.Optional(str.lower, description='адрес и индекс устройства'): CUSTOMIZE_PORT
|
||||||
})
|
}
|
||||||
|
|
||||||
CONFIG_SCHEMA = vol.Schema(
|
CONFIG_SCHEMA = vol.Schema(
|
||||||
{
|
{
|
||||||
DOMAIN: {
|
DOMAIN: {
|
||||||
vol.Optional(CONF_ALLOW_HOSTS): [str],
|
vol.Optional(CONF_ALLOW_HOSTS): [str],
|
||||||
# vol.Optional(CONF_FORCE_D, description='Принудительно слать d после срабатывания входа', default=False): bool,
|
|
||||||
vol.Required(str, description='id меги из веб-интерфейса'): {
|
vol.Required(str, description='id меги из веб-интерфейса'): {
|
||||||
vol.Optional(CONF_FORCE_D, description='Принудительно слать d после срабатывания входа', default=False): bool,
|
vol.Optional(CONF_FORCE_D, description='Принудительно слать d после срабатывания входа', default=False): bool,
|
||||||
vol.Optional(int, description='номер порта'): vol.Any(
|
vol.Optional(int, description='номер порта'): vol.Any(
|
||||||
|
|||||||
@@ -125,7 +125,8 @@ class BaseMegaEntity(CoordinatorEntity, RestoreEntity):
|
|||||||
_task_set_ev_on = asyncio.create_task(_set_events_on())
|
_task_set_ev_on = asyncio.create_task(_set_events_on())
|
||||||
|
|
||||||
async def get_state(self):
|
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()
|
self.async_write_ha_state()
|
||||||
|
|
||||||
|
|
||||||
@@ -249,6 +250,9 @@ class MegaOutPort(MegaPushEntity):
|
|||||||
elif val is not None:
|
elif val is not None:
|
||||||
val = val.get("value")
|
val = val.get("value")
|
||||||
if self.index and self.addr:
|
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)
|
_val = val.get(self.addr)
|
||||||
if not isinstance(val, str):
|
if not isinstance(val, str):
|
||||||
self.mega.lg.warning(f'{self} has wrong state: {val}')
|
self.mega.lg.warning(f'{self} has wrong state: {val}')
|
||||||
@@ -284,10 +288,10 @@ class MegaOutPort(MegaPushEntity):
|
|||||||
cmd = brightness
|
cmd = brightness
|
||||||
else:
|
else:
|
||||||
cmd = 1 if not self.invert else 0
|
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:
|
if self.addr:
|
||||||
cmd['addr'] = self.addr
|
_cmd['addr'] = self.addr
|
||||||
await self.mega.request(**cmd)
|
await self.mega.request(**_cmd)
|
||||||
if self.index is not None:
|
if self.index is not None:
|
||||||
# обновление текущего стейта для ds2413
|
# обновление текущего стейта для ds2413
|
||||||
await self.mega.get_port(
|
await self.mega.get_port(
|
||||||
@@ -303,10 +307,10 @@ class MegaOutPort(MegaPushEntity):
|
|||||||
async def async_turn_off(self, **kwargs) -> None:
|
async def async_turn_off(self, **kwargs) -> None:
|
||||||
|
|
||||||
cmd = "0" if not self.invert else "1"
|
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:
|
if self.addr:
|
||||||
cmd['addr'] = self.addr
|
_cmd['addr'] = self.addr
|
||||||
await self.mega.request(**cmd)
|
await self.mega.request(**_cmd)
|
||||||
if self.index is not None:
|
if self.index is not None:
|
||||||
# обновление текущего стейта для ds2413
|
# обновление текущего стейта для ds2413
|
||||||
await self.mega.get_port(
|
await self.mega.get_port(
|
||||||
|
|||||||
Reference in New Issue
Block a user