mirror of
https://github.com/andvikt/mega_hacs.git
synced 2025-12-11 17:14:28 +05:00
add allowed hosts config
This commit is contained in:
@@ -16,7 +16,7 @@ from homeassistant.helpers import config_validation as cv
|
|||||||
from homeassistant.components import mqtt
|
from homeassistant.components import mqtt
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from .const import DOMAIN, CONF_INVERT, CONF_RELOAD, PLATFORMS, CONF_PORTS, CONF_CUSTOM, CONF_SKIP, CONF_PORT_TO_SCAN, \
|
from .const import DOMAIN, CONF_INVERT, CONF_RELOAD, PLATFORMS, CONF_PORTS, CONF_CUSTOM, CONF_SKIP, CONF_PORT_TO_SCAN, \
|
||||||
CONF_MQTT_INPUTS, CONF_HTTP, CONF_RESPONSE_TEMPLATE, CONF_ACTION, CONF_GET_VALUE
|
CONF_MQTT_INPUTS, CONF_HTTP, CONF_RESPONSE_TEMPLATE, CONF_ACTION, CONF_GET_VALUE, CONF_ALLOW_HOSTS
|
||||||
from .hub import MegaD
|
from .hub import MegaD
|
||||||
from .config_flow import ConfigFlow
|
from .config_flow import ConfigFlow
|
||||||
from .http import MegaView
|
from .http import MegaView
|
||||||
@@ -26,6 +26,7 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
CONFIG_SCHEMA = vol.Schema(
|
CONFIG_SCHEMA = vol.Schema(
|
||||||
{
|
{
|
||||||
DOMAIN: {
|
DOMAIN: {
|
||||||
|
vol.Optional(CONF_ALLOW_HOSTS): [str],
|
||||||
vol.Required(str, description='id меги из веб-интерфейса'): {
|
vol.Required(str, description='id меги из веб-интерфейса'): {
|
||||||
vol.Optional(int, description='номер порта'): {
|
vol.Optional(int, description='номер порта'): {
|
||||||
vol.Optional(CONF_SKIP, description='исключить порт из сканирования', default=False): bool,
|
vol.Optional(CONF_SKIP, description='исключить порт из сканирования', default=False): bool,
|
||||||
@@ -62,6 +63,7 @@ async def async_setup(hass: HomeAssistant, config: dict):
|
|||||||
"""YAML-конфигурация содержит только кастомизации портов"""
|
"""YAML-конфигурация содержит только кастомизации портов"""
|
||||||
hass.data[DOMAIN] = {CONF_CUSTOM: config.get(DOMAIN, {})}
|
hass.data[DOMAIN] = {CONF_CUSTOM: config.get(DOMAIN, {})}
|
||||||
hass.data[DOMAIN][CONF_HTTP] = view = MegaView(cfg=config.get(DOMAIN, {}))
|
hass.data[DOMAIN][CONF_HTTP] = view = MegaView(cfg=config.get(DOMAIN, {}))
|
||||||
|
view.allowed_hosts |= set(config.get(DOMAIN, {}).get(CONF_ALLOW_HOSTS, []))
|
||||||
hass.http.register_view(view)
|
hass.http.register_view(view)
|
||||||
hass.services.async_register(
|
hass.services.async_register(
|
||||||
DOMAIN, 'save', partial(_save_service, hass), schema=vol.Schema({
|
DOMAIN, 'save', partial(_save_service, hass), schema=vol.Schema({
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ CONF_RESPONSE_TEMPLATE = 'response_template'
|
|||||||
CONF_ACTION = 'action'
|
CONF_ACTION = 'action'
|
||||||
CONF_UPDATE_ALL = 'update_all'
|
CONF_UPDATE_ALL = 'update_all'
|
||||||
CONF_GET_VALUE = 'get_value'
|
CONF_GET_VALUE = 'get_value'
|
||||||
|
CONF_ALLOW_HOSTS = 'allow_hosts'
|
||||||
PLATFORMS = [
|
PLATFORMS = [
|
||||||
"light",
|
"light",
|
||||||
"switch",
|
"switch",
|
||||||
|
|||||||
38
readme.md
38
readme.md
@@ -14,6 +14,18 @@
|
|||||||
большого кол-ва команд (например в сценах). Каждая следующая команда отправляется только после получения ответа о
|
большого кол-ва команд (например в сценах). Каждая следующая команда отправляется только после получения ответа о
|
||||||
выполнении предыдущей.
|
выполнении предыдущей.
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
Рекомендованный способ с поддержкой обновлений - [HACS](https://hacs.xyz/docs/installation/installation):
|
||||||
|
|
||||||
|
HACS - Integrations - Explore, в поиске ищем MegaD.
|
||||||
|
|
||||||
|
Альтернативный способ установки:
|
||||||
|
```shell
|
||||||
|
# из папки с конфигом
|
||||||
|
wget -q -O - https://raw.githubusercontent.com/andvikt/mega_hacs/master/install.sh | bash -
|
||||||
|
```
|
||||||
|
Не забываем перезагрузить HA
|
||||||
|
|
||||||
## Зависимости
|
## Зависимости
|
||||||
**Важно!!** Для максимальной совместимости необходимо настроить интеграцию [mqtt](https://www.home-assistant.io/integrations/mqtt/)
|
**Важно!!** Для максимальной совместимости необходимо настроить интеграцию [mqtt](https://www.home-assistant.io/integrations/mqtt/)
|
||||||
в HomeAssistant, а так же обновить ваш контроллер до последней версии, тк были важные обновления в части mqtt
|
в HomeAssistant, а так же обновить ваш контроллер до последней версии, тк были важные обновления в части mqtt
|
||||||
@@ -73,19 +85,23 @@ mega:
|
|||||||
{% if m==2 %}1:0{% else %}d{% endif %}
|
{% if m==2 %}1:0{% else %}d{% endif %}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
## Отладка ответов
|
||||||
## Установка
|
Для отладки ответов сервера можно самим имитировать запросы контроллера, если у вас есть доступ к консоли
|
||||||
Рекомендованный способ с поддержкой обновлений - [HACS](https://hacs.xyz/docs/installation/installation):
|
HA:
|
||||||
|
|
||||||
HACS - Integrations - Explore, в поиске ищем MegaD.
|
|
||||||
|
|
||||||
Альтернативный способ установки:
|
|
||||||
```shell
|
```shell
|
||||||
# из папки с конфигом
|
curl -v -X GET 'http://localhost:8123/mega?pt=5&m=1'
|
||||||
wget -q -O - https://raw.githubusercontent.com/andvikt/mega_hacs/master/install.sh | bash -
|
|
||||||
```
|
```
|
||||||
Не забываем перезагрузить HA
|
Если доступа нет, нужно в файл конфигурации добавить ip компьюетра, с которого вы хотите делать запросы, например:
|
||||||
|
```yaml
|
||||||
|
mega:
|
||||||
|
allow_hosts:
|
||||||
|
- 192.168.1.1
|
||||||
|
```
|
||||||
|
И тогда можно с локальной машины делать запросы на ваш сервер HA:
|
||||||
|
```shell
|
||||||
|
curl -v -X GET 'http://192.168.88.1.4:8123/mega?pt=5&m=1'
|
||||||
|
```
|
||||||
|
В ответ будет приходить либо `d`, либо скрипт, который вы настроили
|
||||||
## Настройка
|
## Настройка
|
||||||
`Настройки` -> `Интеграции` -> `Добавить интеграцию` в поиске ищем mega
|
`Настройки` -> `Интеграции` -> `Добавить интеграцию` в поиске ищем mega
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user