dsmrreader / dsmr-reader

DSMR-telegram reader & data visualizer for hobbyists. Free for non-commercial use.
https://dsmr-reader.readthedocs.io
Other
459 stars 95 forks source link

welke body meegeven in opsturen P1 telegram met V1 api http://[ip]/api/v1/datalogger/dsmrreading #2006

Closed mchangsp closed 2 days ago

mchangsp commented 3 days ago

Language / Voertaal

🇳🇱 Nederlandstalig

Help yourself

Inquiry

Report a bug

Description

Ik krijg HTTP error 400 als ik de body hieronder gebruik in een POST http://[ip]/api/v1/datalogger/dsmrreading Wat moet ik precies meesturen? (In mijn DSMR Reader instance kan ik de V1 API documentatie helaas niet vinden)

Moet ik de carriage returns en de newlines speciaal behandelen?

Zie hieronder een voorbeeld

/KFM5KAIFA-METER\r\n\r\n1-3:0.2.8(42)\r\n0-0:1.0.0(240701132703S)\r\n0-0:96.1.1(12345678901234567890123456789012)\r\n1-0:1.8.1(015175.791*kWh)\r\n1-0:1.8.2(013644.303*kWh)\r\n1-0:2.8.1(002422.369*kWh)\r\n1-0:2.8.2(004913.148*kWh)\r\n0-0:96.14.0(0002)\r\n1-0:1.7.0(00.000*kW)\r\n1-0:2.7.0(01.379*kW)\r\n0-0:96.7.21(00001)\r\n0-0:96.7.9(00001)\r\n1-0:99.97.0(2)(0-0:96.7.19)(200113201326W)(0000014909*s)(000101000001W)(2147483647*s)\r\n1-0:32.32.0(00000)\r\n1-0:32.36.0(00000)\r\n0-0:96.13.1()\r\n0-0:96.13.0()\r\n1-0:31.7.0(006*A)\r\n1-0:21.7.0(00.000*kW)\r\n1-0:22.7.0(01.379*kW)\r\n0-1:24.1.0(003)\r\n0-1:96.1.0(01234567890123456789012345678901234567890123456789)\r\n0-1:24.2.1(240701130000S)(09330.695*m3)\r\n!29E6\n

DSMR-reader version

v5.11

DSMR-reader platform

Docker (e.g. Xirixiz's DSMR-reader Docker)

Optional: Debug info dump (of DSMR-reader)

No response

Optional: Smart meter telegram

No response

dennissiemensma commented 2 days ago

Je kunt de API-docs vinden onder /support in je installatie. Of direct onder /docs/api/redoc. Er staat ook nog een Postman collectie in.

image


Dat zeggende hebben, is dat de v2 API docs en je zoekt in jouw geval v1. Ik dacht dat ik daar docs van had, maar ik kan ze niet zo snel vinden.

Overigens zit daar maar 1 endpoint in en die kun je op deze manier aanroepen:

Voor de leesbaarheid staat de body daar over meerdere regels, maar het is 1 lange string. Inclusief de /r/n tekens. Het zou gewoon direct het telegram moeten zijn uit je meter, inclusief de checksum aan het einde.

dennissiemensma commented 2 days ago

Ik heb je voorbeeld bijgewerkt en ook het nummer van je gasmeter weggehaald. Het zou ongeveer zo moeten werken, mits de checksum goed is uiteraard.

mchangsp commented 2 days ago

Dank je wel Dennis (iik voor het weghalen van mijn gasmeter nummer)! Ik ga verder experimenteren.

dennissiemensma commented 2 days ago

Als ik het voorbeeld uit de test pak, dan moet die zo verstuurd worden:

image


image


Ik krijg welliswaar deze fout, maar dat ligt aan dat telegram zelf:

2024-07-01 19:48:37,589 DEBUG    datalogger   telegram_to_reading              81 | Received telegram:
2024-07-01T17:48:37.590033302Z /KFM5KAIFA-METER\r\n\r\n1-3:0.2.8(42)\r\n0-0:1.0.0(160303164347W)\r\n0-0:96.1.1(12345678901234567890123456789012)\r\n1-0:1.8.1(001073.079*kWh)\r\n1-0:1.8.2(001263.199*kWh)\r\n1-0:2.8.1(000000.000*kWh)\r\n1-0:2.8.2(000000.000*kWh)\r\n0-0:96.14.0(0002)\r\n1-0:1.7.0(00.143*kW)\r\n1-0:2.7.0(00.000*kW)\r\n0-0:96.7.21(00006)\r\n0-0:96.7.9(00003)\r\n1-0:99.97.0(1)(0-0:96.7.19)(000101000001W)(2147483647*s)\r\n1-0:32.32.0(00000)\r\n1-0:32.36.0(00000)\r\n0-0:96.13.1()\r\n0-0:96.13.0()\r\n1-0:31.7.0(000*A)\r\n1-0:21.7.0(00.143*kW)\r\n1-0:22.7.0(00.000*kW)\r\n!4BC6\n
2024-07-01T17:48:37.591504254Z 2024-07-01 19:48:37,591 WARNING  datalogger   telegram_to_reading              90 | Rejected telegram: Invalid telegram CRC. The calculated checksum '54250' (D3EA) does not match the telegram checksum '19398' (4BC6)
2024-07-01T17:48:37.591669647Z Internal Server Error: /api/v1/datalogger/dsmrreading
2024-07-01T17:48:37.591856086Z [01/Jul/2024 19:48:37] "POST //api/v1/datalogger/dsmrreading HTTP/1.1" 500 24
dennissiemensma commented 2 days ago

Met nog de aanvulling dat niet alle headers nodig zijn. Postman vult die zelf aan. De Content-Type en Authorization zijn wel nodig.

De tekst telegram: is dus het body-veld telegram, geen prefix aan de body.

mchangsp commented 2 days ago

Het is gelukt! Ik vergat de header Content-type mee te geven