Skip to content

About

MQTT SberGate SberDevice IoT Agent for Home Assistant

Resources

Stars

5 stars

Watchers

1 watching

Forks

 
 

Latest commit

 

History

79 Commits

Folders and files

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

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages