Add README: установка, CLI, watchdog, регионы, D4H fix
This commit is contained in:
89
README.md
Normal file
89
README.md
Normal 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`.
|
||||
Reference in New Issue
Block a user