27.01.2024: Неработа
Вчера была пятница. Коробочка с Home Assistant периодически намертво зависала целый день, но не просто так, а со смыслом.
Кажется я нашёл слабое место в этом одноплатнике. Он и есть одно сплошное слабое место, и тут имеются две новости:
- Если бы у меня не было этой rk3318, я бы Home Assistant даже не попробовал. А не попробовав, не проникся бы идеей перевести устройства на локальный сервер.
- «Железо» на rk3318 слишком слабое. Контролировать датчики мощности хватает, а вот делать какие-либо более сложные расчёты — нет.
Увы, но стоит включить компиляцию прошивок в ESPHome, и стабильность системы становится никакущей. Процессор начинает перегреваться (даже не смотря на активное воздушное охлаждение).
Вердикт такой: Коробкой rk3318 пользоваться можно, но это нестабильная, слабая игрушка. Для опытов годится, но для серьёзных дел такую лучше не использовать.
А что может быть серьёзнее бытовых вопросов? Представь, что из за сбоя ты не можешь, например, включить свет в прихожей или в туалете ночью. Элементарные удобства вдруг внезапно становятся недоступны. При том, недоступны на ровном месте. Сервер умного дома обязан быть надёжным. Иначе он теряет всякий смысл.
Тем не менее, мой тест работы с Home Assistant продолжается.
Раз ESPHome не может компилировать прошивки на rk3318, значит нужно делать это на более мощном железе. Т.е. мне следует поднять docker-контейнер с Home Assistant где-нибудь на рабочем компьютере, и уже на нём заниматься компиляцией. А для rk3318 сделать устройство, которое будет:
- Включать активное воздушное охлаждение при нагреве процессора свыше 58°C.
- Производить перезагрузку rk3318 при зависании.
- При обновлениях модулей, автоматически (на худой конец вручную) входить в режим «установки обновлений», когда охлаждение включается, а проверка зависаний выключается минут на 15.
Если получится добиться стабильной работы и при этом организовать использование собственных устройств на базе контроллеров ESP, то цель считай достигнута.
Для начала попытался загрузить Docker (для Windows). И не смог. Докер требует обновлений.
Ну ладно. Обновляйся.
Теперь Докер вылетает с ошибкой.
В сети пишут, что надо обновить Windows.
Вот тут пошаговая инструкция.
Ладно. Обновляйся и Windows.
Ну и спустя примерно 3 часа обновление окончилось, а я смог запустить наконец Docker Desktop.
Теперь нужно запустить Home Assistant в контейнере Docker’а.
Для этого создаю папку doc_pro на диске C:, а в ней создаю папку homeassistant. В папке homeassistant создаю файл start.cmd и папку config.
А вот содержимое файла start.cmd
cd C:\doc_pro\homeassistant\ docker run -d --name homeassistant --privileged --restart=unless-stopped -e TZ=Moscow -v C:\doc_pro\homeassistant\config:/config -p 8123:8123 homeassistant/home-assistant:latest
Запускаю start.cmd и жду, жду, жду… Готово!
Перехожу в браузер, вбиваю адрес http://IP_МОЕЙ_ЛОКАЛЬНОЙ_МАШИНЫ:8123/ и, вижу экран настройки.
Настраиваю как обычно, и всё начинает работать.
Теперь ставлю Хаксы. Делаю вот по этой инструкции.
docker exec -it homeassistant bash
Там одна команда, а дальше гуляние по разделам Home Assistant.
Поднимаю локальную версию ESPHome на Docker’е (под Windows 10)
Проделанная вами работа — х…. оказалась ненужной. Переделать.
В общем, не нужно было ставить локальный Home Assistant. HACS тоже не нужен. Нужен только Docker Desktop и последняя версия Windows 10.
Схема та же, но не совсем.
- На диске C: создал папку doc_pro. На самом деле не создавал, а взял уже созданную из примера выше.
- В этой папке создаю папку esphome
- В папке esphome создаю файлы: start.cmd и docker-compose.yml, а потом заполняю их кодом который привожу ниже ниже.
- Запускаю start.cmd
- Захожу в браузер, вбиваю адрес http://IP_МОЕЙ_ЛОКАЛЬНОЙ_МАШИНЫ:6052/
- Ввожу логин/пароль (см. файл docker-compose.yml).
- ???????
- PROFIT!
Содержимое start.cmd
cd cd C:\doc_pro\esphome\ docker-compose up -d
Содержимое docker-compose.yml
services: esphome: container_name: esphome image: esphome/esphome privileged: true environment: - USERNAME=ИМЯ_ПОЛЬЗОВАТЕЛЯ - PASSWORD=ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ - ESPHOME_DASHBOARD_USE_PING=true #Fur einen direkten Zugriff, ohne Internet. Aufruf: http://localhost:6052 oder http://ServerIP:6052 ports: - 6052:6052 #Сюда вписать IP роутера dns: - 192.168.0.1 volumes: - ./esphome:/config:rw #Labels fur ReverseProxy, siehe: https://www.libe.net/traefik labels: - "traefik.enable=true" - "traefik.http.routers.esphome.rule=Host(`esphome.domain.tld`)" - "traefik.http.routers.esphome.entrypoints=web" - "traefik.http.routers.esphome.entrypoints=websecure" - "traefik.http.routers.esphome.tls.certresolver=myresolver" - "traefik.http.services.esphome.loadbalancer.server.port=6052" restart: always
Пароль и имя пользователя нужно будет поменять на какой-нибудь свой. Их и придётся вводить (см. п.6 выше по тексту).
Итак. Перешёл, авторизовался, вижу почти пустую страницу. Там и добавил новое устройство.
Сразу после создания Install прожимать не стал, а выбрал Skip. Открыл конфиг устройств (Edit). Вставил уже имевшийся у меня конфиг, запустил инсталляцию, выбрал Manual Download.
Компиляция шла долго, но на этот раз завершилась успешно. На выходе я получил файл с расширением bin. Скачал его.
Подключил ESP8266 к компику, запустил esphome-flasher и загнал в него полученный bin’арник и прошил контроллер.
Скачал на Гитхабе по ссылке выше.
После этого устройство определилось на основном Home Assistant (в разделе ESPHome) и появилось в разделе «Устройства и службы».
Там я прожал кнопку «Настроить» и после перезагрузки всё заработало.
Главное, чтобы конфиге на локальной и серверной версии совпадали. Особенно важны секции api и ota.
В локальной версии всё ещё OFFLINE, но так и должно быть. Локальная версия у меня только для компиляции скетчей.
Т.е. все эти ошибки, что лезли во время компиляции в ESPHome и роняли коробочку с Home Assistant, были из за слабости железа! Зато теперь не нужно нагружать компиляцией слабенькое оборудование.
Ну и славно. Жаль много времени заняло. Паять сегодня уже поздно.
Напишите комментарий