Блог

Отладка Home Assistant на Windows

Если вы уже справились с установкой и настройкой Home Assistant и не хотите останавливаться на достигнутом - можете попробовать свои силы в отладке и доработке этой платформы.

И я покажу, что это не так уж и сложно.

Первая часть про установку Home Assistant на Windows была в прошлой статье.

Теперь скачиваем и устанавливаем замечательную среду разработки PyCharm Community. Это полностью бесплатный и очень мощный инструмент для разработки приложений на Python.

Создаём новый проект и указываем на папку с конфигами Home Assistant. Не заморачиваемся с окружениями (environment) и выбираем установленный в системе Python. Если PyCharm его не найдёт - поможем ему через кнопку [...].

PyCharm начнёт индексировать папку проекта и будет очень страдать. Потому что в папке:

\.homeassistant\deps\Python38\site-packagesнаходятся все библиотеки python, которые успел установить Home Assistant самостоятельно.

При этом основные библиотеки python, необходимые для запуска самого Home Assistant, а также исходный код HA и его базовых компонентов, находятся в папке:

C:\Python38-32\Lib\site-packages

Подскажем PyCharm в каких папках у нас находятся библиотеки (для правильной подсветки кода).

И в правом верхнем углу выберем Add Configuration...

Пути нужно выбрать согласно скриншоту ниже. С поправкой на ваши пути до Python.

Ну вот собственно и всё.

Нажимая в правом верхнем углу на кнопку Play - вы запустите HA в обычном режиме. А на кнопку жука - в режиме debug.

Добавляя brakepoints вы можете воспользоваться всей мощью профессионального средства разработки.

Теперь писать свои custom_components должно быть намного проще.


А можно не мучиться и использовать VSCode devcontainer. Благо, конфиг есть и в документации всё написано за вас

https://developers.home-assistant.io/docs/en/development_environment.html#developing-with-devcontainer">https://developers.home-assistant.io/docs/en/development_environment.html#developing-with-devcontainer

Пробовал сделать как написано в статье. В декабре 2022. Видимо что-то изменилось. И PyCharm не хотел запускать __main__.py как скрипт. Ломался на относительном импорте. (Я так понял, есть какая-то особенность у питона и надо в таком случае запускать не как скрипт, а как модуль.

Я поступил следующим образом:

1. Делаем, как описано в первой статье и запускаем hass. У нас появляется каталог .homeassistant. Там будут лежать наши данные. Всё как ожидается.

2. Идем в документацию HA для девелоперов и делаем как там написано: форкаем core и клонируем его гитом к себе

Дальше действуем не так как в статье.

3. Запускаем PyCharm и говорим, что мы хотим открыть существующий проект и в качестве каталога проекта указываем склонированный на втором шаге core
4. PyCharm скажет, что он хочет создать в проекте папку homeassistant. Соглашаемся (видимо, это аналог VSCode devcontainer
5. Папка создаётся, PyCharm что-то там индексирует
6. Индексирование закончено.
7. Дальше создаём конфигурацию, которую мы будем запускать. Действуем как в статье, после фразы "И в правом верхнем углу выберем Add Configuration..." НО И ЭТО САМОЕ ГЛАВНОЕ
8. В окне в первом поле ScriptPath нажимаем серую стрелку слева от поля ввода и в выпадающем списке выбираем вариант "Module name". В поле ввода вводим "homeassistant" (без апострофов).
9. Сохраняем конфигурацию и запускаем зелёной стрелкой.

В этой ситуации питон запустит home assistant как модуль. Как-то так
blablabla/core/venv/bin/python -m homeassistant

Это позволит ему успешно понять по какому пути находится этот самый модуль и как он называется. И относительно этого названия уже строить пути отноительного импорта.

10. Заходим в браузер и заходим на localhost:8123. Убеждаемся, что HA запустился
Удивительно, что у вас в 2022 вообще запустился ХА на Windows. Они давно отказались от поддержки этой ОС.

Но можно использовать: https://github.com/AlexxIT/HassWP

В конце документации описано, как установить маленький фикс-модуль в уже готовый python. И для отладки можно запускать уже непосредственно этот модуль. А он "грамотно" запустит ХА на Windows.

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