E.ON Holley DTSD545 háromfázisú okos fogyasztásmérő adatainak kiolvasása

Fórumok

A népszerű ELMŰ okos mérő kalandok témához csatlakozva én is szeretném megosztani a saját tapasztalataimat.

Leírás az ügyfelek számára: https://www.eon.hu/content/dam/eon/eon-hungary/documents/Lakossagi/aram/muszaki-ugyek/fogyasztasmerok/Holley-DDSD285-DTSD545-v01.pdf

A 14. P1 felhasználói port fejezetben vannak felsorolva a mérőből kiolvasható OBIS kódok.

Esetemben a napelemes rendszer igényelte a 3 fázist és az ad-vesz mérőt. A szabványos mérőhely kialakításakor egy viszonylag nagy ajtóval rendelkező szekrényt szereltek fel, amin keresztül hozzá lehet férni a felső részen lévő kismegszakítókhoz és szerencsére valamelyest a mérő alsó felén lévő P1 porthoz is. Az RJ12 aljzat a szilikongumi fedél mögötti téglalap alakú bemélyedés tetején van, ahová a dugót „pöcökkel” kifelé, függőlegesen felfelé lehet bedugni, ahogy azt az alábbi képen megpróbáltam pirossal jelölni:

DTSD545 P1 port

A különböző DSMR-olvasó megoldások és GitHub kódok vizsgálata után végül én is összeraktam inkább magamnak egyet, a https://github.com/bram2202/esp8266-dsmr projekt alapján. A prototípust furatszerelt alkatrészekkel csináltam egy 60x40 mm-es próbapanelen, és mivel tökéletesen bevált, éles használatra is az maradt meg.

A szekrény telekhatáron van kültéren, a távolság miatt eleve külső antenna használatát terveztem. Szerencsére a WeMos D1 mini Pro lapon van U.FL csatlakozó, jelenleg 3 dBi-s antennával a jelerősség -66 dBm, ami kb. 5 %-ot ingadozik. A kész elektronika elfér egy 40x64x30 mm-es műszerdobozban:

 DSMR-olvasó

A szekrényben van még bőven hely a mérő mellett egy DSMR-olvasónak:

 DSMR-olvasó a szekrényben

Szerintem SMT alkatrészekkel és egyedi, 3D-nyomtatott házzal össze lehetne zsugorítani akkorára az olvasót, hogy elférjen a gumifedél mögötti mélyedésben, ha valakinek elég a beépített antenna teljesítménye.

Az alkatrészek – a WeMos laptól függően – szállítással együtt kijönnek 5-9 ezer forintból.

A forráskódot is a fenti projekttől kölcsönöztem, az MQTT és az OTA eredetileg is benne van, az OBIS kódokat (az esp8266-dsmr.ino fájlban) és a szenzorok tulajdonságait (az AutoConfig.cpp fájlban) a saját igényeimhez igazítottam (Home Assistantet használok), tettem bele egy TCP szervert, hogy telnettel belépve meg tudjam nézni az aktuális telegramokat, valamint CRC ellenőrzést is csináltam. Az utóbbival elment pár órám, mire kiderült, hogy a Holley a CRC-16/X25-öt használja. Egy DSMR-telegram első karaktere az első ferde vonal (törtvonal, perjel) (/) (0x2F), az utolsó karaktere pedig azt követő első felkiáltójel (!) (0x21), mindkettő szükséges a CRC helyes kiszámításához.

A mérő 10 másodpercenként küld 2 telegramot, az aktuális értékeket az elsőben, amit mindig követ egy 1024 karakteres áramszolgáltatói szöveges üzenet (SMS) is, habár azt nem tudom, hogy ezt mikor és milyen célból használná a szolgáltató, és eddig még nem láttam benne értelmes tartalmat.

Példa a 2 DSMR-telegramra:

/HLY5/D545-METER

