Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Telegram Decryption for Engelmann Heat cost allocators HCA E2 failed #820

Closed
GitKunde opened this issue Jan 21, 2023 · 18 comments
Closed

Telegram Decryption for Engelmann Heat cost allocators HCA E2 failed #820

GitKunde opened this issue Jan 21, 2023 · 18 comments
Labels

Comments

@GitKunde
Copy link

Hi,

I'm using heat cost allocators "HCA E2" from Engelmann Sensors (Manufacturer ID = 14c5). I can receive telegrams (see example below) but I'm struggling to decrypt the data. I'm pretty sure to use the right key (standard key). So I tried to analyze the telegram at you nice web page (https://wmbusmeters.org) and got same result (failed decryption. Wrong key?).
Are there any hints to find my mistake? Or is there anything special to regard with these type of sensors?

Thanks for your great work.

Example: cf44c5145041219029087a4800c025b1ca6bee1bba1e4b791ae0a22869dc66b523192799bc8a8a5a866a87a76450bd978f9a84db9aea4ac67c82f708784e16804eb783a38bc481653f002eed922a21c84ed8e2dc228af45b49822abb382ba798db0a9ea0eb40b5382b682a8e40466a5224137555860d35b56bfa726b17fcf6cb1f2f00ff174974f007bf440a27b6811cd20428c2f039248a8e2abbfec3c3908f580e36519ef1b66ac63f59ac8c5fbe2966ac18ad8b953ff51679db9f78e06c2e0b1d7931c8b6e0c219808adafe4532e816

AES-128 Standard-Key:
00112233445566778899aabbccddeeff

IV:
c5145041219029084848484848484848

@JensHoRi
Copy link

JensHoRi commented Jan 27, 2023

I have ordered Engelmann 2 years ago, no one of them I was able to get running with different software.

But I got a device specific key for everyone of them.

I ordered somewhere else Lorenz then. Got individual keys, everything worked out of the box after weetmuts (THANKS) added some additional changes for further values :-)

@weetmuts
Copy link
Member

How did you receive these telegrams? It is a bit odd that when wmbusmeters tries to decrypt the telegram
the number of encrypted blocks add up to 192 which leaves 2 unencrypted bytes at the end.
This is sort of allowed, but usually there is more bytes at the end, with dif+vif+data codes....

Could the telegram have some dll-crc bytes not yet removed?

@GitKunde
Copy link
Author

Thanks for your comments!
In the meantime I found out the issue. I was sure with the AES-Key because it worked with Engelmann-readout software. But this software is using automatically the Engelmann-master-Key if the configured Key (in my case: 0x00112233...) is not working. But this master key seems not to be public and can not use with "self-made"-software. Or is there anybody who can help me with that. Otherwise it would be necessary to reprogram a new private AES-Key in each devise. Might be that only professional services are able to do this.
I received the telegrams just by using an AMB8465-M - M-Bus USB-Stick (+USBtoSerial driver) and read it with python. I just cutted the firs 2 Bytes (FF 03).

@weetmuts
Copy link
Member

Ah, then you are not speaking the proper amb8465-m protocol and you get the crc bytes at the end as well.
Why do you not let wmbusmeters talk to the amb8465-m instead?

@GitKunde
Copy link
Author

GitKunde commented Mar 20, 2023 via email

@Skysurfer-14
Copy link

Is it possible for me, to change the AES key of the device?

@GitKunde
Copy link
Author

GitKunde commented Mar 20, 2023 via email

@Skysurfer-14
Copy link

Engelmann, the manufacturer of the HCA e2 gives the AES Manufacturer Key not to small customers (like me). But the intermediaries offer reprogramming of the devices at a small extra cost (3,59€ at zaehlershop.com) if you buy the devices there.

@Skysurfer-14
Copy link

I now have a HCA e2 Heat Cost Allocator here (Radio mode: C-mode OMS 4 Mode 5 with own AES key, Radio time: 7 am - 7 pm daily) and trying to decode the telegrams. This is what I receive:

