Repository navigation
Rate limits
PVOutput allows 60 requests an hour, 300 for donors, per API key. The integration
reads the X-Rate-Limit-* headers of every answer, so it always knows how many
requests are left and when the hour resets.
In this order:
- Live statuses: the last two upload intervals go first, before any history.
- Live downloads (fields in Download mode): one request per upload interval.
- History: backlog, reuploads, daily totals, PVOutput history downloads.
Two reserves protect the order:
- 5 requests are always kept in hand. The limit belongs to the API key, so another uploader on the same key (e.g. IoTaWatt) still has room.
- History stops early enough to leave a request for every live status due before the hour resets, plus one. On a 5-minute site with 40 minutes to go, history stops at 5 + 8 + 1 = 14 requests left; near the end of the hour, at 7. A long backlog uses almost the whole hour and never holds up live data.
Requests are at least 0.3 seconds apart, so a backlog goes out at a steady pace.
Uploads pause until PVOutput's reset time and continue where they stopped. The pause survives restarts. Rate limit pause until shows when it ends; Requests left this hour shows the allowance.
| Account | Statuses per request | Three weeks of 5-minute statuses |
|---|---|---|
| Standard | 30 | about 202 requests (and only 14 days are accepted) |
| Donor | 100 | about 61 requests |
Battery fields go in the same batches, so they cost nothing extra.
Both uploaders count against the same 60/300. The 5-request reserve keeps IoTaWatt's live uploads going while this integration works through history. If you use a separate API key for each, there is no sharing at all.
Getting started
Running it
Reference