Skip to content

TohaRG2/MQTT-SberGate

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MQTT-SberGate

MQTT SberGate SberDevice IoT Agent for Home Assistant

Агент представляет собой прослойку между облаком Sber и HomeAssistant (HA). Его задача взять из HA нужные устройства, отобразить их в облаке Sber и отслеживать изменения в облаке с последующей передачей в HomeAssistant. На данный момент агент выбирает сущности switch (включая розетки), script, light, input_boolean, button, climate, а также датчики температуры, влажности и давления.

  • Сущности switch, script и button отображаются как relay в облаке Sber.
  • Сущности input_boolean и input_button отображаются как scenario_button.
  • Сущности climate отображаются как hvac_ac.
  • Сущности light отображаются как light. Для сущностей light, если они поддерживают яркость и/или цветность, это значение также прокидывается в Сбер как light_brightness (0-100%).
  • Датчики температуры, влажности и давления объединяются в один sensor_temp, если имеют одинаковый device_id. На данный момент давление в Сбер прокидывается, но его пока не умеет отображать Салют.

Первоначальные настройки.

Для работы агента необходима регистрация в Studio Сбера. В которой нужно создать интеграцию и получить регистрационные данные для агента (sber-mqtt_login, sber-mqtt_password).

Также необходим токен для взаимодействия аддона с HomeAssistant. Очень рекомендую завести для этого отдельного пользователя. Для получения заходим в профиль пользователя и создаём долгосрочный токен доступа (ha-api_token)

Изменения.

2.0.12 (02.03.2026)

  • Исправление минорных ошибок (версия в SberGate, скачивание файла лога)

2.0.11 (01.03.2026)

  • Рефакторинг js кода
  • Добавлена возможность смены типа устройства в Салюте прямо главной страницы конфигурирования, т.е. пользователь сам сможет выбирать типа устройства, которое он будет использовать в Салюте, например: кнопку (button) из HomeAssistant можно прокинуть как реле (relay) в Салют, а можно как кнопку (scenario_button). Или если лампочку (light) надо только включать/выключать, то можно прокинуть как реле (relay). Теперь для этого не надо переходить к настройкам СберАгента.
  • Исправлена ошибка с сохранением изменения типа устройства при перезагрузке

2.0.10 (28.02.2026)

  • Рефакторинг кода
  • Добавлена возможность проброса пылесоса (тип vacuum)

2.0.9 (19.02.2026)

  • Рефакторинг кода
  • Исправление работы одиноких датчиков температуры без влажности

2.0.8 (17.02.2026)

  • Рефакторинг кода, упрощение/унификация для добавления новых устройств
  • Исправлена ошибка с конвертерами

2.0.7 (17.02.2026)

  • Рефакторинг кода, оптимизация работы и вывода логов. Надеюсь ничего не отломал

2.0.6 (16.02.2026)

  • Добавлена сортировка устройств по любому полю.
  • Датчики давления в HA могут иметь не только тип "pressure", но и "atmospheric_pressure", добавлена поддержка и таких датчиков
  • Исправлена обработка input_boolean как scenario_button и button как switch
  • Добавлена обработка input_button как scenario_button, что на мой взгляд гораздо логичнее, чем делать вызов через input_boolean, правильнее вызвать input_button.press, что Салютом будет расценено как одиночное нажатие и можно повторять это нажатие не один раз, не меняя состояние виртуальной кнопки. Отлично работает, как через NodeRed, так и в сценариях самого Home Assistant

2.0.5 (15.02.2026)

  • Для световых устройств (light) поддерживающих цветной режим, добавлен проброс цвета в Салют, а также возможность изменения цвета из Салюта. Могут быть нюансы с вашим конкретным устройством

2.0.4 (14.02.2026)

  • Перевел записи в логах и комментарии в коде на русский язык (не знаю на сколько полезно, но мне так понятнее)
  • Рефакторинг менеджера локальной базы

2.0.3 (13.02.2026)

  • Для устройств типа light по возможности добавлена регулировка яркости, если они такое поддерживают

2.0.2 (04.02.2026)

  • Добавлен датчик давления по аналогии с датчиком влажности. В Сбер отправляются значения вместе с температурой и влажностью, если датчики находятся в составе одного устройства. (upd 06.02.2026) К сожалению, Сбер пока не поддерживает датчик давления и не отображает его в Салюте, поэтому данное изменение по сути ничего не меняет

2.0.1 (03.02.2026)

  • Аддон выделен в отдельную ветку и продолжит развитие как самостоятельный проект
  • Добавлены датчики влажности. Если датчик температуры и датчик влажности принадлежат одному устройству, то в Сбер будут прокинуты данные с обоих датчиков, как одно устройство. Т.е. галку кого прокидывать можно ставить у любого датчика, хоть температуры, хоть влажности. Если поставить у обоих, то в Сбер будут прокинуты два датчика с одинаковыми показаниями

1.0.18 (02.02.2026)

  • Для удобства сопровождения аддон разделен на несколько модулей.
  • Также если вам хочется самому что-то в нем изменить, то можно просто подложить измененный файл в папку /share/ в корне HAOS, стартовый скрипт подхватит эти изменения и запустит уже измененный аддон.
  • Заодно поправил определение комнаты для устройств и теперь в Салют, устройства сразу пробрасываются в нужную комнату.

