Files
domestic-scripts/petkit_roster.py
hermes-home dace7ab46c Add PetKit food watchdog + D4H raw probes
- petkit_food_check.py: watchdog для state.food (алярм мало/пусто, сброс при доливе)
- petkit_raw.py, petkit_roster.py: прямые запросы к API для отладки
- .gitignore: исключить .food_state (runtime состояние)
2026-08-04 16:02:45 +00:00

47 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""Сырой вывод PetKit device roster (что реально возвращает API), без парсинга."""
import asyncio, json, os
from datetime import datetime
from aiohttp import ClientSession
from petkitaio import PetKitClient
from petkitaio.constants import Endpoint
HERE = os.path.dirname(os.path.abspath(__file__))
def load_env():
p = os.path.join(HERE, ".env")
for line in open(p):
line = line.strip()
if line and not line.startswith("#") and "=" in line:
k, _, v = line.partition("=")
os.environ.setdefault(k.strip(), v.strip().strip('"').strip("'"))
async def main():
load_env()
s = ClientSession()
c = PetKitClient(
os.environ["PETKIT_EMAIL"],
os.environ["PETKIT_PASSWORD"],
s,
os.environ.get("PETKIT_REGION", "Russian Federation"),
)
await c.login()
print("=== AUTH ===")
print("user_id:", c.user_id, " group_ids:", list(c.group_ids), " base:", c.base_url)
url = f"{c.base_url}{Endpoint.DEVICE_ROSTER}"
hdr = await c.create_header()
day = str(datetime.now().date()).replace("-", "")
print(f"\n=== RAW DEVICE ROSTER (day={day}) ===")
for gid in c.group_ids:
data = {"day": day, "groupId": gid}
resp = await c._post(url, hdr, data)
print(f"--- group {gid} ---")
print(json.dumps(resp, ensure_ascii=False, indent=2))
await s.close()
asyncio.run(main())