Traduit de English par IA ·
Banerjee a raison, il n’existe pas de rapport envoyé par e-mail. Nous faisons cela pour une vingtaine de compteurs d’énergie avec un petit script sur notre propre serveur, basé sur l’API d’historique. Cela représente une demi-journée de travail et il tourne sans modification depuis un an.Demandez l’agrégat increase. Pour un compteur comme gas_m3, il donne la hausse par intervalle, et il gère un redémarrage du compteur (par exemple après votre flash de firmware) en recomptant à partir de zéro au lieu de passer en négatif.
import requests, time, smtplib
from email.message import EmailMessage
BASE = "https://<host>/tenant/<tenantId>"
KEY = "sk_live_..." # Read-only telemetry key, IP allowlist = this server
now = int(time.time() * 1000)
week_ago = now - 7 * 24 * 3600 * 1000
r = requests.get(BASE + "/api/telemetry/series", headers={"Authorization": "Bearer " + KEY},
params={"kind": "iot_device", "entityId": "<meter device id>", "keys": "gas_m3",
"from": week_ago, "to": now, "bucket": "1h", "agg": "increase"}, timeout=30)
r.raise_for_status()
# sum the hourly increases and mail the total to finance
Nous le lançons avec cron à 07:00 le lundi. Quelques enseignements :
- Les intervalles journaliers sont des jours UTC. Si la finance veut des jours locaux, demandez des intervalles de 1h et additionnez-les vous-même.
- Donnez à la clé API le préréglage Read-only et une liste d’adresses IP autorisées ne contenant que ce serveur. Les clés expirent par défaut après 90 jours : programmez un rappel ou choisissez une durée plus longue (un an maximum).
- Au maximum 50 clés et 10 000 points par clé et par requête, ce qui est largement suffisant pour une lecture horaire hebdomadaire.
Si vous préférez ne pas faire tourner de serveur, un flux avec un déclencheur Schedule et un bloc de requête HTTP peut appeler votre propre service de reporting pour créer et envoyer le rapport. Nous avons opté pour le script.Exporting data présente ces deux options.
Banerjee’s right, there’s no mailed report. We do this for about 20 energy meters with a small script on our own server, built on the history API. It’s half a day of work and has run untouched for a year.
Ask for the increase aggregate. For a counter like gas_m3 it gives you how much it rose per bucket, and it handles a counter restart (your firmware flash) by counting from zero instead of going negative.
import requests, time, smtplib
from email.message import EmailMessage
BASE = "https://<host>/tenant/<tenantId>"
KEY = "sk_live_..." # Read-only telemetry key, IP allowlist = this server
now = int(time.time() * 1000)
week_ago = now - 7 * 24 * 3600 * 1000
r = requests.get(BASE + "/api/telemetry/series", headers={"Authorization": "Bearer " + KEY},
params={"kind": "iot_device", "entityId": "<meter device id>", "keys": "gas_m3",
"from": week_ago, "to": now, "bucket": "1h", "agg": "increase"}, timeout=30)
r.raise_for_status()
# sum the hourly increases and mail the total to finance
Run it from cron at 07:00 on Mondays. A few things we learned:
- Day buckets are UTC days. If finance wants local days, ask for 1h and add them up yourself.
- Give the API key the Read-only preset and an IP allowlist with just that server. Keys expire after 90 days by default, so set a reminder or a longer expiry (max a year).
- At most 50 keys and 10,000 points per key per request, which is nothing for a weekly hourly read.
If you’d rather not run a server, a flow with a Schedule trigger and an HTTP request block can poke your own reporting service to build and send it. We went with the script.
Exporting data lists both options.