1-3:0.2.8(50)
0-0:1.0.0(210731132435S)
1-0:1.8.0(00008247.549*kWh)
1-0:1.8.1(00003407.883*kWh)
1-0:1.8.2(00004839.666*kWh)
1-0:1.8.3(00000000.000*kWh)
1-0:1.8.4(00000000.000*kWh)
1-0:2.8.0(00006513.786*kWh)
1-0:2.8.1(00003694.763*kWh)
1-0:2.8.2(00002819.023*kWh)
1-0:2.8.3(00000000.000*kWh)
1-0:2.8.4(00000000.000*kWh)
1-0:3.8.0(00000001.000*kvarh)
1-0:4.8.1(00001006.137*kvarh)
1-0:5.8.0(00000000.525*kvarh)
1-0:6.8.0(00000000.475*kvarh)
1-0:7.8.0(00001610.547*kvarh)
1-0:8.8.0(00002518.158*kvarh)
1-0:15.8.0(00014761.335*kWh )
1-0:32.7.0(000234.50*V)
1-0:52.7.0(000237.80*V)
1-0:72.7.0(000243.50*V)
1-0:31.7.0(000009.47*A)
1-0:51.7.0(000004.78*A)
1-0:71.7.0(000001.35*A)
1-0:13.7.0(0.943)
1-0:33.7.0(0.992)
1-0:53.7.0(0.885)
1-0:73.7.0(0.318)
1-0:14.7.0(49.95*HZ)
1-0:1.7.0(0003.097*kW)
1-0:2.7.0(0000.000*kW)
1-0:5.7.0(0000.000*kvar)
1-0:6.7.0(0000.000*kvar)
1-0:7.7.0(0000.000*kvar)
1-0:8.7.0(0001.092*kvar)
0-0:42.0.0(0812345678901247)
0-0:96.1.0(0812345678901247)
0-0:96.14.0(01)
0-0:96.50.68(03)
0-0:17.0.0(00050.000)
1-31:4.0.0(00050.000)
1-51:4.0.0(00050.000)
1-71:4.0.0(00050.000)
0-0:98.1.0
(
0-0:1.0.0(210701000000T)
1-0:1.8.0(00006239.792*kWh)
1-0:1.8.1(00002737.486*kWh)
1-0:1.8.2(00003502.306*kWh)
1-0:2.8.0(00004215.019*kWh)
1-0:2.8.1(00002500.112*kWh)
1-0:2.8.2(00001714.907*kWh)
1-0:3.8.0(00000000.934*kVarh)
1-0:4.8.0(00003695.456*kVarh)
1-0:5.8.0(00000000.472*kVarh)
1-0:6.8.0(00000000.462*kVarh)
1-0:7.8.0(00001440.663*kVarh)
1-0:8.8.0(00002254.793*kVarh)
1-0:15.8.0(00010454.811*kwh  )
1-0:1.6.0(007.352*kW)
1-0:1.6.1(006.920*kW)
1-0:1.6.2(007.352*kW)
1-0:2.6.0(005.800*kW)
1-0:2.6.1(005.800*kW)
1-0:2.6.2(004.568*kW)
)
!5261
/HLY5/D545-METER

1-3:0.2.8(50)
0-0:96.13.0(FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
!80D0

Akit esetleg érdekel a módosított kód, az privátban kereshet.

A téma iránt érdeklődőknek szerintem nagyon tanulságos lehet ez a projekt is: http://www.weigu.lu/microcontroller/smartyReader_P1/index.html

Hozzászólások

Szerkesztve: 2021. 11. 11., cs – 01:00

Ohh, igényes szép munka! Gratulálok! :)

Szerintem dobd fel a kódodat github-ra, biztos, hogy sokaknak hasznára lesz (nem tudom mennyire vagy "programozó", de ha a kódminőségtől félsz, akkor oszd meg és kikupáljuk)

// Happy debugging, suckers
#define true (rand() > 10)