diff --git a/custom_components/mega/__init__.py b/custom_components/mega/__init__.py index a332a62..5140729 100644 --- a/custom_components/mega/__init__.py +++ b/custom_components/mega/__init__.py @@ -1,13 +1,10 @@ """The mega integration.""" import asyncio import logging -import typing -from functools import partial import voluptuous as vol -from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_PLATFORM, CONF_SCAN_INTERVAL, CONF_ID +from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_SCAN_INTERVAL, CONF_ID from homeassistant.core import HomeAssistant -from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.service import bind_hass from homeassistant.components import mqtt from homeassistant.config_entries import ConfigEntry @@ -74,9 +71,10 @@ async def async_setup(hass: HomeAssistant, config: dict): if CONF_HOST in conf: conf = {DEF_ID: conf} for id, data in conf.items(): + _LOGGER.warning('YAML configuration is deprecated, please use web-interface') await _add_mega(hass, id, data) - for id, hub in hass.data[DOMAIN].__items__(): + for id, hub in hass.data[DOMAIN].items(): _POLL_TASKS[id] = asyncio.create_task(hub.poll()) return True diff --git a/custom_components/mega/binary_sensor.py b/custom_components/mega/binary_sensor.py index 4845c79..72a5da5 100644 --- a/custom_components/mega/binary_sensor.py +++ b/custom_components/mega/binary_sensor.py @@ -1,6 +1,4 @@ """Platform for light integration.""" -import asyncio -import json import logging import voluptuous as vol @@ -18,7 +16,6 @@ from homeassistant.const import ( CONF_ID ) from homeassistant.core import HomeAssistant -from homeassistant.helpers.restore_state import RestoreEntity from .entities import BaseMegaEntity from .hub import MegaD diff --git a/custom_components/mega/config_flow.py b/custom_components/mega/config_flow.py index 0365eb7..8ca061e 100644 --- a/custom_components/mega/config_flow.py +++ b/custom_components/mega/config_flow.py @@ -9,7 +9,7 @@ from homeassistant.components import mqtt from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST, CONF_ID, CONF_PASSWORD, CONF_SCAN_INTERVAL from homeassistant.core import callback -from .const import DOMAIN, CONF_PORT_TO_SCAN, CONF_RELOAD, CONF_INVERT # pylint:disable=unused-import +from .const import DOMAIN, CONF_PORT_TO_SCAN, CONF_RELOAD # pylint:disable=unused-import from .hub import MegaD from . import exceptions diff --git a/custom_components/mega/light.py b/custom_components/mega/light.py index 988c33e..a8a6da7 100644 --- a/custom_components/mega/light.py +++ b/custom_components/mega/light.py @@ -1,6 +1,4 @@ """Platform for light integration.""" -import asyncio -import json import logging import voluptuous as vol @@ -19,7 +17,6 @@ from homeassistant.const import ( CONF_ID ) from homeassistant.core import HomeAssistant -from homeassistant.helpers.restore_state import RestoreEntity from .entities import BaseMegaEntity from .hub import MegaD diff --git a/custom_components/mega/sensor.py b/custom_components/mega/sensor.py index 8839048..dcac222 100644 --- a/custom_components/mega/sensor.py +++ b/custom_components/mega/sensor.py @@ -1,7 +1,5 @@ """Platform for light integration.""" import logging - -import typing import voluptuous as vol from homeassistant.components.sensor import ( diff --git a/custom_components/mega/switch.py b/custom_components/mega/switch.py index 56626ad..1616ae4 100644 --- a/custom_components/mega/switch.py +++ b/custom_components/mega/switch.py @@ -1,5 +1,4 @@ """Platform for light integration.""" -import json import logging import voluptuous as vol @@ -13,11 +12,7 @@ from homeassistant.const import ( CONF_PLATFORM, CONF_PORT, ) -from homeassistant.core import HomeAssistant -from homeassistant.helpers.restore_state import RestoreEntity from .entities import BaseMegaEntity - -from .hub import MegaD from .const import CONF_DIMMER, CONF_SWITCH _LOGGER = logging.getLogger(__name__) diff --git a/readme.md b/readme.md index dfe1faa..9241e87 100644 --- a/readme.md +++ b/readme.md @@ -3,15 +3,17 @@ Интеграция с [MegaD-2561](https://www.ab-log.ru/smart-house/ethernet/megad-2561) ## Основные особенности: -- Настройка как из yaml так и из веб-интерфейса -- При настройки из веба все порты автоматически добавляются как устройства (для обычных релейных выходов создается +- Все порты автоматически добавляются как устройства (для обычных релейных выходов создается `light`, для шим - `light` с поддержкой яркости, для цифровых входов `binary_sensor`, для температурных датчиков `sensor`) - Возможность работы с несколькими megad - Обратная связь по mqtt - Команды выполняются друг за другом без конкурентного доступа к ресурсам megad +- Поддержка температурных датчиков в режиме шины + ## Устройства Поддерживаются устройства: light, switch, binary_sensor, sensor. light может работать как диммер + ## Установка Рекомендованнй способ - через [HACS](https://hacs.xyz/docs/installation/installation). После установки HACS, нужно перейти в меню hacs -> integrations, далее в верхнем правом углу @@ -25,61 +27,13 @@ wget -q -O - https://raw.githubusercontent.com/andvikt/mega_hacs/master/install. Перезагрузить HA Для обновления повторить + ## Зависимости Перед использованием необходимо настроить интеграцию mqtt в HomeAssistant ## Настройка из веб-интерфейса `Настройки` -> `Интеграции` -> `Добавить интеграцию` в поиске ищем mega -## Пример настройки с помощью yaml: -```yaml -mega: - mega1: - host: 192.168.0.14 - name: hello - password: sec - mqtt_id: mega # это id в конфиге меги - -light: - - platform: mega - mega1: - switch: - - 1 # можно просто перечислить порты - - 2 - - 3 - dimmer: - - port: 7 - name: hello # можно использовать расширенный вариант с названиями - - 9 - - 10 - -binary_sensor: - - platform: mega - mega1: - - port: 16 - name: sensor1 - - port: 18 - name: sensor2 - -sensor: - - platform: mega - mega1: - - port: 10 - name: some temp - type: w1 - key: temp - - port: 10 - name: some hum - type: w1 - key: hum - -switch: - - platform: mega - mega1: - - 11 - -``` - ## Сервисы ```yaml save: @@ -94,7 +48,7 @@ get_port: description: Запросить текущий статус порта (или всех) fields: mega_id: - description: ID меги, можно оставить пустым, тогда будут сохранены все зарегистрированные меги + description: ID меги, можно оставить пустым, тогда будут порты всех зарегистрированных мег example: "mega" port: description: Номер порта (если не заполнять, будут запрошены все порты сразу) @@ -105,7 +59,7 @@ run_cmd: fields: mega_id: - description: ID меги, можно оставить пустым, тогда будут сохранены все зарегистрированные меги + description: ID меги example: "mega" port: description: Номер порта (это не порт, которым мы управляем, а порт с которого шлем команду) @@ -116,10 +70,6 @@ run_cmd: ``` -## Состояния -Так же каждое устройство megad опрашивается на предмет работоспособности, текущий статус -хранится в mega. - ## Отладка Если возникают проблемы, можно включить детальный лог, для этого в конфиг добавить: ```yaml @@ -127,4 +77,4 @@ logger: default: info logs: custom_components.mega: debug -``` \ No newline at end of file +```