1.0.17 (17.07.2025)

  • Лето, жара. Нужен кондиционер. Но на скорую руку, надеюсь ничего не сломал. Как же хочется всё переделать...

1.0.16 (28.05.2025)

  • Понадобилось нажимать кнопки голосовым помощником. Добавил проброс сущностей button из HA на relay в Сбер.
  • Добавил try при разборе json, что предположительно должно решить проблему, падения при поступлении некорректного запроса устройств от сервера Сбер.

1.0.15 (09.03.2024)

  • Попытка прокинуть расположение устройств по комнатам, но что-то Сбер не захотел, грузит всё на проходную... :(

1.0.14 (05.03.2024)

  • Попытка исправить автозагрузку.

1.0.13 (05.03.2024)

  • Исправлена ошибка при подключении к WebSocket.
  • Добавлено логирование в файл и фозможнасть скачать лог.

1.0.12 (05.02.2024)

  • добавлена сущность HA input_boolean, которая транслируется в категорию Сбера scenario_button. включение транслируется в click, вывключение в double_click

1.0.11 (16.12.2023)

  • В пакет вшиты модули requests и websocket так как почему-то они перестали устанавливаться через pip3 в docker
  • Незначительные правки в документции

1.0.10 (23.11.2023)

  • изменение логики работы, добавлена возможность менять категорию
  • добавлена сущность HA light
  • заменены icon.png и logo.png
  • изменения в логировании

1.0.9 (15.11.2023)

  • Автостарт при перезагрузке HA не работал по причине неготовности HA отвечать в момент запуска агента. Добавлена задержка и ожидание готовности HA.
  • Изменена кодировка файлов CHANGELOG.md и DOCS.md на UTF-8 из-за чего падал сервер при запросе списка изменений ERROR (MainThread) [homeassistant.components.hassio.handler] /addons/0f4b1db7_mqtt-sber-gate/changelog return code 500 WARNING (MainThread) [homeassistant.components.hassio] Could not fetch changelog for 0f4b1db7_mqtt-sber-gate:

1.0.8 (14.11.2023)

  • Попытка исправить ошибку загрузки списка изменений. Возможно автостарт не работает именно по этой причине.

1.0.7 (09.11.2023)

  • Добавлены милисекунды в log
  • Добавлены проверки при скачивании models.json
  • Мелкие правки, новые косяки

1.0.6 (01.11.2023)

  • Обновлен оригинальный веб-интерфейс SberDevices от платформы WirenBoard
  • Добавлен CHANGELOG.md
  • Изменена структура каталогов в надежде получить возможность автоматической установки.
  • Мелкие правки, новые косяки

1.0.1

  • Updates

1.0.0

  • Initial release

Немного истории.

Проект начался незадолго до нового года, когда подключенную к HomeAsistant ёлочку захотелось включать голосом. Надо сказать у Салюта "Раз-два-три ёлочка гори" очень здорово получилось.

Благо к тому времени у Sberа уже был MQTT-to-Cloud для DIY. Правда список поддерживаемых контроллеров ограничивается всеголишь двумя: LogicMachine и Wiren Board. Таким образом имеется только два официальных агента под указанные контроллеры.

Экспериментов было масса. Изначально даже проект начинался на php, но со временем пришло понимание, что быстрее и проще всё реализовать на родном для HomeAssistant python и завернуть в виде аддона. Возможно лучше было бы в виде интеграции, но проблема со свободным временем не даёт возможности разбираться и двигаться в этом направлении, да и поставленные задачи решины...

Изначально было реализовано два MQTT подключения. Первое смотрело в облако Sber, а второе в локальный MQTT брокер HomeAssistant. Было очень неудобно, так как приходилось городить огород чтобы HomeAssistant реагировал на данные внутреннего MQTT. Но, мне подсказали, что у HomeAssistant есть замечательный REST API с помощью которого можно очень просто им управлять. Поэтому подключение к внутреннему MQTT HomeAssistant было отключено (код до сих пор ещё болтается в недрах агента, возможно для чего-нибудь ещё пригодится), а управление переведено на REST API.

Также в ходе экспериментов с оригинальным агентом в проект был включен его web-интерфейс, но до конца правильная работа так и не реализована, чисто на посмотреть.

Также подсмотрел замечательную идею управления AndroidTV через adb. Поэтому кроме switch дабавились script. Теперь стало возможно сказать ассистенту: "Включи камеру на улице". После чего отрабатывает скрипт HA который отправляет в VLC нужный поток. Попытки прокинуть script как камеру не увенчались успехом, даже писал в поддержку. Получил ответ, что-то вроде "пока не реализовано".

Ссылки.

Для работы с MQTT используется Eclipse Paho™ MQTT Python Client

Регистрация пространства в Studio

Создание проекта интеграции в Studio

Авторизация контроллера в облаке Sber

Как работает интеграция Sber

Создание интеграции Sber

HA REST API

HA WebSocket API

Telegram259922606

About

MQTT SberGate SberDevice IoT Agent for Home Assistant

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 98.7%
  • Other 1.3%