No description
Find a file
2026-05-26 02:57:06 +04:00
.gitignore rename secret file 2026-05-26 01:19:34 +04:00
airpurifier.yaml wip use c3 for air purifier 2026-05-26 02:52:55 +04:00
cam.yaml add ota password 2026-05-26 01:15:49 +04:00
flake.lock secrets 2026-05-26 01:11:30 +04:00
flake.nix secrets 2026-05-26 01:11:30 +04:00
README.md fix readme formatting 2026-05-26 02:57:06 +04:00

🏠 Smart Home IoT Nodes (ESPHome + NixOS)

Репозиторий со спецификациями умных устройств на базе ESPHome, интегрированных в Home Assistant.

Особенность репозитория — полная поддержка операционной системы NixOS. Сборка и прошивка конфигураций упакованы в изолированное FHS-окружение через Nix Flakes, что решает проблему совместимости бинарных тулчейнов компилятора (PlatformIO) с архитектурой Nix.


📂 Структура репозитория

  • purifier.yaml — Конфигурация умного DIY-очистителя воздуха (ESP32-C3 + вентилятор Arctic P14).
  • cam.yaml — Конфигурация беспроводной камеры стриминга со вспышкой (ESP32-CAM).
  • flake.nix — Декларативное описание FHS-окружения для запуска утилит ESPHome на NixOS.
  • secrets.yaml.example — Шаблон для ваших приватных данных (пароли Wi-Fi, ключи OTA).

🛠️ Устройства в репозитории

1. DIY Очиститель воздуха (purifier.yaml)

Построен на базе полого цилиндрического антибактериального фильтра от Xiaomi и мощного кулера Arctic P14 Max.

  • Контроллер: ESP32-C3
  • Управление скоростью: Плавный ШИМ (PWM) на частоте 25 кГц (убирает писк мотора) на GPIO4.
  • Мониторинг: Датчик реальных оборотов кулера (RPM) через тахометр на GPIO5.
  • Питание: Единый БП 12V + DC-DC понижающий модуль Mini360 (до 5V) для питания платы ESP.

2. Видеокамера общего назначения (cam.yaml)

Модуль мониторинга на базе популярной платы ESP32-CAM с распаянной PSRAM.

  • Контроллер: ESP32 (микросхема esp32dev)
  • Стриминг: Локальный веб-сервер на порту 8080 (режим потокового видео stream).
  • Освещение: Управление встроенным мощным светодиодом (вспышкой) на GPIO4 с поддержкой диммирования (LEDC).
  • Разрешение: Оптимальные SVGA (800x600) при качестве JPEG 10 для баланса частоты кадров и нагрузки на Wi-Fi.

🚀 Быстрый старт на NixOS / Nix с Flakes

1. Настройка секретов

Перед компиляцией скопируйте шаблон секретов и заполните его своими данными авторизации Wi-Fi:

cp secrets.yaml.example secrets.yaml

Отредактируйте secrets.yaml, указав имя вашей домашней сети (wifi_ssid), пароль (wifi_password) и пароли для беспроводного обновления плат (ota_password).

⚠️ Важно: Файл secrets.yaml уже внесен в .gitignore репозитория. Никогда не отправляйте свои реальные пароли в публичный коммит!

2. Вход в среду разработки

Активируйте изолированное окружение, в котором развернуты все утилиты компиляции и прошивки:

nix develop

При первом запуске Nix скачает актуальный ESPHome, PlatformIO и необходимые системные библиотеки (glibc, zlib, libusb).

3. Удаленная прошивка по воздуху (OTA)

Если ваши устройства уже были один раз добавлены в сеть через веб-интерфейс ESPHome, дальнейшие обновления конфигурации выполняются без проводов:

Для очистителя воздуха:

esphome run purifier.yaml

Для камеры:

esphome run cam.yaml

Если утилита mDNS на компьютере не может автоматически обнаружить устройство в подсети, явно укажите IP-адрес платы:

esphome run purifier.yaml --device 192.168.1.150

🔌 Первичная прошивка по USB (Проводной метод)

Если вам нужно прошить чистую плату через дата-кабель, убедитесь, что ваш пользователь в NixOS имеет доступ к последовательным портам.

Добавьте в ваш системный /etc/nixos/configuration.nix:

users.users.YOUR_USERNAME.extraGroups = [ "dialout" "uucp" ];
services.udev.packages = with pkgs; [ platformio-core.udev ];

После применения (sudo nixos-rebuild switch) перезагрузите компьютер.

Подключите плату по USB, войдите в nix develop и запустите ту же команду esphome run <файл>.yaml. Утилита сама предложит выбрать обнаруженный COM-порт (например, /dev/ttyACM0).


🎛️ Интеграция в Home Assistant

Благодаря нативному компоненту api:, устройства будут автоматически обнаружены вашим сервером Home Assistant через интеграцию ESPHome.

  • У очистителя появится ползунок скорости вентилятора (0-100%) и сенсор оборотов (RPM).
  • У камеры появится сущность camera со стримом, а также выключатель встроенного фонарика.