Что это
Puther Devices собирает статусы плат: версия прошивки, аптайм, CRC образа. Агент на устройстве раз в минуту шлёт компактный JSON на ingest. Ниже — актуальный контракт heartbeat, которым пользуются платы серии PD-12.
Heartbeat API
import json, time, hashlib, urllib.request
def heartbeat(device_id: str, fw: str, ingest: str) -> None:
payload = {
"ts": int(time.time()),
"fw": fw,
"uptime_s": int(open("/proc/uptime").read().split()[0].split(".")[0]),
"crc32": hashlib.sha256(fw.encode()).hexdigest()[:8],
}
req = urllib.request.Request(
f"{ingest}/v1/devices/{device_id}/heartbeat",
data=json.dumps(payload).encode(),
headers={"Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(req, timeout=8) as resp:
if resp.status not in (200, 204):
raise RuntimeError(f"ingest {resp.status}")
Стенды
| Код | Плата | Прошивка | Статус |
|---|---|---|---|
| PD-12-A | STM32G0 | 1.4.2 | stable |
| PD-12-B | ESP32-C3 | 1.5.0-rc1 | lab |
| PD-09 | nRF52840 | 0.9.8 | frozen |