mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-13 18:14:28 +05:00
edit readme
This commit is contained in:
@@ -65,6 +65,11 @@ class MegaBinarySensor(BinarySensorEntity, MegaPushEntity):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self._is_on = None
|
self._is_on = None
|
||||||
|
self._attrs = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def state_attributes(self):
|
||||||
|
return self._attrs
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_on(self) -> bool:
|
def is_on(self) -> bool:
|
||||||
@@ -77,9 +82,11 @@ class MegaBinarySensor(BinarySensorEntity, MegaPushEntity):
|
|||||||
payload = payload.copy()
|
payload = payload.copy()
|
||||||
payload.pop(CONF_PORT)
|
payload.pop(CONF_PORT)
|
||||||
data.update(payload)
|
data.update(payload)
|
||||||
|
if not self.is_first_update:
|
||||||
self.hass.bus.async_fire(
|
self.hass.bus.async_fire(
|
||||||
EVENT_BINARY_SENSOR,
|
EVENT_BINARY_SENSOR,
|
||||||
data,
|
data,
|
||||||
)
|
)
|
||||||
val = payload.get("value")
|
val = payload.get("value")
|
||||||
self._is_on = val == 'ON'
|
self._is_on = val == 'ON'
|
||||||
|
self._attrs = data
|
||||||
|
|||||||
@@ -93,11 +93,13 @@ class MegaPushEntity(BaseMegaEntity):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.mega.subscribe(self.port, callback=self.__update)
|
self.mega.subscribe(self.port, callback=self.__update)
|
||||||
|
self.is_first_update = True
|
||||||
|
|
||||||
def __update(self, value: dict):
|
def __update(self, value: dict):
|
||||||
self._update(value)
|
self._update(value)
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
self.lg.debug(f'state after update %s', self.state)
|
self.lg.debug(f'state after update %s', self.state)
|
||||||
|
self.is_first_update = False
|
||||||
return
|
return
|
||||||
|
|
||||||
def _update(self, payload: dict):
|
def _update(self, payload: dict):
|
||||||
|
|||||||
39
readme.md
39
readme.md
@@ -56,14 +56,51 @@ mega:
|
|||||||
skip: true
|
skip: true
|
||||||
33:
|
33:
|
||||||
# для датчиков можно кастомизировать только имя и unit_of_measurement
|
# для датчиков можно кастомизировать только имя и unit_of_measurement
|
||||||
|
# для температуры и влажность unit определяется автоматически, для остальных юнита нет
|
||||||
name: какой-то датчик
|
name: какой-то датчик
|
||||||
unit_of_measurement:
|
unit_of_measurement:
|
||||||
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
|
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
|
||||||
|
temp: "°C"
|
||||||
14:
|
14:
|
||||||
name: какой-то датчик
|
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
|
```yaml
|
||||||
|
|||||||
Reference in New Issue
Block a user