mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-11 00:54:28 +05:00
fix force_d
This commit is contained in:
@@ -28,8 +28,9 @@ 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.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(int, description='номер порта'): {
|
vol.Optional(int, description='номер порта'): {
|
||||||
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,
|
||||||
|
|||||||
@@ -15,3 +15,7 @@ class DuplicateId(exceptions.HomeAssistantError):
|
|||||||
|
|
||||||
class InvalidAuth(exceptions.HomeAssistantError):
|
class InvalidAuth(exceptions.HomeAssistantError):
|
||||||
"""Error to indicate there is invalid auth."""
|
"""Error to indicate there is invalid auth."""
|
||||||
|
|
||||||
|
|
||||||
|
class NoPort(Exception):
|
||||||
|
pass
|
||||||
@@ -8,16 +8,15 @@ from aiohttp.web_request import Request
|
|||||||
from aiohttp.web_response import Response
|
from aiohttp.web_response import Response
|
||||||
|
|
||||||
from homeassistant.helpers.template import Template
|
from homeassistant.helpers.template import Template
|
||||||
from .const import EVENT_BINARY_SENSOR, DOMAIN, CONF_RESPONSE_TEMPLATE
|
|
||||||
from homeassistant.components.http import HomeAssistantView
|
from homeassistant.components.http import HomeAssistantView
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from .const import EVENT_BINARY_SENSOR, DOMAIN, CONF_RESPONSE_TEMPLATE
|
||||||
from .tools import make_ints
|
from .tools import make_ints
|
||||||
from . import hub as h
|
from . import hub as h
|
||||||
_LOGGER = logging.getLogger(__name__).getChild('http')
|
_LOGGER = logging.getLogger(__name__).getChild('http')
|
||||||
|
|
||||||
|
|
||||||
class MegaView(HomeAssistantView):
|
class MegaView(HomeAssistantView):
|
||||||
"""Handle Yandex Smart Home unauthorized requests."""
|
|
||||||
|
|
||||||
url = '/mega'
|
url = '/mega'
|
||||||
name = 'mega'
|
name = 'mega'
|
||||||
@@ -31,7 +30,7 @@ class MegaView(HomeAssistantView):
|
|||||||
mid: {
|
mid: {
|
||||||
pt: cfg[mid][pt][CONF_RESPONSE_TEMPLATE]
|
pt: cfg[mid][pt][CONF_RESPONSE_TEMPLATE]
|
||||||
for pt in cfg[mid]
|
for pt in cfg[mid]
|
||||||
if CONF_RESPONSE_TEMPLATE in cfg[mid][pt]
|
if isinstance(pt, int) and CONF_RESPONSE_TEMPLATE in cfg[mid][pt]
|
||||||
} for mid in cfg if isinstance(cfg[mid], dict)
|
} for mid in cfg if isinstance(cfg[mid], dict)
|
||||||
}
|
}
|
||||||
_LOGGER.debug('templates: %s', self.templates)
|
_LOGGER.debug('templates: %s', self.templates)
|
||||||
|
|||||||
@@ -10,15 +10,19 @@ import json
|
|||||||
|
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from homeassistant.components import mqtt
|
from homeassistant.components import mqtt
|
||||||
from homeassistant.const import (DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_PRESSURE,
|
from homeassistant.const import (
|
||||||
DEVICE_CLASS_ILLUMINANCE, TEMP_CELSIUS, PERCENTAGE, LIGHT_LUX)
|
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_HUMIDITY, DEVICE_CLASS_PRESSURE,
|
||||||
|
DEVICE_CLASS_ILLUMINANCE, TEMP_CELSIUS, PERCENTAGE, LIGHT_LUX
|
||||||
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity import Entity
|
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
||||||
from .const import TEMP, HUM, PRESS, LUX, PATT_SPLIT, DOMAIN, CONF_HTTP, EVENT_BINARY_SENSOR, CONF_CUSTOM, CONF_SKIP, \
|
from .const import (
|
||||||
CONF_FORCE_D
|
TEMP, HUM, PRESS,
|
||||||
|
LUX, PATT_SPLIT, DOMAIN,
|
||||||
|
CONF_HTTP, EVENT_BINARY_SENSOR, CONF_CUSTOM, CONF_FORCE_D
|
||||||
|
)
|
||||||
from .entities import set_events_off, BaseMegaEntity
|
from .entities import set_events_off, BaseMegaEntity
|
||||||
from .exceptions import CannotConnect
|
from .exceptions import CannotConnect, NoPort
|
||||||
from .tools import make_ints
|
from .tools import make_ints
|
||||||
|
|
||||||
TEMP_PATT = re.compile(r'temp:([01234567890\.]+)')
|
TEMP_PATT = re.compile(r'temp:([01234567890\.]+)')
|
||||||
@@ -44,13 +48,11 @@ CLASSES = {
|
|||||||
LUX: DEVICE_CLASS_ILLUMINANCE
|
LUX: DEVICE_CLASS_ILLUMINANCE
|
||||||
}
|
}
|
||||||
I2C_DEVICE_TYPES = {
|
I2C_DEVICE_TYPES = {
|
||||||
"2": LUX, # BH1750
|
"2": LUX, # BH1750
|
||||||
"3": LUX, # TSL2591
|
"3": LUX, # TSL2591
|
||||||
"7": LUX, # MAX44009
|
"7": LUX, # MAX44009
|
||||||
"70": LUX, # OPT3001
|
"70": LUX, # OPT3001
|
||||||
}
|
}
|
||||||
class NoPort(Exception):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class MegaD:
|
class MegaD:
|
||||||
@@ -191,8 +193,7 @@ class MegaD:
|
|||||||
|
|
||||||
async def poll(self):
|
async def poll(self):
|
||||||
"""
|
"""
|
||||||
Send get port 0 every poll_interval. When answer is received, mega.<id> becomes online else mega.<id> becomes
|
Polling ports
|
||||||
offline
|
|
||||||
"""
|
"""
|
||||||
self.lg.debug('poll')
|
self.lg.debug('poll')
|
||||||
if self.mqtt is None:
|
if self.mqtt is None:
|
||||||
|
|||||||
@@ -110,7 +110,6 @@ mega:
|
|||||||
# эти параметры можно использовать в условиях или непосредственно в шаблоне в виде {{pt}}
|
# эти параметры можно использовать в условиях или непосредственно в шаблоне в виде {{pt}}
|
||||||
response_template: >-
|
response_template: >-
|
||||||
{% if m==2 %}1:0{% else %}d{% endif %}
|
{% if m==2 %}1:0{% else %}d{% endif %}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Начиная с версии v0.3.17 ответ можно слать так же и в режиме MQTT. Аналогично, темплейт должен возвращать готовую команду
|
Начиная с версии v0.3.17 ответ можно слать так же и в режиме MQTT. Аналогично, темплейт должен возвращать готовую команду
|
||||||
|
|||||||
Reference in New Issue
Block a user