mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-10 16:44:28 +05:00
edit readme
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
39
readme.md
39
readme.md
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user