Telegram API
Az ADA P1 Meter az okosmérő eredeti, nyers telegram formátumát is szolgáltatja. Ez a DSMR szabvány szerinti strukturált szöveges formátum, amit szinte minden európai okosmérő és a legtöbb energiafigyelő szoftver (DSMR-logger, OpenDatalogger, Python/Node.js parserek) natívan megért.
Végpont
GET http://okosvillanyora.local:8989/telegram
Vagy IP-vel:
GET http://192.168.x.x:8989/telegram
Mikor használd?
Használd a Telegram végpontot, ha:
- Már van DSMR-kompatibilis feldolgozó szoftvered
- Saját parsert akarsz írni, és a nyers OBIS kódokkal szeretnél dolgozni
- Debuggolsz, és látni akarod, pontosan mit küld a mérő
- Olyan eszközbe integrálsz, ami nem ért JSON-t, csak soros szöveget
Minden más esetben a JSON végpont egyszerűbb.
Frissítési gyakoriság
A Telegram szöveg 10 másodpercenként frissül, minden kérésnél a legfrissebbet kapod.
Példakimenet
/AUX5440252420024796
0-0:1.0.0(250329112720W)
0-0:42.0.0(AUX1020320024796)
0-0:96.1.0(440252420024796)
0-0:96.14.0(0002)
0-0:96.50.68(ON)
1-0:1.8.1(012345.678*kWh)
1-0:1.8.2(009876.543*kWh)
1-0:2.8.1(000123.456*kWh)
1-0:2.8.2(000078.901*kWh)
1-0:1.7.0(01.234*kW)
1-0:2.7.0(00.000*kW)
1-0:21.7.0(00.432*kW)
1-0:41.7.0(00.401*kW)
1-0:61.7.0(00.401*kW)
1-0:32.7.0(231.1*V)
1-0:52.7.0(230.8*V)
1-0:72.7.0(231.0*V)
1-0:31.7.0(001*A)
1-0:51.7.0(001*A)
1-0:71.7.0(001*A)
0-1:24.1.0(003)
0-1:96.1.1(4730313233343536)
0-1:24.2.3(250329110000W)(04321.987*m3)
!A1B2
Formátum áttekintés
Minden sor egy mérési érték, a következő felépítéssel:
<OBIS-kód>(<érték>[*<mértékegység>])
- Az OBIS kód (pl.
1-0:1.8.1) az adott mérés nemzetközi azonosítója - Az érték lehet szám, időbélyeg vagy szöveg
- A mértékegység csillag után jön:
*kWh,*kW,*V,*A,*m3 - A telegram első sora (
/...) a gyártói azonosító - Az utolsó sor (
!XXXX) egy CRC16 ellenőrzőösszeg
Gyakoribb OBIS kódok
| OBIS kód | Jelentés |
|---|---|
0-0:1.0.0 | Időbélyeg (YYMMDDhhmmssX – S=nyári, W=téli idő) |
0-0:42.0.0 | COSEM logikai eszköznév |
0-0:96.1.0 | Mérő gyári száma |
0-0:96.14.0 | Aktuális tarifa |
0-0:96.50.68 | Kismegszakító állapota |
1-0:1.8.0 | Összes import energia (kWh) |
1-0:1.8.1 / 1-0:1.8.2 | T1 / T2 tarifa import |
1-0:2.8.0 | Összes export energia |
1-0:2.8.1 / 1-0:2.8.2 | T1 / T2 tarifa export |
1-0:1.7.0 / 1-0:2.7.0 | Pillanatnyi import / export (kW) |
1-0:21.7.0 / 41.7.0 / 61.7.0 | Fázisonkénti import |
1-0:22.7.0 / 42.7.0 / 62.7.0 | Fázisonkénti export |
1-0:32.7.0 / 52.7.0 / 72.7.0 | L1 / L2 / L3 feszültség (V) |
1-0:31.7.0 / 51.7.0 / 71.7.0 | L1 / L2 / L3 áram (A) |
0-1:24.2.3 | Gáz fogyasztás időbélyeggel |
0-2:24.2.1 | Víz fogyasztás (MBus 2. csatorna) |
Használat Python-nal
A dsmr-parser csomaggal minden telegram automatikusan feldolgozható:
import requests
from dsmr_parser.parsers import TelegramParser
from dsmr_parser import telegram_specifications
# A legtöbb magyar/holland mérőhöz:
parser = TelegramParser(telegram_specifications.V5)
raw = requests.get('http://okosvillanyora.local:8989/telegram').text
telegram = parser.parse(raw)
print("Import T1:", telegram.ELECTRICITY_USED_TARIFF_1.value, "kWh")
print("Most:", telegram.CURRENT_ELECTRICITY_USAGE.value * 1000, "W")
Használat Node.js-szel
const fetch = require('node-fetch');
async function read() {
const raw = await fetch('http://okosvillanyora.local:8989/telegram').then(r => r.text());
const lines = raw.split('\n');
const line = lines.find(l => l.startsWith('1-0:1.7.0'));
if (line) {
const match = line.match(/\(([\d.]+)\*kW\)/);
if (match) console.log('Import:', parseFloat(match[1]), 'kW');
}
}
read();
Használat Bash-sel
# Pillanatnyi import egyetlen sorból
curl -s http://okosvillanyora.local:8989/telegram \
| grep '1-0:1.7.0' \
| grep -oE '[0-9]+\.[0-9]+'
Saját feldolgozó
Ha saját parsert írsz, érdemes tudni, hogy:
- A sorok
\nvégűek, a telegram többsoros - Az első sor
/karakterrel kezdődik, ez az azonosító - Az utolsó sor
!karakterrel kezdődik, utána jön a CRC16 - Az értékek zárójelben vannak
- Egy sorban több zárójel is lehet (pl. gáz:
(timestamp)(érték*m3)) - Az időbélyeg formátuma:
YYMMDDhhmmss+S(nyári) vagyW(téli)