Files
ignis_app/README.md
2026-03-28 19:01:38 +07:00

93 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ignis App
Мобильное приложение для управления умными лампами WiZ через self-hosted сервер [Ignis Core](https://git.akokos.ru).
## Возможности
- **Мульти-дом** -- поддержка нескольких серверов Ignis (квартира, дача, друзья). Каждый дом -- отдельный сервер со своим URL и API-ключом.
- **Группы ламп** -- создание, удаление, управление. При создании группы можно выбрать нужные лампы из списка обнаруженных устройств, пересканировать сеть.
- **Управление освещением:**
- Включение/выключение
- Яркость 10--100% с шагом 10%
- Цветовая температура 2700--6500K с шагом 100K
- RGB-цвет через HSV-пикер
- Сцены (загружаются с сервера)
- Таймер "включить на 4 часа"
- **Расписания** -- одноразовые таймеры и cron-задачи с выбором дней недели. Просмотр и отмена активных задач.
## Стек
- Flutter 3.x / Dart
- Riverpod -- управление состоянием
- Dio -- HTTP-клиент
- SharedPreferences -- локальное хранение настроек
## Структура проекта
```
lib/
├── main.dart -- точка входа, тема, роутер
├── models/
│ └── home_config.dart -- модель "дома" (сервер)
├── services/
│ ├── api_client.dart -- обёртка Dio для Ignis API
│ └── settings_service.dart -- хранение домов в SharedPreferences
├── providers/
│ └── providers.dart -- Riverpod-провайдеры
├── screens/
│ ├── homes_screen.dart -- список домов
│ ├── home_edit_screen.dart -- добавление/редактирование дома
│ ├── remote_screen.dart -- пульт управления группами
│ ├── group_edit_screen.dart -- создание группы
│ └── schedules_screen.dart -- расписания
└── widgets/
├── group_card.dart -- карточка группы с управлением
└── color_picker.dart -- HSV-пикер цвета
```
## Сборка
```bash
# Зависимости
flutter pub get
# Debug-запуск
flutter run
# Release APK
flutter build apk --release
```
APK: `build/app/outputs/flutter-apk/app-release.apk`
## Настройка
При первом запуске приложение попросит добавить "дом" -- указать адрес сервера Ignis и API-ключ. После этого откроется пульт управления группами.
Для добавления второго дома: кнопка "домик" в левом верхнем углу пульта -> экран домов -> кнопка "+".
## API
Приложение работает с [Ignis Core API](https://git.akokos.ru) -- self-hosted бэкенд на FastAPI для управления лампами WiZ по локальной сети. Используемые эндпоинты:
| Метод | Путь | Назначение |
|--------|-----------------------------------|-----------------------------|
| GET | `/devices` | Список ламп |
| GET | `/devices/groups` | Список групп |
| GET | `/devices/scenes` | Доступные сцены |
| POST | `/devices/groups` | Создать группу |
| DELETE | `/devices/groups/{id}` | Удалить группу |
| POST | `/devices/rescan` | Пересканировать сеть |
| POST | `/control/group/{id}` | Управление группой |
| GET | `/control/group/{id}/status` | Статус группы |
| POST | `/schedules/once` | Одноразовый таймер |
| POST | `/schedules/cron` | Cron-расписание |
| GET | `/schedules/tasks` | Список задач |
| DELETE | `/schedules/{job_id}` | Отменить задачу |
Авторизация: заголовок `X-API-Key`.
## Лицензия
Частный проект.