feat: Avtex Smart Sleep Engine - initial release for Android and Home Assistant
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# Avtex — Smart Sleep & Motion Engine for Home Assistant
|
||||
|
||||
<p align="center">
|
||||
<img src="app/src/main/res/drawable/app_logo.png" width="160" alt="Avtex Logo" style="border-radius: 28px;" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<b>Легковесное Android-приложение для мгновенной фиксации сна и пробуждения с интеграцией в Home Assistant (HAC)</b><br>
|
||||
<i>Оптимизировано для OnePlus (OxygenOS / ColorOS) и устройств с ненормированным рабочим графиком.</i>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## 🌟 Ключевые возможности
|
||||
|
||||
* **Мгновенная фиксация пробуждения (0% расхода батареи)**:
|
||||
Использует аппаратный сопроцессор `Sensor.TYPE_SIGNIFICANT_MOTION`. Как только вы берете телефон в руки после сна, сигнал пробуждения моментально передается в умный дом.
|
||||
* **Детекция сна при ненормированном графике**:
|
||||
Связка таймера покоя (по умолчанию 20 мин при выключенном экране) и нейросетевых классификаций **Google Play Services Sleep API** (`SleepClassifyEvent`). Никаких жестких привязок к часам (23:00–07:00).
|
||||
* **Полная совместимость с Home Assistant (HAC)**:
|
||||
* **Webhook URL**: отправка JSON-событий `{"event": "sleep_started" | "sleep_ended", "state": "asleep" | "awake", ...}`.
|
||||
* **REST State API**: прямое обновление сенсора `binary_sensor.phone_sleep` через Long-Lived Access Token.
|
||||
* **Local Broadcast Intent**: `com.example.avtex.SLEEP_STATE_CHANGED` для Tasker / Home Assistant Companion App прямо на телефоне.
|
||||
* **Устойчивость к убийцам процессов OnePlus**:
|
||||
* Реализован как Foreground Service с типом `specialUse`.
|
||||
* Интерактивный экран со вспомогательными кнопками перехода в системные настройки OxygenOS (отключение оптимизации батареи, включение автозапуска).
|
||||
* **Премиальный дизайн в стиле Cyber Obsidian / Glassmorphism**:
|
||||
* Jetpack Compose & Material 3.
|
||||
* Тонкие неоновые контуры, стеклянные карточки, динамический пульсирующий баннер состояния.
|
||||
* Интерактивная лента аудита событий сенсоров в реальном времени.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### 1. Сборка APK
|
||||
|
||||
Для сборки отладочной версии:
|
||||
```bash
|
||||
./gradlew assembleDebug
|
||||
```
|
||||
|
||||
Для сборки оптимизированного подписанного Release APK:
|
||||
```bash
|
||||
./gradlew assembleRelease
|
||||
```
|
||||
Файл будет создан в `app/build/outputs/apk/release/app-release.apk`.
|
||||
|
||||
### 2. Установка через ADB
|
||||
```bash
|
||||
adb install -r app/build/outputs/apk/release/app-release.apk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Настройка Home Assistant (Пример Webhook автоматизации)
|
||||
|
||||
В файле `automations.yaml` или в визуальном редакторе Home Assistant:
|
||||
|
||||
```yaml
|
||||
alias: "Avtex: Автоматизация сна и пробуждения"
|
||||
trigger:
|
||||
- platform: webhook
|
||||
webhook_id: avtex_sleep
|
||||
action:
|
||||
- choose:
|
||||
- conditions: "{{ trigger.json.state == 'asleep' }}"
|
||||
sequence:
|
||||
- service: light.turn_off
|
||||
target:
|
||||
entity_id: all
|
||||
- service: climate.set_preset_mode
|
||||
data:
|
||||
preset_mode: sleep
|
||||
target:
|
||||
entity_id: climate.bedroom
|
||||
- conditions: "{{ trigger.json.state == 'awake' }}"
|
||||
sequence:
|
||||
- service: scene.turn_on
|
||||
target:
|
||||
entity_id: scene.morning_lights
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Стек технологий
|
||||
* **Язык**: Kotlin 2.3+
|
||||
* **UI**: Jetpack Compose, Material 3, Navigation
|
||||
* **Сенсоры**: Android Sensor Hub (`TYPE_SIGNIFICANT_MOTION`), Google Play Services Location / Sleep API
|
||||
* **Сеть**: OkHttp 4.12
|
||||
* **Хранилище настроек**: Jetpack DataStore Preferences
|
||||
Reference in New Issue
Block a user