mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-13 18:14:28 +05:00
add adc port and template rendering values
This commit is contained in:
@@ -16,7 +16,8 @@ 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
|
||||||
from .const import DOMAIN, CONF_INVERT, CONF_RELOAD, PLATFORMS, CONF_PORTS, CONF_CUSTOM, CONF_SKIP, CONF_PORT_TO_SCAN, \
|
from .const import DOMAIN, CONF_INVERT, CONF_RELOAD, PLATFORMS, CONF_PORTS, CONF_CUSTOM, CONF_SKIP, CONF_PORT_TO_SCAN, \
|
||||||
CONF_MQTT_INPUTS, CONF_HTTP, CONF_RESPONSE_TEMPLATE, CONF_ACTION, CONF_GET_VALUE, CONF_ALLOW_HOSTS
|
CONF_MQTT_INPUTS, CONF_HTTP, CONF_RESPONSE_TEMPLATE, CONF_ACTION, CONF_GET_VALUE, CONF_ALLOW_HOSTS, \
|
||||||
|
CONF_CONV_TEMPLATE
|
||||||
from .hub import MegaD
|
from .hub import MegaD
|
||||||
from .config_flow import ConfigFlow
|
from .config_flow import ConfigFlow
|
||||||
from .http import MegaView
|
from .http import MegaView
|
||||||
@@ -45,6 +46,7 @@ CONFIG_SCHEMA = vol.Schema(
|
|||||||
'сообщение из меги '): 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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ CONF_ACTION = 'action'
|
|||||||
CONF_UPDATE_ALL = 'update_all'
|
CONF_UPDATE_ALL = 'update_all'
|
||||||
CONF_GET_VALUE = 'get_value'
|
CONF_GET_VALUE = 'get_value'
|
||||||
CONF_ALLOW_HOSTS = 'allow_hosts'
|
CONF_ALLOW_HOSTS = 'allow_hosts'
|
||||||
|
CONF_CONV_TEMPLATE = 'conv_template'
|
||||||
PLATFORMS = [
|
PLATFORMS = [
|
||||||
"light",
|
"light",
|
||||||
"switch",
|
"switch",
|
||||||
|
|||||||
@@ -376,6 +376,9 @@ class MegaD:
|
|||||||
m = m.find(selected=True)['value']
|
m = m.find(selected=True)['value']
|
||||||
self._scanned[port] = (pty, m)
|
self._scanned[port] = (pty, m)
|
||||||
return pty, m
|
return pty, m
|
||||||
|
elif pty == '2':
|
||||||
|
self._scanned[port] = (pty, '0')
|
||||||
|
return pty, '0'
|
||||||
|
|
||||||
async def scan_ports(self, nports=37):
|
async def scan_ports(self, nports=37):
|
||||||
for x in range(0, nports+1):
|
for x in range(0, nports+1):
|
||||||
@@ -391,7 +394,7 @@ class MegaD:
|
|||||||
ret['binary_sensor'][port].append({})
|
ret['binary_sensor'][port].append({})
|
||||||
elif pty == "1" and (m in ['0', '1', '3'] or m is None):
|
elif pty == "1" and (m in ['0', '1', '3'] or m is None):
|
||||||
ret['light'][port].append({'dimmer': m == '1'})
|
ret['light'][port].append({'dimmer': m == '1'})
|
||||||
elif pty == '3':
|
elif pty in ('3', '2'):
|
||||||
try:
|
try:
|
||||||
http_cmd = 'get'
|
http_cmd = 'get'
|
||||||
values = await self.get_port(port, force_http=True)
|
values = await self.get_port(port, force_http=True)
|
||||||
|
|||||||
@@ -16,8 +16,9 @@ from homeassistant.const import (
|
|||||||
CONF_TYPE, CONF_UNIT_OF_MEASUREMENT,
|
CONF_TYPE, CONF_UNIT_OF_MEASUREMENT,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers.template import Template
|
||||||
from .entities import MegaPushEntity
|
from .entities import MegaPushEntity
|
||||||
from .const import CONF_KEY, TEMP, HUM, W1, W1BUS
|
from .const import CONF_KEY, TEMP, HUM, W1, W1BUS, CONF_CONV_TEMPLATE
|
||||||
from .hub import MegaD
|
from .hub import MegaD
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@@ -164,6 +165,10 @@ class Mega1WSensor(MegaPushEntity):
|
|||||||
ret = str(ret)
|
ret = str(ret)
|
||||||
except:
|
except:
|
||||||
ret = None
|
ret = None
|
||||||
|
tmpl: Template = self.customize.get(CONF_CONV_TEMPLATE)
|
||||||
|
if tmpl is not None and self.hass is not None:
|
||||||
|
tmpl.hass = self.hass
|
||||||
|
ret = tmpl.async_render({'value': ret})
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ mega:
|
|||||||
unit_of_measurement:
|
unit_of_measurement:
|
||||||
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
|
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
|
||||||
temp: "°C"
|
temp: "°C"
|
||||||
|
# можно так же указать шаблон для конвертации значения, может быть полезно для ацп-входа
|
||||||
|
# текущее значение порта передается в шаблон в переменной "value"
|
||||||
|
conv_template: "{{(value|float)/100}}"
|
||||||
14:
|
14:
|
||||||
name: какой-то датчик
|
name: какой-то датчик
|
||||||
unit_of_measurement: "°C" # если датчик один, то просто строчкой
|
unit_of_measurement: "°C" # если датчик один, то просто строчкой
|
||||||
|
|||||||
Reference in New Issue
Block a user