Update README.md
This commit is contained in:
97
README.md
97
README.md
@@ -1,17 +1,92 @@
|
|||||||
# ignis_app
|
# Ignis App
|
||||||
|
|
||||||
A new Flutter project.
|
Мобильное приложение для управления умными лампами WiZ через self-hosted сервер [Ignis Core](https://git.akokos.ru).
|
||||||
|
|
||||||
## Getting Started
|
## Возможности
|
||||||
|
|
||||||
This project is a starting point for a Flutter application.
|
- **Мульти-дом** -- поддержка нескольких серверов Ignis (квартира, дача, друзья). Каждый дом -- отдельный сервер со своим URL и API-ключом.
|
||||||
|
- **Группы ламп** -- создание, удаление, управление. При создании группы можно выбрать нужные лампы из списка обнаруженных устройств, пересканировать сеть.
|
||||||
|
- **Управление освещением:**
|
||||||
|
- Включение/выключение
|
||||||
|
- Яркость 10--100% с шагом 10%
|
||||||
|
- Цветовая температура 2700--6500K с шагом 100K
|
||||||
|
- RGB-цвет через HSV-пикер
|
||||||
|
- Сцены (загружаются с сервера)
|
||||||
|
- Таймер "включить на 4 часа"
|
||||||
|
- **Расписания** -- одноразовые таймеры и cron-задачи с выбором дней недели. Просмотр и отмена активных задач.
|
||||||
|
|
||||||
A few resources to get you started if this is your first Flutter project:
|
## Стек
|
||||||
|
|
||||||
- [Learn Flutter](https://docs.flutter.dev/get-started/learn-flutter)
|
- Flutter 3.x / Dart
|
||||||
- [Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
|
- Riverpod -- управление состоянием
|
||||||
- [Flutter learning resources](https://docs.flutter.dev/reference/learning-resources)
|
- Dio -- HTTP-клиент
|
||||||
|
- SharedPreferences -- локальное хранение настроек
|
||||||
|
|
||||||
For help getting started with Flutter development, view the
|
## Структура проекта
|
||||||
[online documentation](https://docs.flutter.dev/), which offers tutorials,
|
|
||||||
samples, guidance on mobile development, and a full API reference.
|
```
|
||||||
|
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`.
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
Частный проект.
|
||||||
|
|||||||
Reference in New Issue
Block a user