- Nix 100%
| .gitignore | ||
| airpurifier.yaml | ||
| cam.yaml | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
🏠 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со стримом, а также выключатель встроенного фонарика.