mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-13 10:04:28 +05:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5da2973351 | ||
|
|
5eadd295f1 | ||
|
|
5bf432a27f | ||
|
|
d934e87ae5 | ||
|
|
0b54db9c44 |
26
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
26
.github/ISSUE_TEMPLATE/bug-report.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Описание**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**Версии систем**
|
||||||
|
Enviroment: raspberry/linux/windows/macos/docker
|
||||||
|
HA version:
|
||||||
|
mega_hacs version:
|
||||||
|
megad firmware version:
|
||||||
|
|
||||||
|
**Ожидаемое поведение**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**LOG**
|
||||||
|
Прочитайте в документации как включить подробный лог интеграции и приложите его здесь
|
||||||
@@ -32,8 +32,8 @@ STEP_USER_DATA_SCHEMA = vol.Schema(
|
|||||||
|
|
||||||
async def get_hub(hass: HomeAssistant, data):
|
async def get_hub(hass: HomeAssistant, data):
|
||||||
_mqtt = hass.data.get(mqtt.DOMAIN)
|
_mqtt = hass.data.get(mqtt.DOMAIN)
|
||||||
if not isinstance(_mqtt, mqtt.MQTT):
|
# if not isinstance(_mqtt, mqtt.MQTT):
|
||||||
raise exceptions.MqttNotConfigured("mqtt must be configured first")
|
# raise exceptions.MqttNotConfigured("mqtt must be configured first")
|
||||||
hub = MegaD(hass, **data, lg=_LOGGER, mqtt=_mqtt, loop=asyncio.get_event_loop())
|
hub = MegaD(hass, **data, lg=_LOGGER, mqtt=_mqtt, loop=asyncio.get_event_loop())
|
||||||
hub.mqtt_id = await hub.get_mqtt_id()
|
hub.mqtt_id = await hub.get_mqtt_id()
|
||||||
if not await hub.authenticate():
|
if not await hub.authenticate():
|
||||||
|
|||||||
@@ -209,13 +209,13 @@ class MegaD:
|
|||||||
ret = {'value': ret}
|
ret = {'value': ret}
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
async def get_port(self, port):
|
async def get_port(self, port, force_http=False):
|
||||||
"""
|
"""
|
||||||
Запрос состояния порта. Состояние всегда возвращается в виде объекта, всегда сохраняется в центральное
|
Запрос состояния порта. Состояние всегда возвращается в виде объекта, всегда сохраняется в центральное
|
||||||
хранилище values
|
хранилище values
|
||||||
"""
|
"""
|
||||||
self.lg.debug(f'get port %s', port)
|
self.lg.debug(f'get port %s', port)
|
||||||
if self.mqtt is None:
|
if self.mqtt is None or force_http:
|
||||||
ret = await self.request(pt=port, cmd='get')
|
ret = await self.request(pt=port, cmd='get')
|
||||||
ret = self.parse_response(ret)
|
ret = self.parse_response(ret)
|
||||||
self.values[port] = ret
|
self.values[port] = ret
|
||||||
@@ -346,7 +346,7 @@ class MegaD:
|
|||||||
return pty, m
|
return pty, m
|
||||||
|
|
||||||
async def scan_ports(self, nports=37):
|
async def scan_ports(self, nports=37):
|
||||||
for x in range(nports+1):
|
for x in range(1, nports+1):
|
||||||
ret = await self.scan_port(x)
|
ret = await self.scan_port(x)
|
||||||
if ret:
|
if ret:
|
||||||
yield [x, *ret]
|
yield [x, *ret]
|
||||||
@@ -361,7 +361,7 @@ class MegaD:
|
|||||||
ret['light'][port].append({'dimmer': m == '1'})
|
ret['light'][port].append({'dimmer': m == '1'})
|
||||||
elif pty == '3':
|
elif pty == '3':
|
||||||
try:
|
try:
|
||||||
values = await self.get_port(port)
|
values = await self.get_port(port, force_http=True)
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
self.lg.warning(f'timout on port {port}')
|
self.lg.warning(f'timout on port {port}')
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -154,5 +154,7 @@ class Mega1WSensor(MegaPushEntity):
|
|||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
n = super().name
|
n = super().name
|
||||||
c = self.customize.get(CONF_NAME, {}).get(self.key)
|
c = self.customize.get(CONF_NAME, {})
|
||||||
|
if isinstance(c, dict):
|
||||||
|
c = c.get(self.key)
|
||||||
return c or n
|
return c or n
|
||||||
64
readme.md
64
readme.md
@@ -26,8 +26,40 @@ wget -q -O - https://raw.githubusercontent.com/andvikt/mega_hacs/master/install.
|
|||||||
```
|
```
|
||||||
Не забываем перезагрузить HA
|
Не забываем перезагрузить HA
|
||||||
|
|
||||||
|
## Настройка
|
||||||
|
`Настройки` -> `Интеграции` -> `Добавить интеграцию` в поиске ищем mega
|
||||||
|
|
||||||
|
Все имеющиеся у вас порты будут настроены автоматически. Вы можете менять названия, иконки и entity_id так же из интерфейса.
|
||||||
|
|
||||||
|
#### Кастомизация устройств с помощью yaml:
|
||||||
|
```yaml
|
||||||
|
# configuration.yaml
|
||||||
|
|
||||||
|
mega:
|
||||||
|
hello: # ID меги, как в UI
|
||||||
|
7: # номер порта
|
||||||
|
domain: switch # тип устройства (switch или light, по умолчанию для цифровых выходов используется light)
|
||||||
|
invert: true # инвертировать или нет (по умолчанию false)
|
||||||
|
name: Насос # имя устройства
|
||||||
|
8:
|
||||||
|
# исключить из сканирования
|
||||||
|
skip: true
|
||||||
|
33:
|
||||||
|
# для датчиков можно кастомизировать только имя и unit_of_measurement
|
||||||
|
# для температуры и влажность unit определяется автоматически, для остальных юнита нет
|
||||||
|
name:
|
||||||
|
hum: "влажность"
|
||||||
|
temp: "температура"
|
||||||
|
unit_of_measurement:
|
||||||
|
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
|
||||||
|
temp: "°C"
|
||||||
|
14:
|
||||||
|
name: какой-то датчик
|
||||||
|
unit_of_measurement: "°C" # если датчик один, то просто строчкой
|
||||||
|
```
|
||||||
|
|
||||||
## Зависимости
|
## Зависимости
|
||||||
**Важно!!** Для максимальной совместимости необходимо настроить интеграцию [mqtt](https://www.home-assistant.io/integrations/mqtt/)
|
Для совместимости c mqtt необходимо настроить интеграцию [mqtt](https://www.home-assistant.io/integrations/mqtt/)
|
||||||
в HomeAssistant, а так же обновить ваш контроллер до последней версии, тк были важные обновления в части mqtt
|
в HomeAssistant, а так же обновить ваш контроллер до последней версии, тк были важные обновления в части mqtt
|
||||||
|
|
||||||
## HTTP in
|
## HTTP in
|
||||||
@@ -102,37 +134,7 @@ mega:
|
|||||||
curl -v -X GET 'http://192.168.88.1.4:8123/mega?pt=5&m=1'
|
curl -v -X GET 'http://192.168.88.1.4:8123/mega?pt=5&m=1'
|
||||||
```
|
```
|
||||||
В ответ будет приходить либо `d`, либо скрипт, который вы настроили
|
В ответ будет приходить либо `d`, либо скрипт, который вы настроили
|
||||||
## Настройка
|
|
||||||
`Настройки` -> `Интеграции` -> `Добавить интеграцию` в поиске ищем mega
|
|
||||||
|
|
||||||
Все имеющиеся у вас порты будут настроены автоматически. Вы можете менять названия, иконки и entity_id так же из интерфейса.
|
|
||||||
|
|
||||||
#### Кастомизация устройств с помощью yaml:
|
|
||||||
```yaml
|
|
||||||
# configuration.yaml
|
|
||||||
|
|
||||||
mega:
|
|
||||||
hello: # ID меги, как в UI
|
|
||||||
7: # номер порта
|
|
||||||
domain: switch # тип устройства (switch или light, по умолчанию для цифровых выходов используется light)
|
|
||||||
invert: true # инвертировать или нет (по умолчанию false)
|
|
||||||
name: Насос # имя устройства
|
|
||||||
8:
|
|
||||||
# исключить из сканирования
|
|
||||||
skip: true
|
|
||||||
33:
|
|
||||||
# для датчиков можно кастомизировать только имя и unit_of_measurement
|
|
||||||
# для температуры и влажность unit определяется автоматически, для остальных юнита нет
|
|
||||||
name:
|
|
||||||
hum: "влажность"
|
|
||||||
temp: "температура"
|
|
||||||
unit_of_measurement:
|
|
||||||
hum: "%" # если датчиков несколько, то можно указывать юниты по их ключам
|
|
||||||
temp: "°C"
|
|
||||||
14:
|
|
||||||
name: какой-то датчик
|
|
||||||
unit_of_measurement: "°C" # если датчик один, то просто строчкой
|
|
||||||
```
|
|
||||||
|
|
||||||
## События
|
## События
|
||||||
`binary_sensor` срабатывает когда цифровой выход принимает значение 'ON'. `binary_sensor` имеет смысл использовать
|
`binary_sensor` срабатывает когда цифровой выход принимает значение 'ON'. `binary_sensor` имеет смысл использовать
|
||||||
|
|||||||
Reference in New Issue
Block a user