mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-12 09:34:28 +05:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a0dcfa4b9c | ||
|
|
80e43888b9 | ||
|
|
ba41cbb100 | ||
|
|
0b5b9744ba | ||
|
|
9746311f38 | ||
|
|
38a525f2f5 |
@@ -7,11 +7,10 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_SCAN_INTERVAL, CONF_ID, CONF_NAME, CONF_DOMAIN,
|
CONF_SCAN_INTERVAL, CONF_ID, CONF_NAME, CONF_DOMAIN,
|
||||||
CONF_UNIT_OF_MEASUREMENT, CONF_HOST
|
CONF_UNIT_OF_MEASUREMENT, CONF_HOST, CONF_VALUE_TEMPLATE
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, ServiceCall
|
from homeassistant.core import HomeAssistant, ServiceCall
|
||||||
from homeassistant.helpers.service import bind_hass
|
from homeassistant.helpers.service import bind_hass
|
||||||
from homeassistant.helpers.template import Template
|
|
||||||
from homeassistant.helpers import config_validation as cv
|
from homeassistant.helpers import config_validation as cv
|
||||||
from homeassistant.components import mqtt
|
from homeassistant.components import mqtt
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
@@ -41,7 +40,8 @@ CUSTOMIZE_PORT = {
|
|||||||
'сообщение из меги '): cv.template,
|
'сообщение из меги '): cv.template,
|
||||||
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,
|
||||||
|
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||||
}
|
}
|
||||||
CUSTOMIZE_DS2413 = {
|
CUSTOMIZE_DS2413 = {
|
||||||
vol.Optional(str.lower, description='адрес и индекс устройства'): CUSTOMIZE_PORT
|
vol.Optional(str.lower, description='адрес и индекс устройства'): CUSTOMIZE_PORT
|
||||||
@@ -56,8 +56,8 @@ CONFIG_SCHEMA = vol.Schema(
|
|||||||
vol.Optional(
|
vol.Optional(
|
||||||
CONF_DEF_RESPONSE,
|
CONF_DEF_RESPONSE,
|
||||||
description='Ответ по умолчанию',
|
description='Ответ по умолчанию',
|
||||||
default=''
|
default=None
|
||||||
): cv.template,
|
): vol.Any(cv.template, None),
|
||||||
vol.Optional(int, description='номер порта'): vol.Any(
|
vol.Optional(int, description='номер порта'): vol.Any(
|
||||||
CUSTOMIZE_PORT,
|
CUSTOMIZE_PORT,
|
||||||
CUSTOMIZE_DS2413,
|
CUSTOMIZE_DS2413,
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ async def validate_input(hass: core.HomeAssistant, data):
|
|||||||
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||||
"""Handle a config flow for mega."""
|
"""Handle a config flow for mega."""
|
||||||
|
|
||||||
VERSION = 8
|
VERSION = 10
|
||||||
CONNECTION_CLASS = config_entries.CONN_CLASS_ASSUMED
|
CONNECTION_CLASS = config_entries.CONN_CLASS_ASSUMED
|
||||||
|
|
||||||
async def async_step_user(self, user_input=None):
|
async def async_step_user(self, user_input=None):
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ class MegaD:
|
|||||||
async def save(self):
|
async def save(self):
|
||||||
await self.send_command(cmd='s')
|
await self.send_command(cmd='s')
|
||||||
|
|
||||||
def parse_response(self, ret):
|
def parse_response(self, ret, cmd='get'):
|
||||||
if ret is None:
|
if ret is None:
|
||||||
raise NoPort()
|
raise NoPort()
|
||||||
if 'busy' in ret:
|
if 'busy' in ret:
|
||||||
@@ -266,7 +266,7 @@ class MegaD:
|
|||||||
if ':' in ret:
|
if ':' in ret:
|
||||||
if ';' in ret:
|
if ';' in ret:
|
||||||
ret = ret.split(';')
|
ret = ret.split(';')
|
||||||
elif '/' in ret:
|
elif '/' in ret and not cmd == 'list':
|
||||||
ret = ret.split('/')
|
ret = ret.split('/')
|
||||||
else:
|
else:
|
||||||
ret = [ret]
|
ret = [ret]
|
||||||
@@ -291,7 +291,7 @@ class MegaD:
|
|||||||
if http_cmd == 'list' and conv:
|
if http_cmd == 'list' and conv:
|
||||||
await self.request(pt=port, cmd='conv')
|
await self.request(pt=port, cmd='conv')
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
ret = self.parse_response(await self.request(pt=port, cmd=http_cmd))
|
ret = self.parse_response(await self.request(pt=port, cmd=http_cmd), cmd=http_cmd)
|
||||||
ntry = 0
|
ntry = 0
|
||||||
while http_cmd == 'list' and ret is None and ntry < 3:
|
while http_cmd == 'list' and ret is None and ntry < 3:
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
@@ -480,6 +480,11 @@ class MegaD:
|
|||||||
elif pty in ('3', '2', '4'):
|
elif pty in ('3', '2', '4'):
|
||||||
try:
|
try:
|
||||||
http_cmd = 'get'
|
http_cmd = 'get'
|
||||||
|
if m == '5' and pty == '3':
|
||||||
|
# 1-wire bus
|
||||||
|
values = await self.get_port(port, force_http=True, http_cmd='list')
|
||||||
|
http_cmd = 'list'
|
||||||
|
else:
|
||||||
values = await self.get_port(port, force_http=True)
|
values = await self.get_port(port, force_http=True)
|
||||||
if values is None or (isinstance(values, dict) and str(values.get('value')) in ('', 'None')):
|
if values is None or (isinstance(values, dict) and str(values.get('value')) in ('', 'None')):
|
||||||
values = await self.get_port(port, force_http=True, http_cmd='list')
|
values = await self.get_port(port, force_http=True, http_cmd='list')
|
||||||
|
|||||||
@@ -15,5 +15,5 @@
|
|||||||
"@andvikt"
|
"@andvikt"
|
||||||
],
|
],
|
||||||
"issue_tracker": "https://github.com/andvikt/mega_hacs/issues",
|
"issue_tracker": "https://github.com/andvikt/mega_hacs/issues",
|
||||||
"version": "v0.4.1b7"
|
"version": "v0.4.1"
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,7 @@ from homeassistant.const import (
|
|||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
CONF_UNIQUE_ID,
|
CONF_UNIQUE_ID,
|
||||||
CONF_ID,
|
CONF_ID,
|
||||||
CONF_TYPE, CONF_UNIT_OF_MEASUREMENT,
|
CONF_TYPE, CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.template import Template
|
from homeassistant.helpers.template import Template
|
||||||
@@ -163,7 +163,7 @@ class Mega1WSensor(MegaPushEntity):
|
|||||||
ret = str(ret)
|
ret = str(ret)
|
||||||
except:
|
except:
|
||||||
ret = None
|
ret = None
|
||||||
tmpl: Template = self.customize.get(CONF_CONV_TEMPLATE)
|
tmpl: Template = self.customize.get(CONF_CONV_TEMPLATE, self.customize.get(CONF_VALUE_TEMPLATE))
|
||||||
if tmpl is not None and self.hass is not None:
|
if tmpl is not None and self.hass is not None:
|
||||||
tmpl.hass = self.hass
|
tmpl.hass = self.hass
|
||||||
ret = tmpl.async_render({'value': ret})
|
ret = tmpl.async_render({'value': ret})
|
||||||
|
|||||||
Reference in New Issue
Block a user