edit readme

This commit is contained in:
Andrey
2021-01-22 10:48:00 +03:00
parent 9755a9c654
commit fa1c3330ba
3 changed files with 52 additions and 6 deletions

View File

@@ -65,6 +65,11 @@ class MegaBinarySensor(BinarySensorEntity, MegaPushEntity):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._is_on = None
self._attrs = None
@property
def state_attributes(self):
return self._attrs
@property
def is_on(self) -> bool:
@@ -77,9 +82,11 @@ class MegaBinarySensor(BinarySensorEntity, MegaPushEntity):
payload = payload.copy()
payload.pop(CONF_PORT)
data.update(payload)
self.hass.bus.async_fire(
EVENT_BINARY_SENSOR,
data,
)
if not self.is_first_update:
self.hass.bus.async_fire(
EVENT_BINARY_SENSOR,
data,
)
val = payload.get("value")
self._is_on = val == 'ON'
self._is_on = val == 'ON'
self._attrs = data

View File

@@ -93,11 +93,13 @@ class MegaPushEntity(BaseMegaEntity):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.mega.subscribe(self.port, callback=self.__update)
self.is_first_update = True
def __update(self, value: dict):
self._update(value)
self.async_write_ha_state()
self.lg.debug(f'state after update %s', self.state)
self.is_first_update = False
return
def _update(self, payload: dict):

View File

@@ -56,14 +56,51 @@ mega:
skip: true
33:
# для датчиков можно кастомизировать только имя и unit_of_measurement
# для температуры и влажность unit определяется автоматически, для остальных юнита нет
name: какой-то датчик
unit_of_measurement:
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
temp: "°C"
14:
name: какой-то датчик
hum: "%" # если датчик один, то просто строчкой
unit_of_measurement: "°C" # если датчик один, то просто строчкой
```
## События
`binary_sensor` срабатывает когда цифровой выход принимает значение 'ON', вместе с этим
он сохраняет полученные параметры от меги в аттрибутах. Атрибутами можно пользоваться так:
```yaml
- alias: some double click
trigger:
- platform: state
entity_id: binary_sensor.mega_1
attribute: cnt
to: 2
action:
- service: light.toggle
entity_id: light.some_light
```
Однако, особенность state-триггера в атоматизациях HA в том, что он срабатывает только когда state меняется. Это может
мешать, тк если вы повторно совершите двойной клик, стейт уже не поменяется, поэтому рекомендуется
пользоваться event-триггером.
При каждом срабатывании `binary_sensor` так же сообщает о событии типа `mega.sensor`.
События можно использовать в автоматизациях, например так:
```yaml
- alias: some double click
trigger:
- platform: event
event_type: mega.sensor
event_data:
entity_id: binary_sensor.mega_1
cnt: 2
action:
- service: light.toggle
entity_id: light.some_light
```
Чтобы понять, какие события происходят, лучше всего воспользоваться панелью разработчика и подписаться
на вкладке события на событие `mega.sensor`, понажимать кнопки.
## Сервисы
Все сервисы доступны в меню разработчика с описанием и примерами использования
```yaml