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 состояние)
This commit is contained in:
46
petkit_roster.py
Normal file
46
petkit_roster.py
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/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())
|
||||
Reference in New Issue
Block a user