Closed xkuyax closed 1 year ago
Hallo ich habe eine ähnliche Fehlermeldung, nachdem meine Python Kenntnisse sehr rudimentär sind komme ich leider nicht weiter und bitte um Hilfe
Beim Ausführen von "python3 justdecode.py" bekomme ich folgende Fehlermeldung
Traceback (most recent call last):
File "/home/pi/stromzaehler/justdecode.py", line 25, in
Die beiden Keys habe ich im File justdecode.py eingetragen. data_1 und data_2 sind beide leer, richtig?
Vielen Dank für Tipps und Unterstützung!
@asturma Nein data_1 muss die Daten des Smart Meter (DB...) enthalten. data_2 kann leer bleiben oder die Daten eines zweiten Frames enthalten.
Okay, Danke für die Info. Dran scheitert es noch :-( Muss erst herausfinden, mit welchem Befehl ich rawdata auslesen kann. Danke für den Hinweis
@asturma Dafür kannst du das serialtest.py Skript nutzen. Du must nur "/dev/ttyUSB0" durch den Port deines Adapters ersetzen (Unter Windows COM1/2/3...)
@debug-richard Ich bekomme nun folgenden Output wenn ich das serialtest.py ausführe Wird aktuell geliefert: {'Momentane Wirkleistung Bezug (+A)': {'value': 0, 'unit': 'W'}} Wird aktuell eingespeist: {'Momentane Wirkleistung Lieferung (-A)': {'value': 325, 'unit': 'W'}} Wurde geliefert (Zählerstand): {'Wirkenergie Lieferung (Lieferung an Kunden) (+A)': {'value': 4754257, 'unit': 'Wh'}} Wurde eingespeist (Zählerstand): {'Wirkenergie Bezug (Lieferung an EV) (-A)': {'value': 2083553, 'unit': 'Wh'}}
Zusätzlich kann ich den RAW Frame mit anzeigen. Was ich allerdings nicht ganz verstehe: der RAW Frame ändert sich ja mit jedem Durchlauf. Wie muss ich diesen nun in das justdecode.py eintragen damit auch dieses Script läuft?
@asturma Die Daten müssen HEX codiert sein und starten mit "DB". Das sieht dann so aus wie im ersten Post.
@debug-richard bei zwei durchläufen sieht das bei mir so aus, welchen muss ich dann eintragen?
Raw frame: db085341473500048c288201f2300000116ebc9519fde46d7093561cb93c11cead83e4a853117838bc40f6101f9448e81ddce072328b1e1eee9b1474f3c9c9bcc3dc2aeeb179af66972b1475abaf20d513b92107ddc53e07f00c3b6fa158cced8817f6419ef1f3080d827b1fdeac6088e58991fb427e54dd0ac5724237156eb0bb94d267e41896ffcfff80ca33de936f0489eec1e671126d6a5e438e5522e1e6bfeededeaacd636219d6a9c370892dcad6763f556290d7cff85ddfcfe616add4173a8f436a5655a98ae3e5c67d82e841bdfe73447890d232636e904bd42403b064d4fd957c51e0cdb25ed3f3e40c6e69cbfc231116bc960c1fe0fa47e9af0490c18f11b736de77c118ea14afce580ed8a1b8c0bdc121a33880bd19d106d5b0e5bc067b3decac9e4fb6b258f57ef856ab3e77ae7b59281f7dc9da53830baafc21c07c46fdceb5de646b80b2b48d903500b8e4135bacb61f54567564b0c5239e57f226d7419cf3f342a9640e47224ecb82a69a7488409791a932dc467ab51b71545815d695307b1ff3cc67206c12e2b921c52cea0c4efd94f6977dc8af889f748490d7b3deb045d6241b21ff8e2fb4d08fcb42bdf4cb651e87f654638ac11bae48df4507ecc0388ad2318307c0388896484b05f68ecf6146421e33b54f0109f774d366813821cf29a176bac16747e90dc729f5475008412dbf84b107e0d116ad Wird aktuell geliefert: {'Momentane Wirkleistung Bezug (+A)': {'value': 0, 'unit': 'W'}} Wird aktuell eingespeist: {'Momentane Wirkleistung Lieferung (-A)': {'value': 558, 'unit': 'W'}} Wurde geliefert (Zählerstand): {'Wirkenergie Lieferung (Lieferung an Kunden) (+A)': {'value': 4754257, 'unit': 'Wh'}} Wurde eingespeist (Zählerstand): {'Wirkenergie Bezug (Lieferung an EV) (-A)': {'value': 2083660, 'unit': 'Wh'}} Raw frame: db085341473500048c288201f2300000116f724c60bb8a6c156919ed102fb6faa22fd30b95ba2431f81d818ba119a35e47b1ffffc2d91c88100dfd45287d30640e712ae705a552aabfc0aec222945180c0bf9ee1ea88a50c5c0ff30c8e979dbe4553cbedc9b8c4a4a81d58ddcc0b17cf733eceac9f18f5c1e8ff7bb4f42483ebb323b5bc44b48825f8783c874fd2436ddde67dec66c86455bd25c6498a8b77c5f262769c392e0f72e112ae605cfbca9d3f94a8ca51eb0797525f425fbe42d88ff6e48ddcff182e2a33a15905ddac3595d8a9013159e151ed5c46bc2496553f1fbe6d9dba907a637d61afb2ab46c1ae598ce2bcda60d357b962d01272d190309a99af40650adc001e3d4c9b139b312eb988f98c8b3004303d2c1d58408eb69058bd94295bb6c91d2932b2166caf98e1f130687c4b289152dfd4c68236612f5eb2ae1f60dfa8b82dcd7e03f5213f70d29e4027e6fcb5c70be84c5641d31667fbf26234f40c78d5f8b153132c030c10e30894d3fca4891765b506bc9a31d19a2d39ed82be8dd405d545abf0cf5cba986075cdbdc3cbd0a259ebb85044d3a66b2ab2876e0a5caa93a641321f152b297bc13721951576db8c77a254bc947b5f840140c30f5e320ff9c9a46cf88693f4398ed6132ac24ba444b0eddb825ae52d6a21c320435bc18140407219eef5a913b4c34b2e46ac15e623dde2df5e2a1d4e2a9a Wird aktuell geliefert: {'Momentane Wirkleistung Bezug (+A)': {'value': 0, 'unit': 'W'}} Wird aktuell eingespeist: {'Momentane Wirkleistung Lieferung (-A)': {'value': 555, 'unit': 'W'}} Wurde geliefert (Zählerstand): {'Wirkenergie Lieferung (Lieferung an Kunden) (+A)': {'value': 4754257, 'unit': 'Wh'}} Wurde eingespeist (Zählerstand): {'Wirkenergie Bezug (Lieferung an EV) (-A)': {'value': 2083661, 'unit': 'Wh'}}
data_1 = "db085341473500048c288201f2300000116ebc9519fde46d7093561cb93c11cead83e4a853117838bc40f6101f9448e81ddce072328b1e1eee9b1474f3c9c9bcc3dc2aeeb179af66972b1475abaf20d513b92107ddc53e07f00c3b6fa158cced8817f6419ef1f3080d827b1fdeac6088e58991fb427e54dd0ac5724237156eb0bb94d267e41896ffcfff80ca33de936f0489eec1e671126d6a5e438e5522e1e6bfeededeaacd636219d6a9c370892dcad6763f556290d7cff85ddfcfe616add4173a8f436a5655a98ae3e5c67d82e841bdfe73447890d232636e904bd42403b064d4fd957c51e0cdb25ed3f3e40c6e69cbfc231116bc960c1fe0fa47e9af0490c18f11b736de77c118ea14afce580ed8a1b8c0bdc121a33880bd19d106d5b0e5bc067b3decac9e4fb6b258f57ef856ab3e77ae7b59281f7dc9da53830baafc21c07c46fdceb5de646b80b2b48d903500b8e4135bacb61f54567564b0c5239e57f226d7419cf3f342a9640e47224ecb82a69a7488409791a932dc467ab51b71545815d695307b1ff3cc67206c12e2b921c52cea0c4efd94f6977dc8af889f748490d7b3deb045d6241b21ff8e2fb4d08fcb42bdf4cb651e87f654638ac11bae48df4507ecc0388ad2318307c0388896484b05f68ecf6146421e33b54f0109f774d366813821cf29a176bac16747e90dc729f5475008412dbf84b107e0d116ad"
das habe ich zuvor schon versucht, bei jedem ausführen bekomme ich dann diesen Output. Die Daten aktualisieren sich dann ja nicht. Irgendwie steh ich am Schlauch :-(
(venv) pi@raspberrypi:~/stromzaehler $ python3 justdecode.py Wird aktuell geliefert: {'Momentane Wirkleistung Bezug (+A)': {'value': 0, 'unit': 'W'}} Wird aktuell eingespeist: {'Momentane Wirkleistung Lieferung (-A)': {'value': 558, 'unit': 'W'}} Wurde geliefert (Zählerstand): {'Wirkenergie Lieferung (Lieferung an Kunden) (+A)': {'value': 4754257, 'unit': 'Wh'}} Wurde eingespeist (Zählerstand): {'Wirkenergie Bezug (Lieferung an EV) (-A)': {'value': 2083660, 'unit': 'Wh'}}
Traceback (most recent call last):
File "/home/pi/stromzaehler/justdecode.py", line 25, in
da data_2 leer ist bekommst du den fehler, kopiere einfach die selben daten in data_2
data_1 = "db085341473500048c288201f2300000116ebc9519fde46d7093561cb93c11cead83e4a853117838bc40f6101f9448e81ddce072328b1e1eee9b1474f3c9c9bcc3dc2aeeb179af66972b1475abaf20d513b92107ddc53e07f00c3b6fa158cced8817f6419ef1f3080d827b1fdeac6088e58991fb427e54dd0ac5724237156eb0bb94d267e41896ffcfff80ca33de936f0489eec1e671126d6a5e438e5522e1e6bfeededeaacd636219d6a9c370892dcad6763f556290d7cff85ddfcfe616add4173a8f436a5655a98ae3e5c67d82e841bdfe73447890d232636e904bd42403b064d4fd957c51e0cdb25ed3f3e40c6e69cbfc231116bc960c1fe0fa47e9af0490c18f11b736de77c118ea14afce580ed8a1b8c0bdc121a33880bd19d106d5b0e5bc067b3decac9e4fb6b258f57ef856ab3e77ae7b59281f7dc9da53830baafc21c07c46fdceb5de646b80b2b48d903500b8e4135bacb61f54567564b0c5239e57f226d7419cf3f342a9640e47224ecb82a69a7488409791a932dc467ab51b71545815d695307b1ff3cc67206c12e2b921c52cea0c4efd94f6977dc8af889f748490d7b3deb045d6241b21ff8e2fb4d08fcb42bdf4cb651e87f654638ac11bae48df4507ecc0388ad2318307c0388896484b05f68ecf6146421e33b54f0109f774d366813821cf29a176bac16747e90dc729f5475008412dbf84b107e0d116ad"
data_2 = "db085341473500048c288201f2300000116ebc9519fde46d7093561cb93c11cead83e4a853117838bc40f6101f9448e81ddce072328b1e1eee9b1474f3c9c9bcc3dc2aeeb179af66972b1475abaf20d513b92107ddc53e07f00c3b6fa158cced8817f6419ef1f3080d827b1fdeac6088e58991fb427e54dd0ac5724237156eb0bb94d267e41896ffcfff80ca33de936f0489eec1e671126d6a5e438e5522e1e6bfeededeaacd636219d6a9c370892dcad6763f556290d7cff85ddfcfe616add4173a8f436a5655a98ae3e5c67d82e841bdfe73447890d232636e904bd42403b064d4fd957c51e0cdb25ed3f3e40c6e69cbfc231116bc960c1fe0fa47e9af0490c18f11b736de77c118ea14afce580ed8a1b8c0bdc121a33880bd19d106d5b0e5bc067b3decac9e4fb6b258f57ef856ab3e77ae7b59281f7dc9da53830baafc21c07c46fdceb5de646b80b2b48d903500b8e4135bacb61f54567564b0c5239e57f226d7419cf3f342a9640e47224ecb82a69a7488409791a932dc467ab51b71545815d695307b1ff3cc67206c12e2b921c52cea0c4efd94f6977dc8af889f748490d7b3deb045d6241b21ff8e2fb4d08fcb42bdf4cb651e87f654638ac11bae48df4507ecc0388ad2318307c0388896484b05f68ecf6146421e33b54f0109f774d366813821cf29a176bac16747e90dc729f5475008412dbf84b107e0d116ad"
hab ich gemacht, jetzt zeigt es mir natürlich die gleichen daten an. soweit so gut. "Justdecode.py" ist aber ja eigentlich nur zum Testen oder? Denn mit diesem Script wird ja nur einmal ausgeführt und decodiert. Zum permanenten Check der aktuellen Daten ist dann "serialtest.py" gedacht, welches in einer Endlosschleife läuft, richtig?
ja, serialtest.py kann als Grundlage dienen.
@xkuyax Hast du schon erfolgreich mit esphome die Daten ausgelesen? Ich versuche auch gerade meinen Sagecom T210-D-r mit einem esp8266 über die dsmr Komponente von esphome auszulesen und komme nicht weiter. Meine Datenframes sind aus irgendeinem Grund riesig (60000 Bytes) und das Auslesen endet in einem Timeout..
@xkuyax Hast du schon erfolgreich mit esphome die Daten ausgelesen? Ich versuche auch gerade meinen Sagecom T210-D-r mit einem esp8266 über die dsmr Komponente von esphome auszulesen und komme nicht weiter. Meine Datenframes sind aus irgendeinem Grund riesig (60000 Bytes) und das Auslesen endet in einem Timeout..
Hi, ja ich lese seit einiger Zeit mit folgendem yaml meinen sagecom aus:
esphome:
name: dsmr-reader
esp8266:
board: d1_mini
# Enable logging
logger:
baud_rate: 0
level: VERBOSE
# Enable Home Assistant API
api:
encryption:
key: ""
ota:
password: ""
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Dsmr-Reader Fallback Hotspot"
password: ""
captive_portal:
external_components:
- source:
type: local
path: my_components
- source: github://Herbycheck/esphome@dsmr-unit-fix
components: [ dsmr ]
substitutions:
name: dsmr-reader
friendly_name: DSMR Reader
uart:
rx_pin: D7
baud_rate: 115200
rx_buffer_size: 1500
dsmr:
decryption_key: !secret dsmr_encryption
request_pin: D5
request_interval: 10s
sensor:
- platform: dsmr
energy_delivered_tariff1:
name: ${friendly_name} Energy Delivered Tariff 1
state_class: total_increasing
energy_delivered_tariff2:
name: ${friendly_name} Energy Delivered Tariff 2
state_class: total_increasing
energy_returned_tariff1:
name: ${friendly_name} Energy Returned Tariff 1
energy_returned_tariff2:
name: ${friendly_name} Energy Returned Tariff 2
power_delivered:
name: ${friendly_name} Power Consumed
power_returned:
name: ${friendly_name} Power Returned
electricity_failures:
name: ${friendly_name} Electricity Failures
electricity_long_failures:
name: ${friendly_name} Electricity Long Failures
voltage_l1:
name: ${friendly_name} Voltage L1
voltage_l2:
name: ${friendly_name} Voltage L2
voltage_l3:
name: ${friendly_name} Voltage L3
current_l1:
name: ${friendly_name} Current L1
current_l2:
name: ${friendly_name} Current L2
current_l3:
name: ${friendly_name} Current L3
power_delivered_l1:
name: ${friendly_name} Power Delivered L1
power_delivered_l2:
name: ${friendly_name} Power Delivered L2
power_delivered_l3:
name: ${friendly_name} Power Delivered L3
power_returned_l1:
name: ${friendly_name} Power Returned L1
power_returned_l2:
name: ${friendly_name} Power Returned L2
power_returned_l3:
name: ${friendly_name} Power Returned L3
gas_delivered:
name: ${friendly_name} Gas Delivered
text_sensor:
- platform: dsmr
identification:
name: ${friendly_name} Identification
p1_version:
name: ${friendly_name} Version
Vielen Dank, hab eine ähnliche config momentan. Ich hab nur den request pin hardwareseitig dauerhaft auf high gelegt, ist das vielleicht ein Problem? Has du sonst irgendwas dazwischen (Optokoppler o.Ä.?) Ist in in "my_components" etwas dsmr relevantes ?
@xkuyax habe es mittlerweile geschafft, sinnvolle Daten herauszubekommen. Zu deiner Config: Bekommst du die Voltage, Current und Power L1/L2/L3 Daten aus deinem Smart Meter? Laut Doku werden die ja nicht übertragen..
@xkuyax habe es mittlerweile geschafft, sinnvolle Daten herauszubekommen. Zu deiner Config: Bekommst du die Voltage, Current und Power L1/L2/L3 Daten aus deinem Smart Meter? Laut Doku werden die ja nicht übertragen..
Hey, super das es bei dir auch geht 👍 Nein, bei mir sind da auch keine Daten Mehr als Power und kWh interessiert mich eig eh nicht
Aber Blindleistung und so geht auch nicht, oder? Weil die werden iwie net von der esphome dsmr Komponente unterstützt, richtig?
Aber Blindleistung und so geht auch nicht, oder? Weil die werden iwie net von der esphome dsmr Komponente unterstützt, richtig?
Ich hab keine Ahnung und hab mich damit auch nicht beschäftigt Schätze mal das die Daten nicht an den ESP geschickt werden 🤔
Aber Blindleistung und so geht auch nicht, oder? Weil die werden iwie net von der esphome dsmr Komponente unterstützt, richtig?
Ich hab keine Ahnung und hab mich damit auch nicht beschäftigt Schätze mal das die Daten nicht an den ESP geschickt werden 🤔
Naja laut Protokoll müssten die Daten verfügbar sein: https://www.e-netze.at/downloads-data/pdf.aspx?pdf=EN_Update%20Kundenschnittstelle%20Smart%20Meter_ID3282_WEB_RGB.pdf
Hey,
vielen dank für deine Arbeit! Über das DSMR-Parser Projekt bin ich auf deine Repo gestoßen, da ich gerade selbst versuche von meinem T210-D-R die Daten auszulesen.
Ich habe einen Esp8266 mit folgender Schaltung am Stromzähler hängen: https://github.com/DiGierre/DSMR_reader_schematic_PCB über einen leicht abgewandelten DSMR code von esphome habe ich nun folgenden dump:
DB0853414735000538018201F2300000043726C548B8BBFA6D02B0A1A4932A705460C6B31F946220C699A09ADF5A5A79ABDBB28E9C89B0A97A44F0052D3139A9B3F0D0914B361AF20045637A6C5862FC315F9AD23AD73E4BBFCF654F77D568F01860644E5F42CC658D53F9FC7EC4036E75F94766065AE0C09A04A1B39D6055A299450FF5FB7659DD529DB9AC190BB8704582857B6938AEE52C73FA5DF1097A5E382A9342C5FEBB984EC2ED6B3F05940EA04BB4D5A1E9509E834E317CC620E66C6E06F77A6B15DF741D769C6081F916B6528C014DDF152C0DCB2D1B49CBB655AB3EACF15E5762E01A52AAA0A2716E20A56BBF3108A6D7966A0469CB6BEEE29FF2D639EC34848964EDC28F981547A1C8287CC618DE1DBBA36E52FFF9C62E325AA2CB0B1237CD968881E81EF27FC0251EF4297DE3ADF80A6659BF5FF6511768B28EA9F21A244399246D000162EB0A35BBFF7DDD5EEA6CD3A8DD61A7400175253D1E2576BB593C31E99E34776929CC97731846BE245F149FE64B4440883AD2DFEBA285B1D49CB7C22E130507746BA53F766563637A27AD503D60D2F75926270E812B0B359089D64DE2EC54533446D8BFD39C1A9759B77676A8D5BBBC672983AD00FBA14922BE78651997FBC19C9D44A56C5A542AD3C97BC8A127CDBA8D2D1093DEE879C346475163B3E504A5614E2D89970ED9510565A53252FD549FBAF608494F
auf Anfrage habe ich folgende Keys erhalten:
8B8AB6642EFD24E719DC9B2C6986FASE
(als Encryption Key) (wie kann das mit dem S funktionieren?)und
35A02911CBA199020B3899AAD8885CD5
als "Authentication key"wenn ich nun versuche das zu encoden erhalte ich nur "ValueError: Frame length to short (encrypted)"
Könntest du mir da weiterhelfen? Mein end ziel wäre es dies in einen esphome component zu bekommen, im moment kann ich aber nicht ganz davon ausgehen das mein C++ code 100% funktioniert, wobei [18:12:01][V][dsmr:219]: Encrypted telegram length: 511 bytes sehr vielversprechend klingt
Danke vielmals!
EDIT: meine Daten wurden vom Serial Monitor von esphome abgeschnitten, jetzt wo ich alle Daten habe konnte ich den Key auf 5E "brute forcen" und erfolgreich die Daten encoden, danke!