Add README: установка, CLI, watchdog, регионы, D4H fix

This commit is contained in:
hermes-home
2026-08-04 16:11:14 +00:00
parent dace7ab46c
commit fbd33b8419

89
README.md Normal file
View File

@@ -0,0 +1,89 @@
# domestic-scripts
Домашние скрипты Hermes. Пока — интеграция с умными устройствами **PetKit** (кормушка и автопоилка).
## Структура
| Файл | Назначение |
|---|---|
| `petkit_cli.py` | Основной CLI — статус, кормление, управление фонтаном, дамп |
| `petkit_food_check.py` | Watchdog уровня корма — для cron-уведомлений |
| `petkit_raw.py` | Прямой HTTP-запрос к API PetKit (отладка, без парсинга) |
| `petkit_roster.py` | Сырой вывод `device_roster` — какие устройства на аккаунте |
## Установка / настройка
```bash
# venv (изолированный, не трогаем систему)
cd domestic-scripts
python3 -m venv .venv
.venv/bin/pip install petkitaio
# креды — создать .env рядом со скриптами (НЕ коммитим!)
cat > .env <<'EOF'
PETKIT_EMAIL=ваш@email
PETKIT_PASSWORD=пароль
PETKIT_REGION=Russian Federation
EOF
```
`.env` и `.venv` в `.gitignore` — в репо не попадают.
## CLI (`petkit_cli.py`)
```bash
.venv/bin/python petkit_cli.py status # статус всех устройств
.venv/bin/python petkit_cli.py feed 10 # покормить 10 г (первый фидер)
.venv/bin/python petkit_cli.py fountain smart # фонтан: режим smart/normal
.venv/bin/python petkit_cli.py dump # полный дамп данных (после обработки)
```
## Watchdog корма (`petkit_food_check.py`)
Следит за датчиком уровня корма `state.food` фидера:
- `food: 2` — достаточно
- `food: 1` — на исходе → **алерт «НА ИСХОДЕ»**
- `food: 0` — почти пусто → **алерт «ПОЧТИ ПУСТО»**
- возврат к `2` после долива → **«корм долили» (сброс)**
Логика:
- Алертит **только при переходе** состояния (не спамит при каждом запуске).
- Последний уровень хранится в `.food_state` (runtime, в `.gitignore`).
- Печатает в stdout: **пусто** = тихий прогон, **непусто** = событие для уведомления.
### Cron (watchdog no_agent)
Обёртка `~/./scripts/petkit-food-check.sh` вызывает скрипт в фоне. Крон каждые 4ч:
непустой stdout → уведомление в чат; пустой → тишина. Фиксируется через `cronjob no_agent=true`.
## ⚠️ Важно про модели PetKit
### Семейный (вторичный) аккаунт
Учётка PetKit рассчитана на один активный вход. Использование API **выкидывает из мобильного приложения**. Решение — завести **family share** на вторичный аккаунт и логиниться им. Устройства должны быть расшарены на этот аккаунт (в приложении: основная учётка → Family).
### Регионы
Регистр регионов задаётся по имени страны (например `Russian Federation` → сервер `api-ru.petkit.cn`). Неверный регион даёт ошибку `PetKit Error 125: Unregistered e-mail`.
### Поддержка типов (фидер D4H)
Библиотека `petkitaio` классифицирует фидеры по списку `FEEDER_LIST` в
`.venv/.../petkitaio/constants.py`. По умолчанию там нет типа **`D4H`** (YumShare Solo / D4-серия) —
из-за этого фидер молча игнорируется (`feeders: {}`), хотя в облаке есть.
**Фикс:** добавить `D4H` в `FEEDER_LIST`:
```python
FEEDER_LIST = ['D3', 'D4', 'D4s', 'D4H', 'Feeder', 'FeederMini']
```
> Правка в venv слетает при переустановке `petkitaio`. Если обновили пакет — повторить.
### Уровень корма
Поле уровня находится в `data['state']['food']`. `feedState` содержит статистику кормлений
(суммарные граммы, число раз, время кормёжек).
## Устройства (текущие)
| Устройство | Облачный id | Тип |
|---|---|---|
| YUMSHARE SOLO WITH CAMERA (фидер) | 300027445 | D4H |
| EVERSWEET 3 PRO (UVC) (фонтан) | 400081877 | W5 |
> id могут отличаться на другои аккаунте — уточняйте через `petkit_cli.py status`.