mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-12 09:34:28 +05:00
Compare commits
4 Commits
feature/ad
...
v1.0.10b4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8ceec0386 | ||
|
|
496713cfec | ||
|
|
1512238763 | ||
|
|
ce1987d0c0 |
@@ -1,5 +1,5 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
current_version = 1.0.10b2
|
current_version = 1.0.10b4
|
||||||
parse = (?P<major>\d+)(\.(?P<minor>\d+))(\.(?P<patch>\d+))(?P<release>[bf]*)(?P<build>\d*)
|
parse = (?P<major>\d+)(\.(?P<minor>\d+))(\.(?P<patch>\d+))(?P<release>[bf]*)(?P<build>\d*)
|
||||||
commit = True
|
commit = True
|
||||||
tag = True
|
tag = True
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ 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, CONF_ALL, CONF_FORCE_D, CONF_DEF_RESPONSE, CONF_FORCE_I2C_SCAN, CONF_HEX_TO_FLOAT, \
|
CONF_CONV_TEMPLATE, CONF_ALL, CONF_FORCE_D, CONF_DEF_RESPONSE, CONF_FORCE_I2C_SCAN, CONF_HEX_TO_FLOAT, \
|
||||||
RGB_COMBINATIONS, CONF_WS28XX, CONF_ORDER, CONF_SMOOTH, CONF_LED, CONF_WHITE_SEP, CONF_CHIP, CONF_RANGE
|
RGB_COMBINATIONS, CONF_WS28XX, CONF_ORDER, CONF_SMOOTH, CONF_LED, CONF_WHITE_SEP, CONF_CHIP, CONF_RANGE, \
|
||||||
|
CONF_FILTER_VALUES, CONF_FILTER_SCALE
|
||||||
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
|
||||||
@@ -74,6 +75,8 @@ CUSTOMIZE_PORT = {
|
|||||||
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
|
||||||
vol.Optional(CONF_FORCE_I2C_SCAN): bool,
|
vol.Optional(CONF_FORCE_I2C_SCAN): bool,
|
||||||
vol.Optional(CONF_HEX_TO_FLOAT): bool,
|
vol.Optional(CONF_HEX_TO_FLOAT): bool,
|
||||||
|
vol.Optional(CONF_FILTER_VALUES): [cv.positive_float],
|
||||||
|
vol.Optional(CONF_FILTER_SCALE): cv.positive_float,
|
||||||
vol.Optional(CONF_SMOOTH): cv.time_period_seconds,
|
vol.Optional(CONF_SMOOTH): cv.time_period_seconds,
|
||||||
# vol.Optional(CONF_RANGE): vol.ExactSequence([int, int]), TODO: сделать отбрасывание "плохих" значений
|
# vol.Optional(CONF_RANGE): vol.ExactSequence([int, int]), TODO: сделать отбрасывание "плохих" значений
|
||||||
vol.Optional(str): {
|
vol.Optional(str): {
|
||||||
@@ -111,6 +114,8 @@ CONFIG_SCHEMA = vol.Schema(
|
|||||||
CUSTOMIZE_PORT,
|
CUSTOMIZE_PORT,
|
||||||
CUSTOMIZE_DS2413,
|
CUSTOMIZE_DS2413,
|
||||||
),
|
),
|
||||||
|
vol.Optional(CONF_FILTER_VALUES): [cv.positive_float],
|
||||||
|
vol.Optional(CONF_FILTER_SCALE): cv.positive_float,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ CONF_SMOOTH = 'smooth'
|
|||||||
CONF_WHITE_SEP = 'white_sep'
|
CONF_WHITE_SEP = 'white_sep'
|
||||||
CONF_CHIP = 'chip'
|
CONF_CHIP = 'chip'
|
||||||
CONF_RANGE = 'range'
|
CONF_RANGE = 'range'
|
||||||
|
CONF_FILTER_VALUES = 'filter_values'
|
||||||
|
CONF_FILTER_SCALE = 'filter_scale'
|
||||||
PLATFORMS = [
|
PLATFORMS = [
|
||||||
"light",
|
"light",
|
||||||
"switch",
|
"switch",
|
||||||
|
|||||||
@@ -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": "v1.0.10b2"
|
"version": "v1.0.10b4"
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,8 @@ from homeassistant.const import (
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.template import Template
|
from homeassistant.helpers.template import Template
|
||||||
from .entities import MegaPushEntity
|
from .entities import MegaPushEntity
|
||||||
from .const import CONF_KEY, TEMP, HUM, W1, W1BUS, CONF_CONV_TEMPLATE, CONF_HEX_TO_FLOAT, DOMAIN, CONF_CUSTOM, CONF_SKIP
|
from .const import CONF_KEY, TEMP, HUM, W1, W1BUS, CONF_CONV_TEMPLATE, CONF_HEX_TO_FLOAT, DOMAIN, CONF_CUSTOM, \
|
||||||
|
CONF_SKIP, CONF_FILTER_VALUES, CONF_FILTER_SCALE
|
||||||
from .hub import MegaD
|
from .hub import MegaD
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@@ -107,7 +108,35 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn
|
|||||||
async_add_devices(devices)
|
async_add_devices(devices)
|
||||||
|
|
||||||
|
|
||||||
class MegaI2C(MegaPushEntity):
|
class FilterBadValues(MegaPushEntity):
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self._prev_value = None
|
||||||
|
|
||||||
|
def filter_value(self, value):
|
||||||
|
if value in self.filter_values \
|
||||||
|
or (
|
||||||
|
self._prev_value is not None
|
||||||
|
and self.filter_scale is not None
|
||||||
|
and (
|
||||||
|
abs(value - self._prev_value) / self._prev_value > self.filter_scale
|
||||||
|
)
|
||||||
|
):
|
||||||
|
value = self._prev_value
|
||||||
|
self._prev_value = value
|
||||||
|
return value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def filter_values(self):
|
||||||
|
return self.customize.get(CONF_FILTER_VALUES, self.mega.customize.get(CONF_FILTER_VALUES, []))
|
||||||
|
|
||||||
|
@property
|
||||||
|
def filter_scale(self):
|
||||||
|
return self.customize.get(CONF_FILTER_SCALE, self.mega.customize.get(CONF_FILTER_SCALE, None))
|
||||||
|
|
||||||
|
|
||||||
|
class MegaI2C(FilterBadValues):
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@@ -151,6 +180,7 @@ class MegaI2C(MegaPushEntity):
|
|||||||
ret = tmpl.async_render({'value': ret})
|
ret = tmpl.async_render({'value': ret})
|
||||||
except:
|
except:
|
||||||
ret = ret
|
ret = ret
|
||||||
|
ret = self.filter_value(ret)
|
||||||
return str(ret)
|
return str(ret)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -158,7 +188,7 @@ class MegaI2C(MegaPushEntity):
|
|||||||
return self._device_class
|
return self._device_class
|
||||||
|
|
||||||
|
|
||||||
class Mega1WSensor(MegaPushEntity):
|
class Mega1WSensor(FilterBadValues):
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@@ -247,6 +277,7 @@ class Mega1WSensor(MegaPushEntity):
|
|||||||
ret = tmpl.async_render({'value': ret})
|
ret = tmpl.async_render({'value': ret})
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
ret = self.filter_value(ret)
|
||||||
return str(ret)
|
return str(ret)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
Reference in New Issue
Block a user