Yapay zekâ tarafından English dilinden çevrildi ·
Banerjee haklı, e-posta ile gönderilen bir rapor yok. Bunu yaklaşık 20 enerji sayacı için kendi sunucumuzda çalışan küçük bir betikle yapıyoruz; betik geçmiş verileri sunan API üzerine kurulu. Yarım günlük bir iş ve bir yıldır dokunulmadan çalışıyor.Bir increase toplama işlevi isteyin. gas_m3 gibi bir sayaç için her zaman aralığında ne kadar arttığını verir ve sayaç sıfırlanırsa (firmware yüklemeniz gibi) eksiye düşmek yerine sıfırdan saymaya devam eder.
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
Betiği Pazartesi günleri saat 07:00’de cron ile çalıştırın. Öğrendiklerimiz:
- Gün aralıkları UTC günleridir. Finans yerel günleri istiyorsa 1h isteyip saatlik değerleri kendiniz toplayın.
- API anahtarına Read-only ön ayarını verin ve IP allowlist’e yalnızca bu sunucuyu ekleyin. Anahtarlar varsayılan olarak 90 gün sonra sona erer; bir hatırlatıcı kurun ya da daha uzun bir süre (en fazla bir yıl) seçin.
- Anahtar başına istek başına en fazla 50 anahtar ve 10.000 nokta vardır; haftalık saatlik okuma için bu bile fazlasıyla yeterli.
Bir sunucu çalıştırmak istemiyorsanız, bir Schedule tetikleyicisi ve bir HTTP isteği bloğu içeren bir akış, kendi raporlama servisinizi çağırarak raporu oluşturup gönderebilir. Biz betiği tercih ettik.Exporting data her iki seçeneği de listeler.
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.