(serial) received binary "A5C203CE44C5149126412331087A6B0BC02562235F3EA78C0A58BBB4284B7A9AEBE11943EB52740634A29C9E08CD2C3D90717360D2E342A39DACE7A849D03DCA80F4C424C0DE1A79A2A40F0EAC886C9417FA084BDFB8BE21A8E904AA41946E51D1B5E2D929127C6D1470EAF093497B7574CFB22FF13A866812FD780D9EBE9EB4DE2E8CADEF92F01FBBFFD42B1D7FE0FD8093D76F6015029EF9F6F96E11C4094C79D0CB547DAF69FD7F7CC98F57E6CB4CF147ADD5BAF247E03EF7AFE51EAF58AC905E756C17B077E58FA2E7B3C359BA8867A2938934"
(im871a) checkIM871AFrame "A5C203CE44C5149126412331087A6B0BC02562235F3EA78C0A58BBB4284B7A9AEBE11943EB52740634A29C9E08CD2C3D90717360D2E342A39DACE7A849D03DCA80F4C424C0DE1A79A2A40F0EAC886C9417FA084BDFB8BE21A8E904AA41946E51D1B5E2D929127C6D1470EAF093497B7574CFB22FF13A866812FD780D9EBE9EB4DE2E8CADEF92F01FBBFFD42B1D7FE0FD8093D76F6015029EF9F6F96E11C4094C79D0CB547DAF69FD7F7CC98F57E6CB4CF147ADD5BAF247E03EF7AFE51EAF58AC905E756C17B077E58FA2E7B3C359BA8867A2938934"
(im871a) has_timestamp=0 has_rssi=1 has_crc16=1
(im871a) endpoint 2
(im871a) msgid 3
(im871a) rssi 147 (-49 dBm)
(im871a) got crc16 3489 expected 3489
(im871a) received full frame
(wmbus) parseDLL @0 207
(wmbus) parseELL @10 197
(wmbus) parseNWL @10 197
(wmbus) parseAFL @10 197
(wmbus) parseTPL @10 197
(meter) ExampleMeter: for me? 23412691 in 23412691
(meter) ExampleMeter: yes for me
(meter) ExampleMeter(1) auto  handling telegram from 23412691
(meter) ExampleMeter 23412691 "CE44C5149126412331087A6B0BC02562235F3EA78C0A58BBB4284B7A9AEBE11943EB52740634A29C9E08CD2C3D90717360D2E342A39DACE7A849D03DCA80F4C424C0DE1A79A2A40F0EAC886C9417FA084BDFB8BE21A8E904AA41946E51D1B5E2D929127C6D1470EAF093497B7574CFB22FF13A866812FD780D9EBE9EB4DE2E8CADEF92F01FBBFFD42B1D7FE0FD8093D76F6015029EF9F6F96E11C4094C79D0CB547DAF69FD7F7CC98F57E6CB4CF147ADD5BAF247E03EF7AFE51EAF58AC905E756C17B077E58FA2E7B3C359BA8867A2"
(wmbus) parseDLL @0 207
(telegram) DLL L=ce C=44 (from meter SND_NR) M=14c5 (EFE) A=23412691 VER=31 TYPE=08 (Heat Cost Allocator) (driver unknown!) DEV=im871a[00103765] RSSI=-49
(wmbus) parseELL @10 197
(wmbus) parseNWL @10 197
(wmbus) parseAFL @10 197
(wmbus) parseTPL @10 197
(TPL) num encrypted blocks 12 (192 bytes and remaining unencrypted 0 bytes)
(TPL) AES CBC IV decrypting "62235F3EA78C0A58BBB4284B7A9AEBE11943EB52740634A29C9E08CD2C3D90717360D2E342A39DACE7A849D03DCA80F4C424C0DE1A79A2A40F0EAC886C9417FA084BDFB8BE21A8E904AA41946E51D1B5E2D929127C6D1470EAF093497B7574CFB22FF13A866812FD780D9EBE9EB4DE2E8CADEF92F01FBBFFD42B1D7FE0FD8093D76F6015029EF9F6F96E11C4094C79D0CB547DAF69FD7F7CC98F57E6CB4CF147ADD5BAF247E03EF7AFE51EAF58AC905E756C17B077E58FA2E7B3C359BA8867A2"
(TPL) IV C5149126412331086B6B6B6B6B6B6B6B
(TPL) decrypted  "2F2F046D1829FE23036E000000426C0000436E00000082016CBF2C83016E000000C2016E000082026E0000C2026E000082036E0000C2036E000082046E0000C2046E000082056E0000C2056E000082066E0000C2066E000082076E0000C2076E000082086E0000C2086E000082096E0000C2096E0000820A6E0000C20A6E0000820B6E0000C20B6E0000820C6E0000C20C6E0000820D6E0000C20D6E0000820E6E0000C20E6E0000820F6E0000C20F6E0000317F08346D302EFB232F2F2F2F2F"
(telegram) TPL CI=7a ACC=6b STS=0b CFG=25c0 (synchronous AES_CBC_IV nb=12 cntn=0 ra=0 hc=0)
telegram=|CE44C5149126412331087A6B0BC0252F2F_046D1829FE23036E000000426C0000436E00000082016CBF2C83016E000000C2016E000082026E0000C2026E000082036E0000C2036E000082046E0000C2046E000082056E0000C2056E000082066E0000C2066E000082076E0000C2076E000082086E0000C2086E000082096E0000C2096E0000820A6E0000C20A6E0000820B6E0000C20B6E0000820C6E0000C20C6E0000820D6E0000C20D6E0000820E6E0000C20E6E0000820F6E0000C20F6E0000317F08346D302EFB232F2F2F2F2F|+73253
(auto) 000   : ce length (206 bytes)
(auto) 001   : 44 dll-c (from meter SND_NR)
(auto) 002   : c514 dll-mfct (EFE)
(auto) 004   : 91264123 dll-id (23412691)
(auto) 008   : 31 dll-version
(auto) 009   : 08 dll-type (Heat Cost Allocator)
(auto) 010   : 7a tpl-ci-field (EN 13757-3 Application Layer (short tplh))
(auto) 011   : 6b tpl-acc-field
(auto) 012   : 0b tpl-sts-field (ALARM PERMANENT_ERROR)
(auto) 013   : c025 tpl-cfg 25c0 (synchronous AES_CBC_IV nb=12 cntn=0 ra=0 hc=0 )
(auto) 015   : 2f2f decrypt check bytes (OK)
(auto) 017   : 04 dif (32 Bit Integer/Binary Instantaneous value)
(auto) 018   : 6D vif (Date and time type)
(auto) 019 C?: 1829FE23
(auto) 023   : 03 dif (24 Bit Integer/Binary Instantaneous value)
(auto) 024   : 6E vif (Units for H.C.A.)
(auto) 025 C?: 000000
(auto) 028   : 42 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 029   : 6C vif (Date type G)
(auto) 030 C?: 0000
(auto) 032   : 43 dif (24 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 033   : 6E vif (Units for H.C.A.)
(auto) 034 C?: 000000
(auto) 037   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 038   : 01 dife (subunit=0 tariff=0 storagenr=2)
(auto) 039   : 6C vif (Date type G)
(auto) 040 C?: BF2C
(auto) 042   : 83 dif (24 Bit Integer/Binary Instantaneous value)
(auto) 043   : 01 dife (subunit=0 tariff=0 storagenr=2)
(auto) 044   : 6E vif (Units for H.C.A.)
(auto) 045 C?: 000000
(auto) 048   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 049   : 01 dife (subunit=0 tariff=0 storagenr=3)
(auto) 050   : 6E vif (Units for H.C.A.)
(auto) 051 C?: 0000
(auto) 053   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 054   : 02 dife (subunit=0 tariff=0 storagenr=4)
(auto) 055   : 6E vif (Units for H.C.A.)
(auto) 056 C?: 0000
(auto) 058   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 059   : 02 dife (subunit=0 tariff=0 storagenr=5)
(auto) 060   : 6E vif (Units for H.C.A.)
(auto) 061 C?: 0000
(auto) 063   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 064   : 03 dife (subunit=0 tariff=0 storagenr=6)
(auto) 065   : 6E vif (Units for H.C.A.)
(auto) 066 C?: 0000
(auto) 068   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 069   : 03 dife (subunit=0 tariff=0 storagenr=7)
(auto) 070   : 6E vif (Units for H.C.A.)
(auto) 071 C?: 0000
(auto) 073   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 074   : 04 dife (subunit=0 tariff=0 storagenr=8)
(auto) 075   : 6E vif (Units for H.C.A.)
(auto) 076 C?: 0000
(auto) 078   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 079   : 04 dife (subunit=0 tariff=0 storagenr=9)
(auto) 080   : 6E vif (Units for H.C.A.)
(auto) 081 C?: 0000
(auto) 083   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 084   : 05 dife (subunit=0 tariff=0 storagenr=10)
(auto) 085   : 6E vif (Units for H.C.A.)
(auto) 086 C?: 0000
(auto) 088   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 089   : 05 dife (subunit=0 tariff=0 storagenr=11)
(auto) 090   : 6E vif (Units for H.C.A.)
(auto) 091 C?: 0000
(auto) 093   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 094   : 06 dife (subunit=0 tariff=0 storagenr=12)
(auto) 095   : 6E vif (Units for H.C.A.)
(auto) 096 C?: 0000
(auto) 098   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 099   : 06 dife (subunit=0 tariff=0 storagenr=13)
(auto) 100   : 6E vif (Units for H.C.A.)
(auto) 101 C?: 0000
(auto) 103   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 104   : 07 dife (subunit=0 tariff=0 storagenr=14)
(auto) 105   : 6E vif (Units for H.C.A.)
(auto) 106 C?: 0000
(auto) 108   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 109   : 07 dife (subunit=0 tariff=0 storagenr=15)
(auto) 110   : 6E vif (Units for H.C.A.)
(auto) 111 C?: 0000
(auto) 113   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 114   : 08 dife (subunit=0 tariff=0 storagenr=16)
(auto) 115   : 6E vif (Units for H.C.A.)
(auto) 116 C?: 0000
(auto) 118   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 119   : 08 dife (subunit=0 tariff=0 storagenr=17)
(auto) 120   : 6E vif (Units for H.C.A.)
(auto) 121 C?: 0000
(auto) 123   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 124   : 09 dife (subunit=0 tariff=0 storagenr=18)
(auto) 125   : 6E vif (Units for H.C.A.)
(auto) 126 C?: 0000
(auto) 128   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 129   : 09 dife (subunit=0 tariff=0 storagenr=19)
(auto) 130   : 6E vif (Units for H.C.A.)
(auto) 131 C?: 0000
(auto) 133   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 134   : 0A dife (subunit=0 tariff=0 storagenr=20)
(auto) 135   : 6E vif (Units for H.C.A.)
(auto) 136 C?: 0000
(auto) 138   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 139   : 0A dife (subunit=0 tariff=0 storagenr=21)
(auto) 140   : 6E vif (Units for H.C.A.)
(auto) 141 C?: 0000
(auto) 143   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 144   : 0B dife (subunit=0 tariff=0 storagenr=22)
(auto) 145   : 6E vif (Units for H.C.A.)
(auto) 146 C?: 0000
(auto) 148   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 149   : 0B dife (subunit=0 tariff=0 storagenr=23)
(auto) 150   : 6E vif (Units for H.C.A.)
(auto) 151 C?: 0000
(auto) 153   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 154   : 0C dife (subunit=0 tariff=0 storagenr=24)
(auto) 155   : 6E vif (Units for H.C.A.)
(auto) 156 C?: 0000
(auto) 158   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 159   : 0C dife (subunit=0 tariff=0 storagenr=25)
(auto) 160   : 6E vif (Units for H.C.A.)
(auto) 161 C?: 0000
(auto) 163   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 164   : 0D dife (subunit=0 tariff=0 storagenr=26)
(auto) 165   : 6E vif (Units for H.C.A.)
(auto) 166 C?: 0000
(auto) 168   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 169   : 0D dife (subunit=0 tariff=0 storagenr=27)
(auto) 170   : 6E vif (Units for H.C.A.)
(auto) 171 C?: 0000
(auto) 173   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 174   : 0E dife (subunit=0 tariff=0 storagenr=28)
(auto) 175   : 6E vif (Units for H.C.A.)
(auto) 176 C?: 0000
(auto) 178   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 179   : 0E dife (subunit=0 tariff=0 storagenr=29)
(auto) 180   : 6E vif (Units for H.C.A.)
(auto) 181 C?: 0000
(auto) 183   : 82 dif (16 Bit Integer/Binary Instantaneous value)
(auto) 184   : 0F dife (subunit=0 tariff=0 storagenr=30)
(auto) 185   : 6E vif (Units for H.C.A.)
(auto) 186 C?: 0000
(auto) 188   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
(auto) 189   : 0F dife (subunit=0 tariff=0 storagenr=31)
(auto) 190   : 6E vif (Units for H.C.A.)
(auto) 191 C?: 0000
(auto) 193   : 31 dif (8 Bit Integer/Binary Value during error state)
(auto) 194   : 7F vif (Manufacturer specific)
(auto) 195 C?: 08
(auto) 196   : 34 dif (32 Bit Integer/Binary Value during error state)
(auto) 197   : 6D vif (Date and time type)
(auto) 198 C?: 302EFB23
(auto) 202   : 2F skip
(auto) 203   : 2F skip
(auto) 204   : 2F skip
(auto) 205   : 2F skip
(auto) 206   : 2F skip

The tpl-acc-field is incremented on every telegram and tpl-sts-field (ALARM PERMANENT_ERROR) could be active, since the tamper switch is active.
How to build a driver for this H.C.A. ?

@weetmuts
Copy link
Member

Very nice! Make a copy of the driver_eursii.cc and to driver_hcae2.cc and change all eurisii references inside to hcae2. Update the addDetection to match your telegram.

Now build wmbusmeters with only this driver (speeds things up)
make DRIVER=hcae2

then do
./build/wmbusmeters --analyze CE44C5149126412331087A6B0BC0252F2F_046D1829FE23036E000000426C0000436E00000082016CBF2C83016E000000C2016E000082026E0000C2026E000082036E0000C2036E000082046E0000C2046E000082056E0000C2056E000082066E0000C2066E000082076E0000C2076E000082086E0000C2086E000082096E0000C2096E0000820A6E0000C20A6E0000820B6E0000C20B6E0000820C6E0000C20C6E0000820D6E0000C20D6E0000820E6E0000C20E6E0000820F6E0000C20F6E0000317F08346D302EFB232F2F2F2F2F

And start tweaking the internal rules of the driver until you catch all fields. I.e. they become green.
Add this test telegram at the end of the source, so when you are done, you can do:
make
make test

A useful shortcut:
addOptionalCommonFields("meter_datetime");

Please have a go! Let me know if you have any questions. You can do an early pull request and I will help out!

@Skysurfer-14
Copy link

I'm glad for your help!
But what do you mean with "Update the addDetection to match your telegram"?
After "./build/wmbusmeters --analyze ...." I get this with some fields green:

chris@raspberrypi:~/wmbusmeters $ sudo ./build/wmbusmeters --analyze CE44C5149126412331087A6B0BC0252F2F_046D1829FE23036E000000426C0000436E00000082016CBF2C83016E000000C2016E000082026E0000C2026E000082036E0000C2036E000082046E0000C2046E000082056E0000C2056E000082066E0000C2066E000082076E0000C2076E000082086E0000C2086E000082096E0000C2096E0000820A6E0000C20A6E0000820B6E0000C20B6E0000820C6E0000C20C6E0000820D6E0000C20D6E0000820E6E0000C20E6E0000820F6E0000C20F6E0000317F08346D302EFB232F2F2F2F2F
Auto driver  : not found!
Best driver  : hcae2 39/80
Using driver : hcae2 39/80
000   : ce length (206 bytes)
001   : 44 dll-c (from meter SND_NR)
002   : c514 dll-mfct (EFE)
004   : 91264123 dll-id (23412691)
008   : 31 dll-version
009   : 08 dll-type (Heat Cost Allocator)
010   : 7a tpl-ci-field (EN 13757-3 Application Layer (short tplh))
011   : 6b tpl-acc-field
012   : 0b tpl-sts-field (ALARM PERMANENT_ERROR)(ALARM PERMANENT_ERROR)(ALARM PERMANENT_ERROR)
013   : c025 tpl-cfg 25c0 (synchronous AES_CBC_IV nb=12 cntn=0 ra=0 hc=0 )
015   : 2f2f already decrypted check bytes
017   : 04 dif (32 Bit Integer/Binary Instantaneous value)
018   : 6D vif (Date and time type)
019 C?: 1829FE23
023   : 03 dif (24 Bit Integer/Binary Instantaneous value)
024   : 6E vif (Units for H.C.A.)
025 C!: 000000 ("current_consumption_hca":0)
028   : 42 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
029   : 6C vif (Date type G)
030 C?: 0000
032   : 43 dif (24 Bit Integer/Binary Instantaneous value storagenr=1)
033   : 6E vif (Units for H.C.A.)
034 C!: 000000 ("consumption_at_set_date_1_hca":0) ("consumption_at_set_date_hca":0)
037   : 82 dif (16 Bit Integer/Binary Instantaneous value)
038   : 01 dife (subunit=0 tariff=0 storagenr=2)
039   : 6C vif (Date type G)
040 C?: BF2C
042   : 83 dif (24 Bit Integer/Binary Instantaneous value)
043   : 01 dife (subunit=0 tariff=0 storagenr=2)
044   : 6E vif (Units for H.C.A.)
045 C!: 000000 ("consumption_at_set_date_2_hca":0)
048   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
049   : 01 dife (subunit=0 tariff=0 storagenr=3)
050   : 6E vif (Units for H.C.A.)
051 C!: 0000 ("consumption_at_set_date_3_hca":0)
053   : 82 dif (16 Bit Integer/Binary Instantaneous value)
054   : 02 dife (subunit=0 tariff=0 storagenr=4)
055   : 6E vif (Units for H.C.A.)
056 C!: 0000 ("consumption_at_set_date_4_hca":0)
058   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
059   : 02 dife (subunit=0 tariff=0 storagenr=5)
060   : 6E vif (Units for H.C.A.)
061 C!: 0000 ("consumption_at_set_date_5_hca":0)
063   : 82 dif (16 Bit Integer/Binary Instantaneous value)
064   : 03 dife (subunit=0 tariff=0 storagenr=6)
065   : 6E vif (Units for H.C.A.)
066 C!: 0000 ("consumption_at_set_date_6_hca":0)
068   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
069   : 03 dife (subunit=0 tariff=0 storagenr=7)
070   : 6E vif (Units for H.C.A.)
071 C!: 0000 ("consumption_at_set_date_7_hca":0)
073   : 82 dif (16 Bit Integer/Binary Instantaneous value)
074   : 04 dife (subunit=0 tariff=0 storagenr=8)
075   : 6E vif (Units for H.C.A.)
076 C!: 0000 ("consumption_at_set_date_8_hca":0)
078   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
079   : 04 dife (subunit=0 tariff=0 storagenr=9)
080   : 6E vif (Units for H.C.A.)
081 C!: 0000 ("consumption_at_set_date_9_hca":0)
083   : 82 dif (16 Bit Integer/Binary Instantaneous value)
084   : 05 dife (subunit=0 tariff=0 storagenr=10)
085   : 6E vif (Units for H.C.A.)
086 C!: 0000 ("consumption_at_set_date_10_hca":0)
088   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
089   : 05 dife (subunit=0 tariff=0 storagenr=11)
090   : 6E vif (Units for H.C.A.)
091 C!: 0000 ("consumption_at_set_date_11_hca":0)
093   : 82 dif (16 Bit Integer/Binary Instantaneous value)
094   : 06 dife (subunit=0 tariff=0 storagenr=12)
095   : 6E vif (Units for H.C.A.)
096 C!: 0000 ("consumption_at_set_date_12_hca":0)
098   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
099   : 06 dife (subunit=0 tariff=0 storagenr=13)
100   : 6E vif (Units for H.C.A.)
101 C!: 0000 ("consumption_at_set_date_13_hca":0)
103   : 82 dif (16 Bit Integer/Binary Instantaneous value)
104   : 07 dife (subunit=0 tariff=0 storagenr=14)
105   : 6E vif (Units for H.C.A.)
106 C!: 0000 ("consumption_at_set_date_14_hca":0)
108   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
109   : 07 dife (subunit=0 tariff=0 storagenr=15)
110   : 6E vif (Units for H.C.A.)
111 C!: 0000 ("consumption_at_set_date_15_hca":0)
113   : 82 dif (16 Bit Integer/Binary Instantaneous value)
114   : 08 dife (subunit=0 tariff=0 storagenr=16)
115   : 6E vif (Units for H.C.A.)
116 C!: 0000 ("consumption_at_set_date_16_hca":0)
118   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
119   : 08 dife (subunit=0 tariff=0 storagenr=17)
120   : 6E vif (Units for H.C.A.)
121 C!: 0000 ("consumption_at_set_date_17_hca":0)
123   : 82 dif (16 Bit Integer/Binary Instantaneous value)
124   : 09 dife (subunit=0 tariff=0 storagenr=18)
125   : 6E vif (Units for H.C.A.)
126 C?: 0000
128   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
129   : 09 dife (subunit=0 tariff=0 storagenr=19)
130   : 6E vif (Units for H.C.A.)
131 C?: 0000
133   : 82 dif (16 Bit Integer/Binary Instantaneous value)
134   : 0A dife (subunit=0 tariff=0 storagenr=20)
135   : 6E vif (Units for H.C.A.)
136 C?: 0000
138   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
139   : 0A dife (subunit=0 tariff=0 storagenr=21)
140   : 6E vif (Units for H.C.A.)
141 C?: 0000
143   : 82 dif (16 Bit Integer/Binary Instantaneous value)
144   : 0B dife (subunit=0 tariff=0 storagenr=22)
145   : 6E vif (Units for H.C.A.)
146 C?: 0000
148   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
149   : 0B dife (subunit=0 tariff=0 storagenr=23)
150   : 6E vif (Units for H.C.A.)
151 C?: 0000
153   : 82 dif (16 Bit Integer/Binary Instantaneous value)
154   : 0C dife (subunit=0 tariff=0 storagenr=24)
155   : 6E vif (Units for H.C.A.)
156 C?: 0000
158   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
159   : 0C dife (subunit=0 tariff=0 storagenr=25)
160   : 6E vif (Units for H.C.A.)
161 C?: 0000
163   : 82 dif (16 Bit Integer/Binary Instantaneous value)
164   : 0D dife (subunit=0 tariff=0 storagenr=26)
165   : 6E vif (Units for H.C.A.)
166 C?: 0000
168   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
169   : 0D dife (subunit=0 tariff=0 storagenr=27)
170   : 6E vif (Units for H.C.A.)
171 C?: 0000
173   : 82 dif (16 Bit Integer/Binary Instantaneous value)
174   : 0E dife (subunit=0 tariff=0 storagenr=28)
175   : 6E vif (Units for H.C.A.)
176 C?: 0000
178   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
179   : 0E dife (subunit=0 tariff=0 storagenr=29)
180   : 6E vif (Units for H.C.A.)
181 C?: 0000
183   : 82 dif (16 Bit Integer/Binary Instantaneous value)
184   : 0F dife (subunit=0 tariff=0 storagenr=30)
185   : 6E vif (Units for H.C.A.)
186 C?: 0000
188   : C2 dif (16 Bit Integer/Binary Instantaneous value storagenr=1)
189   : 0F dife (subunit=0 tariff=0 storagenr=31)
190   : 6E vif (Units for H.C.A.)
191 C?: 0000
193   : 31 dif (8 Bit Integer/Binary Value during error state)
194   : 7F vif (Manufacturer specific)
195 C?: 08
196   : 34 dif (32 Bit Integer/Binary Value during error state)
197   : 6D vif (Date and time type)
198 C?: 302EFB23
202   : 2F skip
203   : 2F skip
204   : 2F skip
205   : 2F skip
206   : 2F skip

{
    "media":"heat cost allocation",
    "meter":"hcae2",
    "name":"",
    "id":"23412691",
    "status":"ALARM PERMANENT_ERROR",
    "error_flags":"ALARM PERMANENT_ERROR",
    "current_consumption_hca":0,
    "consumption_at_set_date_10_hca":0,
    "consumption_at_set_date_6_hca":0,
    "consumption_at_set_date_4_hca":0,
    "consumption_at_set_date_3_hca":0,
    "consumption_at_set_date_8_hca":0,
    "consumption_at_set_date_16_hca":0,
    "consumption_at_set_date_7_hca":0,
    "consumption_at_set_date_11_hca":0,
    "consumption_at_set_date_2_hca":0,
    "consumption_at_set_date_17_hca":0,
    "consumption_at_set_date_14_hca":0,
    "consumption_at_set_date_12_hca":0,
    "consumption_at_set_date_5_hca":0,
    "consumption_at_set_date_13_hca":0,
    "consumption_at_set_date_1_hca":0,
    "consumption_at_set_date_9_hca":0,
    "consumption_at_set_date_15_hca":0,
    "consumption_at_set_date_hca":0,
    "timestamp":"2023-03-30T12:48:26Z"
}

@weetmuts
Copy link
Member

Great work! You can see that analyze does not find an auto-driver, ie a hardcoded lookup from
the mfct type version numbers which for your telegram are: EFE 08 31 so
remove the addDection lines and add the single line:
di.addDetection(MANUFACTURER_EFE, 0x08, 0x31);

Try again and auto will point to hcae2

@Skysurfer-14
Copy link

Skysurfer-14 commented Mar 30, 2023

Yes, it points now to hcae2. What´s next?
Push to the repository does not work for me right now. Can you please add it?
driver_hcae2.zip

@Skysurfer-14
Copy link

Hello @weetmuts, is there anything else I need to do to get hcae2 support included in the repository?
Thank you!

@Skysurfer-14
Copy link

What can i do to make the Engelmann Heat Cost Allocator HCA e2 appears in my wmbusmeters Home Assistant Addon?

@github-actions
Copy link

github-actions bot commented Jul 2, 2023

This issue is stale because it has been open for 2 month with no activity. Remove stale label or comment or this will be closed in 1 month.

@github-actions github-actions bot added the Stale label Jul 2, 2023
@weetmuts
Copy link
Member

weetmuts commented Jul 2, 2023

Issue resolved in #956

@weetmuts
Copy link
Member

weetmuts commented Jul 2, 2023

hcae2 will be part of release 1.14 which is release later today.

@weetmuts weetmuts closed this as completed Jul 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants