From d1641fb71a192b2d333eb364a76529d184ad0eb9 Mon Sep 17 00:00:00 2001 From: Artem Kokos Date: Sat, 28 Mar 2026 19:01:38 +0700 Subject: [PATCH] Update README.md --- README.md | 97 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 86 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index f5a4e55..1b8945a 100644 --- a/README.md +++ b/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) -- [Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Flutter learning resources](https://docs.flutter.dev/reference/learning-resources) +- Flutter 3.x / Dart +- Riverpod -- управление состоянием +- 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`. + +## Лицензия + +Частный проект.