Open SimonFischer04 opened 6 months ago
will try your impl in the next days/weeks. I have a Kaifa MA309M
maybe better name it Netz NÖ
instead of EVN
? One is the grid operator the other one the energy provider
will try your impl in the next days/weeks. I have a
Kaifa MA309M
no hurry, thanks
maybe better name it
Netz NÖ
instead ofEVN
? One is the grid operator the other one the energy provider
yeah naming things is hard ... 🤣. EVN/ Netz NÖ are quite linked together. Other discussions I found also usually talked about "evn" / "Netz NÖ". synonymously. How would call the key? I definitely don't put a space nor "Ö" in there. "netznoe" maybe?
But let's start with checking if it works. I think a working implementation is more important than some naming detail :).
yes not the most important thing. i would call it netznoe
maybe this overview helps: https://cms.shrdzm.com/wp-content/uploads/Smartmeter-scaled.jpg
maybe this overview helps: https://cms.shrdzm.com/wp-content/uploads/Smartmeter-scaled.jpg
I already know this chart, but how should this help? This implementation is only intended for the ones providing an m-bus interface (or identical data format / structure provided with other converters to the the esp uart).
If you mean grid operator vs energy provider, yes I know the difference. (I don't actually have EVN as energy provider here, but netz nö as grid operator). Don't really know why I called it like this ... 😄
I only added as an overview for all the possible providers/devices that are there in austria
Hi Simon, just gave it a try. But i probably did something wrong :-)
Kaifa MA309 VKW
see the attached yaml esphome-web-a2ded9.yaml.txt
And here the result:
HARDWARE: ESP8266 80MHz, 80KB RAM, 1MB Flash
Dependency Graph
|-- ESPAsyncTCP-esphome @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.1.0
|-- DNSServer @ 1.1.1
|-- ESP8266WiFi @ 1.0
|-- ESP8266mDNS @ 1.2
|-- noise-c @ 0.1.4
Compiling .pioenvs/smartmeter/src/esphome-dlms-meter/espdm.cpp.o
Compiling .pioenvs/smartmeter/src/esphome/components/socket/bsd_sockets_impl.cpp.o
Compiling .pioenvs/smartmeter/src/esphome/components/socket/lwip_raw_tcp_impl.cpp.o
Compiling .pioenvs/smartmeter/src/esphome/components/socket/lwip_sockets_impl.cpp.o
Compiling .pioenvs/smartmeter/src/esphome/components/socket/socket.cpp.o
Compiling .pioenvs/smartmeter/src/esphome/components/text_sensor/filter.cpp.o
Compiling .pioenvs/smartmeter/src/esphome/components/text_sensor/text_sensor.cpp.o
In file included from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome-dlms-meter/espdm.h:7:20: error: conflicting declaration 'const char TAG'
7 | static const char TAG = "espdm";
| ^~~
In file included from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms_meter.h:29:26: note: previous declaration as 'const char const TAG'
29 | static const char const TAG = "dlms_meter";
| ^~~
In file included from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome-dlms-meter/espdm.h:29:34: error: 'mqtt' has not been declared
29 | void enable_mqtt(mqtt::MQTTClientComponent mqtt_client, const char topic);
| ^~~~
src/esphome-dlms-meter/espdm.h:29:60: error: expected ',' or '...' before '' token
29 | void enable_mqtt(mqtt::MQTTClientComponent mqtt_client, const char topic);
| ^
src/esphome-dlms-meter/espdm.h:66:17: error: 'mqtt' does not name a type
66 | mqtt::MQTTClientComponent mqtt_client = NULL;
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:5:18: error: redefinition of 'const int MBUS_HEADER_INTRO_LENGTH'
5 | static const int MBUS_HEADER_INTRO_LENGTH = 4; // Header length for the intro (0x68, length, length, 0x68)
| ^~~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:6:18: note: 'const int MBUS_HEADER_INTRO_LENGTH' previously defined here
6 | static const int MBUS_HEADER_INTRO_LENGTH = 4; // Header length for the intro (0x68, length, length, 0x68)
| ^~~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:6:18: error: redefinition of 'const int MBUS_FULL_HEADER_LENGTH'
6 | static const int MBUS_FULL_HEADER_LENGTH = 9; // Total header length
| ^~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:7:18: note: 'const int MBUS_FULL_HEADER_LENGTH' previously defined here
7 | static const int MBUS_FULL_HEADER_LENGTH = 9; // Total header length
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:7:18: error: redefinition of 'const int MBUS_FOOTER_LENGTH'
7 | static const int MBUS_FOOTER_LENGTH = 2; // Footer after frame
| ^~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:8:18: note: 'const int MBUS_FOOTER_LENGTH' previously defined here
8 | static const int MBUS_FOOTER_LENGTH = 2; // Footer after frame
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:9:18: error: redefinition of 'const int MBUS_MAX_FRAME_LENGTH'
9 | static const int MBUS_MAX_FRAME_LENGTH = 250; // Maximum size of frame
| ^~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:10:18: note: 'const int MBUS_MAX_FRAME_LENGTH' previously defined here
10 | static const int MBUS_MAX_FRAME_LENGTH = 250; // Maximum size of frame
| ^~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:11:18: error: redefinition of 'const int MBUS_START1_OFFSET'
11 | static const int MBUS_START1_OFFSET = 0; // Offset of first start byte
| ^~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:12:18: note: 'const int MBUS_START1_OFFSET' previously defined here
12 | static const int MBUS_START1_OFFSET = 0; // Offset of first start byte
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:12:18: error: redefinition of 'const int MBUS_LENGTH1_OFFSET'
12 | static const int MBUS_LENGTH1_OFFSET = 1; // Offset of first length byte
| ^~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:13:18: note: 'const int MBUS_LENGTH1_OFFSET' previously defined here
13 | static const int MBUS_LENGTH1_OFFSET = 1; // Offset of first length byte
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:13:18: error: redefinition of 'const int MBUS_LENGTH2_OFFSET'
13 | static const int MBUS_LENGTH2_OFFSET = 2; // Offset of (duplicated) second length byte
| ^~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:14:18: note: 'const int MBUS_LENGTH2_OFFSET' previously defined here
14 | static const int MBUS_LENGTH2_OFFSET = 2; // Offset of (duplicated) second length byte
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:2:
src/esphome-dlms-meter/espdm_mbus.h:14:18: error: redefinition of 'const int MBUS_START2_OFFSET'
14 | static const int MBUS_START2_OFFSET = 3; // Offset of (duplicated) second start byte
| ^~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:10,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/mbus.h:15:18: note: 'const int MBUS_START2_OFFSET' previously defined here
15 | static const int MBUS_START2_OFFSET = 3; // Offset of (duplicated) second start byte
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:5:18: error: redefinition of 'const int DLMS_HEADER_LENGTH'
5 | static const int DLMS_HEADER_LENGTH = 16; // Length of the header (total message length <= 127)
| ^~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:6:18: note: 'const int DLMS_HEADER_LENGTH' previously defined here
6 | static const int DLMS_HEADER_LENGTH = 16; // Length of the header (total message length <= 127)
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:6:18: error: redefinition of 'const int DLMS_HEADER_EXT_OFFSET'
6 | static const int DLMS_HEADER_EXT_OFFSET = 2; // Length to offset when header is extended length (total message length > 127)
| ^~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:7:18: note: 'const int DLMS_HEADER_EXT_OFFSET' previously defined here
7 | static const int DLMS_HEADER_EXT_OFFSET = 2; // Length to offset when header is extended length (total message length > 127)
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:8:18: error: redefinition of 'const int DLMS_CIPHER_OFFSET'
8 | static const int DLMS_CIPHER_OFFSET = 0; // Offset at which used cipher suite is stored
| ^~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:9:18: note: 'const int DLMS_CIPHER_OFFSET' previously defined here
9 | static const int DLMS_CIPHER_OFFSET = 0; // Offset at which used cipher suite is stored
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:9:18: error: redefinition of 'const int DLMS_SYST_OFFSET'
9 | static const int DLMS_SYST_OFFSET = 1; // Offset at which length of system title is stored
| ^~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:10:18: note: 'const int DLMS_SYST_OFFSET' previously defined here
10 | static const int DLMS_SYST_OFFSET = 1; // Offset at which length of system title is stored
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:11:18: error: redefinition of 'const int DLMS_LENGTH_OFFSET'
11 | static const int DLMS_LENGTH_OFFSET = 10; // Offset at which message length is stored
| ^~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:12:18: note: 'const int DLMS_LENGTH_OFFSET' previously defined here
12 | static const int DLMS_LENGTH_OFFSET = 10; // Offset at which message length is stored
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:12:18: error: redefinition of 'const int DLMS_LENGTH_CORRECTION'
12 | static const int DLMS_LENGTH_CORRECTION = 5; // Part of the header is included in the DLMS length field and needs to be removed
| ^~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:13:18: note: 'const int DLMS_LENGTH_CORRECTION' previously defined here
13 | static const int DLMS_LENGTH_CORRECTION = 5; // Part of the header is included in the DLMS length field and needs to be removed
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:16:18: error: redefinition of 'const int DLMS_SECBYTE_OFFSET'
16 | static const int DLMS_SECBYTE_OFFSET = 11; // Offset of the security byte
| ^~~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:17:18: note: 'const int DLMS_SECBYTE_OFFSET' previously defined here
17 | static const int DLMS_SECBYTE_OFFSET = 11; // Offset of the security byte
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:18:18: error: redefinition of 'const int DLMS_FRAMECOUNTER_OFFSET'
18 | static const int DLMS_FRAMECOUNTER_OFFSET = 12; // Offset of the frame counter
| ^~~~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:19:18: note: 'const int DLMS_FRAMECOUNTER_OFFSET' previously defined here
19 | static const int DLMS_FRAMECOUNTER_OFFSET = 12; // Offset of the frame counter
| ^~~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:19:18: error: redefinition of 'const int DLMS_FRAMECOUNTER_LENGTH'
19 | static const int DLMS_FRAMECOUNTER_LENGTH = 4; // Length of the frame counter (always 4)
| ^~~~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:20:18: note: 'const int DLMS_FRAMECOUNTER_LENGTH' previously defined here
20 | static const int DLMS_FRAMECOUNTER_LENGTH = 4; // Length of the frame counter (always 4)
| ^~~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:3:
src/esphome-dlms-meter/espdm_dlms.h:21:18: error: redefinition of 'const int DLMS_PAYLOAD_OFFSET'
21 | static const int DLMS_PAYLOAD_OFFSET = 16; // Offset at which the encrypted payload begins
| ^~~~~~~
In file included from src/esphome.h:17,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/dlms.h:22:18: note: 'const int DLMS_PAYLOAD_OFFSET' previously defined here
22 | static const int DLMS_PAYLOAD_OFFSET = 16; // Offset at which the encrypted payload begins
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:5:6: error: multiple definition of 'enum DataType'
5 | enum DataType
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:6:6: note: previous definition here
6 | enum DataType
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:34:6: error: multiple definition of 'enum Medium'
34 | enum Medium
| ^~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:35:6: note: previous definition here
35 | enum Medium
| ^~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:43:6: error: multiple definition of 'enum CodeType'
43 | enum CodeType
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:44:6: note: previous definition here
44 | enum CodeType
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:63:6: error: multiple definition of 'enum Accuracy'
63 | enum Accuracy
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:66:6: note: previous definition here
66 | enum Accuracy
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:73:18: error: redefinition of 'const int DECODER_START_OFFSET'
73 | static const int DECODER_START_OFFSET = 20; // Offset for start of OBIS decoding, skip header, timestamp and break block
| ^~~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:76:18: note: 'const int DECODER_START_OFFSET' previously defined here
76 | static const int DECODER_START_OFFSET = 20; // Offset for start of OBIS decoding, skip header, timestamp and break block
| ^~~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:75:18: error: redefinition of 'const int OBIS_TYPE_OFFSET'
75 | static const int OBIS_TYPE_OFFSET = 0;
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:78:18: note: 'const int OBIS_TYPE_OFFSET' previously defined here
78 | static const int OBIS_TYPE_OFFSET = 0;
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:76:18: error: redefinition of 'const int OBIS_LENGTH_OFFSET'
76 | static const int OBIS_LENGTH_OFFSET = 1;
| ^~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:79:18: note: 'const int OBIS_LENGTH_OFFSET' previously defined here
79 | static const int OBIS_LENGTH_OFFSET = 1;
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:78:18: error: redefinition of 'const int OBIS_CODE_OFFSET'
78 | static const int OBIS_CODE_OFFSET = 2;
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:81:18: note: 'const int OBIS_CODE_OFFSET' previously defined here
81 | static const int OBIS_CODE_OFFSET = 2;
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:80:18: error: redefinition of 'const int OBIS_A'
80 | static const int OBIS_A = 0;
| ^~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:83:18: note: 'const int OBIS_A' previously defined here
83 | static const int OBIS_A = 0;
| ^~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:81:18: error: redefinition of 'const int OBIS_B'
81 | static const int OBIS_B = 1;
| ^~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:84:18: note: 'const int OBIS_B' previously defined here
84 | static const int OBIS_B = 1;
| ^~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:82:18: error: redefinition of 'const int OBIS_C'
82 | static const int OBIS_C = 2;
| ^~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:85:18: note: 'const int OBIS_C' previously defined here
85 | static const int OBIS_C = 2;
| ^~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:83:18: error: redefinition of 'const int OBIS_D'
83 | static const int OBIS_D = 3;
| ^~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:86:18: note: 'const int OBIS_D' previously defined here
86 | static const int OBIS_D = 3;
| ^~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:84:18: error: redefinition of 'const int OBIS_E'
84 | static const int OBIS_E = 4;
| ^~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:87:18: note: 'const int OBIS_E' previously defined here
87 | static const int OBIS_E = 4;
| ^~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:85:18: error: redefinition of 'const int OBIS_F'
85 | static const int OBIS_F = 5;
| ^~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:88:18: note: 'const int OBIS_F' previously defined here
88 | static const int OBIS_F = 5;
| ^~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:91:16: error: conflicting declaration 'uint8_t ESPDM_TIMESTAMP []'
91 | static uint8_t ESPDM_TIMESTAMP[]
| ^~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:94:22: note: previous declaration as 'const uint8_t ESPDM_TIMESTAMP [2]'
94 | static const uint8_t ESPDM_TIMESTAMP[]
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:96:22: error: redefinition of 'const uint8_t ESPDM_SERIAL_NUMBER []'
96 | static const uint8_t ESPDM_SERIAL_NUMBER[]
| ^~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:99:22: note: 'const uint8_t ESPDM_SERIAL_NUMBER [2]' previously defined here
99 | static const uint8_t ESPDM_SERIAL_NUMBER[]
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:101:22: error: redefinition of 'const uint8_t ESPDM_DEVICE_NAME []'
101 | static const uint8_t ESPDM_DEVICE_NAME[]
| ^~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:104:22: note: 'const uint8_t ESPDM_DEVICE_NAME [2]' previously defined here
104 | static const uint8_t ESPDM_DEVICE_NAME[]
| ^~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:110:16: error: conflicting declaration 'uint8_t ESPDM_VOLTAGE_L1 []'
110 | static uint8_t ESPDM_VOLTAGE_L1[]
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:113:22: note: previous declaration as 'const uint8_t ESPDM_VOLTAGE_L1 [2]'
113 | static const uint8_t ESPDM_VOLTAGE_L1[]
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:115:22: error: redefinition of 'const uint8_t ESPDM_VOLTAGE_L2 []'
115 | static const uint8_t ESPDM_VOLTAGE_L2[]
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:118:22: note: 'const uint8_t ESPDM_VOLTAGE_L2 [2]' previously defined here
118 | static const uint8_t ESPDM_VOLTAGE_L2[]
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:120:22: error: redefinition of 'const uint8_t ESPDM_VOLTAGE_L3 []'
120 | static const uint8_t ESPDM_VOLTAGE_L3[]
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:123:22: note: 'const uint8_t ESPDM_VOLTAGE_L3 [2]' previously defined here
123 | static const uint8_t ESPDM_VOLTAGE_L3[]
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:129:22: error: redefinition of 'const uint8_t ESPDM_CURRENT_L1 []'
129 | static const uint8_t ESPDM_CURRENT_L1[]
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:132:22: note: 'const uint8_t ESPDM_CURRENT_L1 [2]' previously defined here
132 | static const uint8_t ESPDM_CURRENT_L1[]
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:134:22: error: redefinition of 'const uint8_t ESPDM_CURRENT_L2 []'
134 | static const uint8_t ESPDM_CURRENT_L2[]
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:137:22: note: 'const uint8_t ESPDM_CURRENT_L2 [2]' previously defined here
137 | static const uint8_t ESPDM_CURRENT_L2[]
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:139:22: error: redefinition of 'const uint8_t ESPDM_CURRENT_L3 []'
139 | static const uint8_t ESPDM_CURRENT_L3[]
| ^~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:142:22: note: 'const uint8_t ESPDM_CURRENT_L3 [2]' previously defined here
142 | static const uint8_t ESPDM_CURRENT_L3[]
| ^~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:148:22: error: redefinition of 'const uint8_t ESPDM_ACTIVE_POWER_PLUS []'
148 | static const uint8_t ESPDM_ACTIVE_POWER_PLUS[]
| ^~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:151:22: note: 'const uint8_t ESPDM_ACTIVE_POWER_PLUS [2]' previously defined here
151 | static const uint8_t ESPDM_ACTIVE_POWER_PLUS[]
| ^~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:153:22: error: redefinition of 'const uint8_t ESPDM_ACTIVE_POWER_MINUS []'
153 | static const uint8_t ESPDM_ACTIVE_POWER_MINUS[]
| ^~~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:156:22: note: 'const uint8_t ESPDM_ACTIVE_POWER_MINUS [2]' previously defined here
156 | static const uint8_t ESPDM_ACTIVE_POWER_MINUS[]
| ^~~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:162:22: error: redefinition of 'const uint8_t ESPDM_ACTIVE_ENERGY_PLUS []'
162 | static const uint8_t ESPDM_ACTIVE_ENERGY_PLUS[]
| ^~~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:165:22: note: 'const uint8_t ESPDM_ACTIVE_ENERGY_PLUS [2]' previously defined here
165 | static const uint8_t ESPDM_ACTIVE_ENERGY_PLUS[]
| ^~~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:166:22: error: redefinition of 'const uint8_t ESPDM_ACTIVE_ENERGY_MINUS []'
166 | static const uint8_t ESPDM_ACTIVE_ENERGY_MINUS[]
| ^~~~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:169:22: note: 'const uint8_t ESPDM_ACTIVE_ENERGY_MINUS [2]' previously defined here
169 | static const uint8_t ESPDM_ACTIVE_ENERGY_MINUS[]
| ^~~~~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:175:22: error: redefinition of 'const uint8_t ESPDM_REACTIVE_ENERGY_PLUS []'
175 | static const uint8_t ESPDM_REACTIVE_ENERGY_PLUS[]
| ^~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:178:22: note: 'const uint8_t ESPDM_REACTIVE_ENERGY_PLUS [2]' previously defined here
178 | static const uint8_t ESPDM_REACTIVE_ENERGY_PLUS[]
| ^~~~~~
In file included from src/esphome-dlms-meter/espdm.cpp:4:
src/esphome-dlms-meter/espdm_obis.h:179:22: error: redefinition of 'const uint8_t ESPDM_REACTIVE_ENERGY_MINUS []'
179 | static const uint8_t ESPDM_REACTIVE_ENERGY_MINUS[]
| ^~~~~~~
In file included from src/esphome/components/dlms_meter/dlms_meter.h:12,
from src/esphome.h:18,
from src/esphome-dlms-meter/espdm.h:1,
from src/esphome-dlms-meter/espdm.cpp:1:
src/esphome/components/dlms_meter/obis.h:182:22: note: 'const uint8_t ESPDM_REACTIVE_ENERGY_MINUS [2]' previously defined here
182 | static const uint8_t ESPDM_REACTIVE_ENERGY_MINUS[]
| ^~~~~~~
src/esphome-dlms-meter/espdm.cpp: In member function 'virtual void esphome::espdm::DlmsMeter::loop()':
src/esphome-dlms-meter/espdm.cpp:411:26: error: 'class esphome::espdm::DlmsMeter' has no member named 'mqtt_client'
411 | if(this->mqtt_client != NULL)
| ^~~
src/esphome-dlms-meter/espdm.cpp:413:27: error: 'class esphome::espdm::DlmsMeter' has no member named 'mqtt_client'
413 | this->mqtt_client->publish_json(this->topic, [=](JsonObject root)
| ^~~
src/esphome-dlms-meter/espdm.cpp:413:70: error: 'JsonObject' has not been declared
413 | this->mqtt_client->publish_json(this->topic, [=](JsonObject root)
| ^~~~~~
src/esphome-dlms-meter/espdm.cpp: In lambda function:
src/esphome-dlms-meter/espdm.cpp:417:48: error: assignment of read-only location '"voltage_l1"[root]'
417 | root["voltage_l1"] = this->voltage_l1->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:418:48: error: assignment of read-only location '"voltage_l2"[root]'
418 | root["voltage_l2"] = this->voltage_l2->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:419:48: error: assignment of read-only location '"voltage_l3"[root]'
419 | root["voltage_l3"] = this->voltage_l3->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:424:48: error: assignment of read-only location '"current_l1"[root]'
424 | root["current_l1"] = this->current_l1->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:425:48: error: assignment of read-only location '"current_l2"[root]'
425 | root["current_l2"] = this->current_l2->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:426:48: error: assignment of read-only location '"current_l3"[root]'
426 | root["current_l3"] = this->current_l3->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:431:55: error: assignment of read-only location '"active_power_plus"[root]'
431 | root["active_power_plus"] = this->active_power_plus->state;
| ~~~~~~^~~~~~~~
src/esphome-dlms-meter/espdm.cpp:432:56: error: assignment of read-only location '"active_power_minus"[root]'
432 | root["active_power_minus"] = this->active_power_minus->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:437:56: error: assignment of read-only location '"active_energy_plus"[root]'
437 | root["active_energy_plus"] = this->active_energy_plus->state;
| ~~~~~^~~~~~~
src/esphome-dlms-meter/espdm.cpp:438:57: error: assignment of read-only location '"active_energy_minus"[root]'
438 | root["active_energy_minus"] = this->active_energy_minus->state;
| ~~~~~~^~~~~~~~
src/esphome-dlms-meter/espdm.cpp:443:58: error: assignment of read-only location '"reactive_energy_plus"[root]'
443 | root["reactive_energy_plus"] = this->reactive_energy_plus->state;
| ~~~~~~~^~~~~~~~~
src/esphome-dlms-meter/espdm.cpp:444:59: error: assignment of read-only location '"reactive_energy_minus"[root]'
444 | root["reactive_energy_minus"] = this->reactive_energy_minus->state;
| ~~~~~~^~~~~~~~
src/esphome-dlms-meter/espdm.cpp:449:47: error: assignment of read-only location '"timestamp"[root]'
449 | root["timestamp"] = this->timestamp->state;
| ~~~~^~~~~~
src/esphome-dlms-meter/espdm.cpp: At global scope:
src/esphome-dlms-meter/espdm.cpp:514:14: error: variable or field 'enable_mqtt' declared void
514 | void DlmsMeter::enable_mqtt(mqtt::MQTTClientComponent mqtt_client, const char topic)
| ^~~~~
src/esphome-dlms-meter/espdm.cpp:514:37: error: 'mqtt' has not been declared
514 | void DlmsMeter::enable_mqtt(mqtt::MQTTClientComponent mqtt_client, const char topic)
| ^~~~
src/esphome-dlms-meter/espdm.cpp:514:64: error: 'mqtt_client' was not declared in this scope
514 | void DlmsMeter::enable_mqtt(mqtt::MQTTClientComponent mqtt_client, const char topic)
| ^~~
src/esphome-dlms-meter/espdm.cpp:514:77: error: expected primary-expression before 'const'
514 | void DlmsMeter::enable_mqtt(mqtt::MQTTClientComponent mqtt_client, const char topic)
| ^~~~~
Compiling .pioenvs/smartmeter/src/esphome/components/uart/uart.cpp.o
*** [.pioenvs/smartmeter/src/esphome-dlms-meter/espdm.cpp.o] Error 1
========================= [FAILED] Took 15.38 seconds =========================`
@jenskn83 seems like it complains something about mqtt. Neither the component itself nor your attached yaml contains anything mqtt related.
Did you try / use the DomiStyle/esphome-dlms-meter implementation before? - seems to cause conflicts here. If yes and possible, please remove the other custom component folder before trying again.
Furthermore: because you have vkw you probably have to comment out (put # at beginning) The "provider: evn" and the evn related sensors
@SimonFischer04 i got it some minutes before to work. i needed some time to figure out i flipped TX and RX on the ESP32. the only thing is that my smart meter doesn't support "Reactive energy" 218_13_SmartMeter_Kundenschnittstelle_2604_web.pdf
@ximex means you got it working?
And about the "Reactive Energy": the provided yaml above is just a "maximum configuration" you can just remove the sensor and everything should still just work.
yes works now. but i have some strange spikes (ignore that the sensor is name BME280 - reused it for this test)
@ximex great to here that you got it working.
I find it hard to believe that my impl could somehow create these spikes. Reading through other threads seems that this could be a bug from the smartmeter sometimes sending bogus data. The usual workaround is f.e. to apply a filter to tge sensors and use median over multiple values. See here: https://www.esphome.io/components/sensor/
Did you use some other impl before to read data from your smartmeter before and did not experience this issue?
I tested the last days with https://cms.shrdzm.com/produkt/smartmeter-modul/ There i didn't see such a spike. but there is a mqtt server in between and don't know what this device all does.
i got now another spike but i have now the logs open. See "Active power taken from grid":
[22:04:21][D][uart_debug:114]: <<< 68:FA:FA:68:53:FF:00:01:67:DB:08:4B:46:4D:65:50:9B:C7:13:81:F8:20:00:03:CF:55:2C:9B:01:A4:2A:B0:B3:B9:1E:63:EC:10:13:B6:D2:82:42:88:40:6C:B3:33:08:28:EE:EC:61:31:8B:63:6F:B7:32:61:CD:2D:0E:E1:00:B0:30:08:98:C4:96:E1:6B:EC:B7:1A:64:41:03:C8:E1:55:63:E6:EC:4C:55:B8:AA:2D:18:F0:5C:10:B0:D0:E8:90:D3:1C:E4:C4:23:68:22:50:0C:97:1A:D6:97:F1:08:68:26:CA:F3:1D:34:9B
[22:04:21][D][uart_debug:114]: <<< 90:F7:5D:42:FC:8A:29:7A:6F:97:33:9A:94:DD:55:84:BA:38:A7:C4:E3:CB:46:26:B5:55:BB:EA:F7:D4:78:D6:9D:EF:D4:53:A1:07:50:C9:A8:93:ED:7F:F0:9F:EE:EF:84:9B:48:9D:BD:AD:7C:95:B2:FC:BB:8C:06:DB:6A:D7:31:45:A5:6D:CF:BE:5B:EB:1A:99:D4:C0:3D:A3:9D:EF:FC:E6:72:A1:88:C2:B1:EF:D9:C6:CA:5E:DE:54:84:EC:E1:4B:7C:F7:F3:60:BB:80:99:9C:DE:FA:48:69:37:0E:ED:48:3C:E3:EC:2A:2A:9A:95:9A:4A:34:B8:03:B4:9B:C3:36:13:9B:FC:9A:70:16
[22:04:22][D][uart_debug:114]: <<< 68:14:14:68:53:FF:11:01:67:FF:20:71:E0:C6:B8:8C:72:89:F5:75:42:A3:B1:73:B3:16
[22:04:23][V][dlms_meter:479]: 68.FA.FA.68.53.FF.00.01.67.DB.08.4B.46.4D.65.50.9B.C7.13.81.F8.20.00.03.CF.55.2C.9B.01.A4.2A.B0.B3.B9.1E.63.EC.10.13.B6.D2.82.42.88.40.6C.B3.33.08.28.EE.EC.61.31.8B.63.6F.B7.32.61.CD.2D.0E.E1.00.B0.30.08.98.C4.96.E1.6B.EC.B7.1A.64.41.03.C8.E1.55.63.E6.EC.4C.55.B8.AA.2D.18.F0.5C.10.B0.D0.E8.90.D3.1C.E4.C4.23.68.22.50.0C.97.1A.D6.97.F1.08.68.26.CA.F3.1D.34.9B.90.F7.5D.42.FC.8A.29.7A.6F.97.33.9A.94.DD.55.84.BA.38.A7.C4.E3.CB.46.26.B5.55.BB.EA.F7.D4.78.D6.9D.EF.D4.53.A1.07.50.C9.A8.93.ED.7F.F0.9F.EE.EF.84.9B.48.9D.BD.AD.7C.95.B2.FC.BB.8C.06.DB.6A.D7.31.45.A5.6D.CF.BE.5B.EB.1A.99.D4.C0.3D.A3.9D.EF.FC.E6.72.A1.88.C2.B1.EF.D9.C6.CA.5E.DE.54.84.EC.E1.4B.7C.F7.F3.60.BB.80.99.9C.DE.FA.48.69.37.0E.ED.48.3C.E3.EC.2A.2A.9A.95.9A.4A.34.B8.03.B4.9B.C3.36.13.9B.FC.9A.70.16.68.14.14.68.53.FF.11.01.67.FF.20.71.E0.C6.B8.8C.72.89.F5.75.42.A3.B1.73.B3.16 (282)
[22:04:23][V][dlms_meter:046]: Parsing M-Bus frames
[22:04:23][V][dlms_meter:052]: MBUS: Parsing frame
[22:04:23][V][dlms_meter:052]: MBUS: Parsing frame
[22:04:23][V][dlms_meter:095]: Parsing DLMS header
[22:04:23][V][dlms_meter:161]: Decrypting payload
[22:04:23][V][dlms_meter:193]: Decrypted payload: 243
[22:04:23][V][dlms_meter:194]: 0F.80.F1.4B.72.0C.07.E8.04.1D.01.16.04.14.00.FF.88.80.02.23.09.0C.07.E8.04.1D.01.16.04.14.00.FF.88.80.09.06.01.00.01.08.00.FF.06.00.3D.F2.56.02.02.0F.00.16.1E.09.06.01.00.02.08.00.FF.06.00.00.00.00.02.02.0F.00.16.1E.09.06.01.00.01.07.00.FF.06.81.00.00.78.02.02.0F.00.16.1B.09.06.01.00.02.07.00.FF.06.00.00.00.00.02.02.0F.00.16.1B.09.06.01.00.20.07.00.FF.12.09.24.02.02.0F.FF.16.23.09.06.01.00.34.07.00.FF.12.09.32.02.02.0F.FF.16.23.09.06.01.00.48.07.00.FF.12.09.1B.02.02.0F.FF.16.23.09.06.01.00.1F.07.00.FF.12.00.03.02.02.0F.FE.16.21.09.06.01.00.33.07.00.FF.12.00.1F.02.02.0F.FE.16.21.09.06.01.00.47.07.00.FF.12.00.34.02.02.0F.FE.16.21.09.06.01.00.0D.07.00.FF.12.03.3C.02.02.0F.FD.16.FF.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX (243)
[22:04:23][V][dlms_meter:203]: Decoding payload
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 7
[22:04:23][V][dlms_meter:248]: currentPosition: 21
[22:04:23][V][dlms_meter:309]: Found Timestamp without obisMedium
[22:04:23][V][dlms_meter:385]: Arrived on OctetString
[22:04:23][V][dlms_meter:386]: currentPosition: 21, plaintext: 12
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 43
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 100
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 119
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 136
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 153
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 170
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 187
[22:04:23][V][dlms_meter:248]: currentPosition: 204
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 1
[22:04:23][V][dlms_meter:248]: currentPosition: 221
[22:04:23][V][dlms_meter:247]: obisCode (OBIS_A): 49
[22:04:23][V][dlms_meter:248]: currentPosition: 230
[22:04:23][V][dlms_meter:312]: Found MeterNumber without obisMedium
[22:04:23][V][dlms_meter:385]: Arrived on OctetString
[22:04:23][V][dlms_meter:386]: currentPosition: 230, plaintext: 12
[22:04:23][V][dlms_meter:419]: Constructing MeterNumber...
[22:04:23][I][dlms_meter:459]: Received valid data
[22:04:23][V][sensor:043]: 'Voltage L1': Received new state 234.000000
[22:04:23][D][sensor:094]: 'Voltage L1': Sending state 234.00000 V with 1 decimals of accuracy
[22:04:23][V][sensor:043]: 'Voltage L2': Received new state 235.399994
[22:04:23][D][sensor:094]: 'Voltage L2': Sending state 235.39999 V with 1 decimals of accuracy
[22:04:23][V][sensor:043]: 'Voltage L3': Received new state 233.100006
[22:04:23][D][sensor:094]: 'Voltage L3': Sending state 233.10001 V with 1 decimals of accuracy
[22:04:23][V][sensor:043]: 'Current L1': Received new state 0.030000
[22:04:23][D][sensor:094]: 'Current L1': Sending state 0.03000 A with 2 decimals of accuracy
[22:04:23][V][sensor:043]: 'Current L2': Received new state 0.310000
[22:04:23][D][sensor:094]: 'Current L2': Sending state 0.31000 A with 2 decimals of accuracy
[22:04:23][V][sensor:043]: 'Current L3': Received new state 0.520000
[22:04:23][D][sensor:094]: 'Current L3': Sending state 0.52000 A with 2 decimals of accuracy
[22:04:23][V][sensor:043]: 'Active power taken from grid': Received new state 2164260864.000000
[22:04:23][D][sensor:094]: 'Active power taken from grid': Sending state 2164260864.00000 W with 0 decimals of accuracy
[22:04:23][V][sensor:043]: 'Active power put into grid': Received new state 0.000000
[22:04:23][D][sensor:094]: 'Active power put into grid': Sending state 0.00000 W with 0 decimals of accuracy
[22:04:23][V][sensor:043]: 'Active energy taken from grid': Received new state 4059734.000000
[22:04:23][D][sensor:094]: 'Active energy taken from grid': Sending state 4059734.00000 Wh with 0 decimals of accuracy
[22:04:23][V][sensor:043]: 'Active energy put into grid': Received new state 0.000000
[22:04:23][D][sensor:094]: 'Active energy put into grid': Sending state 0.00000 Wh with 0 decimals of accuracy
[22:04:23][V][sensor:043]: 'Reactive energy taken from grid': Received new state 0.000000
[22:04:23][D][sensor:094]: 'Reactive energy taken from grid': Sending state 0.00000 Wh with 0 decimals of accuracy
[22:04:23][V][sensor:043]: 'Reactive energy put into grid': Received new state 0.000000
[22:04:23][D][sensor:094]: 'Reactive energy put into grid': Sending state 0.00000 Wh with 0 decimals of accuracy
[22:04:23][V][sensor:043]: 'Power Factor': Received new state 0.828000
[22:04:23][D][sensor:094]: 'Power Factor': Sending state 0.82800 with 3 decimals of accuracy
[22:04:23][V][text_sensor:013]: 'timestamp': Received new state 2024-04-29T22:04:20Z
[22:04:23][D][text_sensor:064]: 'timestamp': Sending state '2024-04-29T22:04:20Z'
[22:04:23][V][text_sensor:013]: 'meterNumber': Received new state XXX
[22:04:23][D][text_sensor:064]: 'meterNumber': Sending state 'XXX'
[22:04:23][W][component:237]: Component dlms_meter took a long time for an operation (612 ms).
[22:04:23][W][component:238]: Components should block for at most 30 ms.
masked the meter number
Are this warnings expected?
[22:04:13][W][component:237]: Component dlms_meter took a long time for an operation (606 ms).
[22:04:13][W][component:238]: Components should block for at most 30 ms.
Edit: also got now one with 0V and this:
[22:32:32][E][dlms_meter:078]: MBUS: Invalid stop byte
...
[22:33:47][E][dlms_meter:210]: OBIS: Unsupported OBIS header type: 2f
after removing the debug logs and the reactive energy i'm now down to ~130ms:
[22:34:23][W][component:237]: Component dlms_meter took a long time for an operation (137 ms).
[22:34:23][W][component:238]: Components should block for at most 30 ms.
Edit2: maybe related to that? https://github.com/DomiStyle/esphome-dlms-meter/issues/7#issuecomment-1062191356
I tested the last days with https://cms.shrdzm.com/produkt/smartmeter-modul/
Do you by chance remember how often this sends data? If there is a greater than 5sec delay its very possible they also do some filtering
Are this warnings expected?
Kind of. Unfortunately I don't see much i can do here as reading the data and decrying takes time and I also dont want to miss a byte while reading. Also sending that much logs takes time for the esp - but verbose logging should be enabled only for debugging anyways.
But should not be a problem, a lot of other components also create such warnings. Just mean other components are blocked while this one is working. (Do webserver f.e. does sometakes take some time to render,...) If your esp is only responsible for reading the smartmeter and sending data to other source for further processing, this really shouldn't matter.
i got now another spike but i have now the logs open. See "Active power taken from grid":
I will (hopefully) look through the decrypted packet you provided a bit more tomorrow to see if this gives some more insight.
OBIS: Unsupported OBIS header type: 2f
Do you by chance have the full decrypted packet for this one also?
@jenskn83 seems like it complains something about mqtt. Neither the component itself nor your attached yaml contains anything mqtt related.
Did you try / use the DomiStyle/esphome-dlms-meter implementation before? - seems to cause conflicts here. If yes and possible, please remove the other custom component folder before trying again.
Furthermore: because you have vkw you probably have to comment out (put # at beginning) The "provider: evn" and the evn related sensors
Thanks for your answer. i tried with a new setup.
now i receive a different error message:
[09:40:43][E][dlms_meter:072]: MBUS: Frame too big for received data [09:40:44][E][dlms_meter:072]: MBUS: Frame too big for received data [09:40:48][E][dlms_meter:072]: MBUS: Frame too big for received data [09:40:49][E][dlms_meter:072]: MBUS: Frame too big for received data [09:40:53][D][api:102]: Accepted 192.168.178.70 [09:40:53][W][api.connection:091]: : Socket operation failed: HANDSHAKESTATE_READ_FAILED errno=11 [09:40:53][E][dlms_meter:072]: MBUS: Frame too big for received data [09:40:54][E][dlms_meter:072]: MBUS: Frame too big for received data [09:40:58][E][dlms_meter:072]: MBUS: Frame too big for received data [09:40:59][E][dlms_meter:064]: MBUS: Length bytes do not match
i attached the Log file. (logs_test2_logs.txt) logs_test2_logs.txt
when i switch to logging level "Very_Verbose" the built failed with several error messages (logs_test2_VERY_VERBOSE.txt) logs_test2_VERY_VERBOSE.txt
here the yaml (meter.yaml) meter.yaml.txt
can you help me with these issues please? Jens
according to this data it seems unfortunately that the smartmeter is in fact sending wrong data. when checking with https://www.gurux.fi/GuruxDLMSTranslator and using the OBIS code - 1.0.1.7.0.255 Momentanleistung P+ found here: https://www.netz-noe.at/Download-(1)/Smart-Meter/218_9_SmartMeter_Kundenschnittstelle_lektoriert_14.aspx I get an value of 81000078 W as Active power taken from grid'. So not quite 2164260864.000000W - seems like my impl cant handle that big values and overflows - but 81000078 W is still wrong.
maybe related to that? https://github.com/DomiStyle/esphome-dlms-meter/issues/7#issuecomment-1062191356
Reading this seems like they got partly just junk data. Don't think how it could result in (single) packets with such peeks.
i guess adding a filter as workaround is the best option we have so far. see here f.e. (also others discussing / seeing weird values): https://github.com/DomiStyle/esphome-dlms-meter/issues/16#issuecomment-1100924968
@jenskn83
[09:40:53][W][api.connection:091]: : Socket operation failed: HANDSHAKESTATE_READ_FAILED errno=11
I assume: you set "baud_rate: 0" in the logger section of your yaml because you use an 8266 which has only 1 uart (therefore you get the logs from the webserver). right?
i attached the Log file. (logs_test2_logs.txt)
this alone does not give much insight unfortunately
when i switch to logging level "Very_Verbose" the built failed with several error messages (logs_test2_VERY_VERBOSE.txt)
very weird that it can't compile basic esphome logging functionality. can you please try with loglevel VERBOSE. PS: be careful with VERY_VERBOSE, as this also logs the decryption key (as the logs also warn you at the very beginning)!
Furthermore: are you able to temporarily test with an esp32? So we better pinpoint the root issue. 8266 should theoretically work, but I'm using an esp32 here and did not hook up the smartmeter and fully test the 8266 version.
@SimonFischer04 thanks a lot. with an esp32 your implementation runs out of the box!
Jens
@SimonFischer04 thanks a lot. with an esp32 your implementation runs out of the box!
Jens
Thanks for reporting back and great that it works for you.
I guess I will test the 8266 implementation again myself and see if I can get it working.
just updated the initial comment to clarify / provide examples for the generic and netznoe grid operator settings. also added info about logging (levels)
Running a ESP8266 d1_mini EVN KaifaMA309M without any issue :+1:
Hello Simon, the setup ESP32, KaifaMA309M and SalzburgNetz works without any problem.
FYI: rx pin is GPIO17 (UART2) (tx is GPIO 16)
I' ve used following adapter: https://de.aliexpress.com/item/4000153285401.html (slave adapter) similar to: https://www.amazon.de/-/en/Serial-Master-Converter-Communication-Control-TTL-MBUS-Slave/dp/B0BXPTMGDT
mind: use 3.3 V NOT 5 V (Vin) when wireing to ESP32
Hey Simon, I tried your version and now everything works as it should! Thanks a lot.
My setup is: ESP32, Kaifa MA309M and my engery provider is TINETZ!
@ximex Hey Thomas,
hast du mittlerweile eine Lösung für die Spikes in den Rohdaten gefunden? Sie hauen mir regelmäßig die Diagramme durcheinander...
Viele Grüße Jens
sorry hab es noch nicht weiter untersucht
Hi, I recently started creating an esphome component for reading data from dlms encryped smartmeters. (used a lot in Austria)
Great thanks to DomiStyle(https://github.com/DomiStyle/esphome-dlms-meter) and firegore for the basic implementation. But - as custom-components are deprecated now - I implemented it in a proper esphome-component, added support for evn smartmeters and did some more smaller fixes / changes.
Requirements esp(32 or 8266) and some mbus to uart converter. More details see for example: https://github.com/DomiStyle/esphome-dlms-meter?tab=readme-ov-file#requirements
Here is a basic yaml config you can try out for now:
If you have Netz NÖ / EVN:
any other grid operator:
Would love to get some feedback if it works for you also / you encounter some problems. If you test please report back your findings here:
At least for now, this issue should be seen also as a (general) discussion thread around esp(home) / reading dlms encrypted data from smartmeters. So any input / feedback is welcome!
To help with debugging, please provide logs after enabling logger: level: VERBOSE (and tx_buffer_size: 1024 - required to log full packets) PS: be careful with VERY_VERBOSE, as this also logs the decryption key (like the logs also warn at the very beginning)!
PS: my plan is to ultimately get this upstreamed into main esphome repo itself, but want to get some feedback / testing first.
Links to other issues I found around this topic: