Главная > Умный дом > Как не нужно читать документацию по REST API Home Assistant

Как не нужно читать документацию по REST API Home Assistant


21 июля 2021. Разместил: dimon
Уже год я периодически возвращаюсь к мысли слать графики из Home Assistant в Telegram..

Но пока никакого простого решения не "нагуглил" и не придумал.

А тут на днях попалась статья как человек выводит график на E-Ink дисплей. Он забирает данные из Home Assistant с помощью REST API HA Пайтон (Phyton) скриптом, потом им же формирует график и сохраняет его в виде картинки, которую загружает с помощью ESP в дисплей.

Как оказалось первое, что нужно сделать - это сгенерировать Долгосрочные токены доступа ("Long-Lived Access Token") на страничке профиля http://IP_ADDRESS:8123/profile
Там задается имя и после этого показывает токен, который предлагается сохранить в безопасное место.
Тут была моя первая ошибка - ключ был выделен в поле ввода и я просто нажал Ctrl + C, удивился что он какой-то короткий, но записал его в блокнот.

Попробовал получить статус API с помощью cURL в терминале Ubuntu с помощью команды из документации:


curl -X GET \
  -H "Authorization: Bearer ABCDEFGH" \
  -H "Content-Type: application/json" \
  http://IP_ADDRESS:8123/api/


где ABCDEFGH - наш токен, записанный в блокнот

Получив ошибку 401 (Unauthorized), начал вспоминать, что читал в документации.

Вспомнив, что в документации было написано, что нужно дописать в configuration.yaml код:

# Example configuration.yaml entry
api:


Попробовал добавить его, но все равно ошибка. Начал гуглить, напал на старую статью на китайском сервера НА, там было указано что необходимо еще править секцию http: в configuration.yaml. Попробовал и это.
Потом перешел на официальную доку по HTTP Home Assistant, там оказалось куча изменений и никакие api_password добавлять не нужно. В итоге доковырялся до того, что заблокировал доступ к НА по http вообще.

Пришлось брать balenaEtcher, раскатывать чистый образ HassOS, скачивать с Google Drive бэкап, и раскатывать его.

После восстановления работоспособности Home Assistant, я вернулся к первому пункту - созданию долгосрочного токена и обратил внимание, что в поле токен почему-то выделен не весь, выделил его целиком, скопировал в блокнот - он оказался раза в 4 длиннее первоначального, попробовал cUrl и команда сработала:


dimon@nout: curl -X GET \
  -H "Authorization: Bearer ABCDEFGH" \
  -H "Content-Type: application/json" \
  http://IP_ADDRESS:8123/api/
dimon@nout: {"message": "API running."}


Потом я вспомнил, что после обновления до версии 2021.07, многие жаловались, что поломался удаленный доступ к Home Assistant и дружно правили секцию trusted_proxies как раз в разделе http: в configuration.yaml.

Выводы - нужно внимательнее читать официальную документацию, и очень скептически относиться к мануалам, написанным пусть даже всего несколько месяцев назад. Потому что Home Assistant очень резво развивается, и то что недавно работало, может уже совершенно по другому описываться в конфигурации.

Вернуться назад