Komponent wM-Bus do ESPHome (SzczepanLeon) wersja 2.x - wątek ogólny

OK, ale nie widzę na githubie 2.4.14… ESPHome też zgłasza błąd pobierania.

image

Tag nie musi być opublikowany.
Wystarczy że w YAMLu masz

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    refresh: 0d
    components: [ wmbus ]
1 polubienie

Całe życie się człowiek uczy :wink: Mea culpa :wink:

Wydaje się być OK teraz, widzę encje wszystkich 3 liczników w HA :smiley: DZIĘKI!!!

[16:46:39][I][wmbus:088]: Using driver 'hydrocalm3' for ID [0x02270962] RSSI: -39 dBm LQI: 128 Mode: T1 T: 8E44B409620927020B0D7AB0008005B2C5DFDFC06E828BFAB070BAD5D03FA52B7C2801355B2CDCEEFC8151BEE11A3E7AAA156D38FBFCCF5D1725185C9A55C2F735F068E68B228D19D47A3B51D364EEAC8441B42492666F902A54A2FE0347157C5AC0691B2FD65E2B332AA2BAC42C8235452D08992654A8F09F97ABB977E6B91679A26CFCD19CEBC09FB01B6CBFA7D6 (143)
[16:46:39][D][wmbus:095]: Decrypted T : 8E44B409620927020B0D7AB00080052F2F0C0E91990000046D2A310F310C13175727000C0E010000000C13030300000C13000000000C13000000000A5A5003F735F068E68B228D19D47A3B51D364EEAC8441B42492666F902A54A2FE0347157C5AC0691B2FD65E2B332AA2BAC42C8235452D08992654A8F09F97ABB977E6B91679A26CFCD19CEBC09FB01B6CBFA7D6 (143)
[16:46:39][D][sensor:094]: '0x2270962 Heating LQI': Sending state 128.00000  with 0 decimals of accuracy
[16:46:39][D][sensor:094]: '0x2270962 Heating_kWh': Sending state 2775.27783 kWh with 3 decimals of accuracy
[16:46:39][D][sensor:094]: '0x2270962 Heating_m3': Sending state 275.71701 m³ with 3 decimals of accuracy
[16:46:39][W][component:214]: Component wmbus took a long time for an operation (0.10 s).
[16:46:39][W][component:215]: Components should block for at most 20-30ms.
[16:46:41][I][wmbus:088]: Using driver 'rfmtx1' for ID [0x14057620] RSSI: -59 dBm LQI: 128 Mode: T1 T: 4644B4092076051405077A01000610566DF7802A120F1D5E00000000494017150124CE1D00A81E00901F007C2000482100982100602200192300CA2300D224005E250072260000 (71)
[16:46:41][D][sensor:094]: '0x14057620 Cold water LQI': Sending state 128.00000  with 0 decimals of accuracy
[16:46:41][D][sensor:094]: '0x14057620 Cold water': Sending state 99.28600 m³ with 3 decimals of accuracy
[16:46:41][W][component:214]: Component wmbus took a long time for an operation (0.05 s).
[16:46:41][W][component:215]: Components should block for at most 20-30ms.
[16:46:53][D][wmbus:189]: Meter ID [0x02284832] RSSI: -75 dBm LQI: 134 Mode: T1 not found in configuration T: 8E44B409324828020B0D7AB8008005B9137E07B63F5EDA93485C51F1272C73915DEB996497B5BB227C1F8FD77573E3061CF89DE1AB4E73F843D63FB97D8FDB53D45D4549023488094711C35DC78AA19DC357A125CE8B53238A1B0A68268BD53FD9C344C1005CA878A50642024564AB559E2E51FF280CB2E59E062904780385A60DDBED0682F9C6C6D8EBEC58609EF0 (143)
[16:46:55][I][wmbus:088]: Using driver 'rfmtx1' for ID [0x14054972] RSSI: -44 dBm LQI: 128 Mode: T1 T: 4944B4097249051405077A97080610BCD871601F340F1F5E232C16000000000125171501247D1900691A00571B00F11B008B1C00DC1C00721D00EA1D005B1E00141F007C1F0042200000 (74)
[16:46:56][D][sensor:094]: '0x14054972 Hot water LQI': Sending state 128.00000  with 0 decimals of accuracy
[16:46:56][D][sensor:094]: '0x14054972 Hot water': Sending state 83.35200 m³ with 3 decimals of accuracy
1 polubienie

Nie ma sprawy.
:coffee:

@klu16 Możesz przetestować czy w wersji 2.4.17 czegoś nie popsułem (najlepiej z logami VERY_VERBOSE)?

@_Szczepan, wszystko działa.

Logi ze wszystkich trzech liczników:

[07:36:47][C][wmbus:417]: wM-Bus v2.4.17:

[07:37:40][I][wmbus:088]: Using driver 'rfmtx1' for ID [0x14057620] RSSI: -59 dBm LQI: 128 Mode: T1 T: 4644B4092076051405077A240006109DA6A52CE64D0F1D5E00000000503108160124CE1D00A81E00901F007C2000482100982100602200192300CA2300D224005E250072260000 (71)
[07:37:40][VV][wmbus-drivers:033]: tpl_cfg = [0x1006] [13] = 0x06 [14] = 0x10
[07:37:40][VV][wmbus-drivers:039]: decoded_total[0] = 12
[07:37:40][VV][wmbus-drivers:039]: decoded_total[1] = 19
[07:37:40][VV][wmbus-drivers:039]: decoded_total[2] = 134
[07:37:40][VV][wmbus-drivers:039]: decoded_total[3] = 146
[07:37:40][VV][wmbus-drivers:039]: decoded_total[4] = 9
[07:37:40][VV][wmbus-drivers:039]: decoded_total[5] = 0
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:047]: [2] d_t = 86, totalX = 0, mul = 100.000000
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:047]: [3] d_t = 92, totalX = 0, mul = 10000.000000
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:047]: [4] d_t = 9, totalX = 0, mul = 1000000.000000
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:37:40][VV][wmbus-drivers:047]: [5] d_t = 0, totalX = 0, mul = 100000000.000000
[07:37:40][VV][wmbus-drivers:046]: Converting BCD to INT
[07:37:40][VV][wmbus-drivers:051]: total[99286] = 99.286000
[07:37:40][VV][wmbus-drivers:035]: Value added to map
[07:37:40][V][sensor:043]: '0x14057620 Zimna woda LQI': Received new state 128.000000
[07:37:40][D][sensor:094]: '0x14057620 Zimna woda LQI': Sending state 128.00000  with 0 decimals of accuracy
[07:37:40][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 3746526887
  state: 128
  missing_state: NO
}
[07:37:40][VV][wmbus:126]: Publishing 'total_water_m3' = 99.2860
[07:37:40][V][sensor:043]: '0x14057620 Zimna woda': Received new state 99.286003
[07:37:40][D][sensor:094]: '0x14057620 Zimna woda': Sending state 99.28600 m³ with 3 decimals of accuracy
[07:37:40][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 3627931336
  state: 99.286
  missing_state: NO
}



[07:39:54][I][wmbus:088]: Using driver 'rfmtx1' for ID [0x14054972] RSSI: -44 dBm LQI: 128 Mode: T1 T: 4944B4097249051405077ABC0806103765A4C750A30F1F5E232C16000000000118081601247D1900691A00571B00F11B008B1C00DC1C00721D00EA1D005B1E00141F007C1F0042200000 (74)
[07:39:54][VV][wmbus-drivers:033]: tpl_cfg = [0x1006] [13] = 0x06 [14] = 0x10
[07:39:54][VV][wmbus-drivers:039]: decoded_total[0] = 12
[07:39:54][VV][wmbus-drivers:039]: decoded_total[1] = 19
[07:39:54][VV][wmbus-drivers:039]: decoded_total[2] = 82
[07:39:54][VV][wmbus-drivers:039]: decoded_total[3] = 51
[07:39:54][VV][wmbus-drivers:039]: decoded_total[4] = 8
[07:39:54][VV][wmbus-drivers:039]: decoded_total[5] = 0
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:047]: [2] d_t = 52, totalX = 0, mul = 100.000000
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:047]: [3] d_t = 33, totalX = 0, mul = 10000.000000
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:047]: [4] d_t = 8, totalX = 0, mul = 1000000.000000
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:041]: Converting BCD to BIN
[07:39:54][VV][wmbus-drivers:047]: [5] d_t = 0, totalX = 0, mul = 100000000.000000
[07:39:54][VV][wmbus-drivers:046]: Converting BCD to INT
[07:39:54][VV][wmbus-drivers:051]: total[83352] = 83.352000
[07:39:54][VV][wmbus-drivers:035]: Value added to map
[07:39:54][V][sensor:043]: '0x14054972 Ciepła woda LQI': Received new state 128.000000
[07:39:54][D][sensor:094]: '0x14054972 Ciepła woda LQI': Sending state 128.00000  with 0 decimals of accuracy
[07:39:54][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 3897803922
  state: 128
  missing_state: NO
}
[07:39:54][VV][wmbus:126]: Publishing 'total_water_m3' = 83.3520
[07:39:54][V][sensor:043]: '0x14054972 Ciepła woda': Received new state 83.351997
[07:39:54][D][sensor:094]: '0x14054972 Ciepła woda': Sending state 83.35200 m³ with 3 decimals of accuracy
[07:39:54][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 2955945265
  state: 83.352
  missing_state: NO
}


[07:40:00][I][wmbus:088]: Using driver 'hydrocalm3' for ID [0x02270962] RSSI: -39 dBm LQI: 128 Mode: T1 T: 8E44B409620927020B0D7A00008005D0491D383735AE7C4A307BACB53CEE37DAAE196AD75B3CE079720018B70E0EDB403034B078E0C4823122C85F342BF7EA9C34044C9AFCDD177A1A7F288B54ECD8D3E097733B2FE7853FE1BA5A5AB2602F574147B2B1A46D87FC6AD7F49392D2B0EDDA485151D817A38854C398099A233C7C27315D84B3AE6E0D534B6C56482FB8 (143)
[07:40:00][VV][wmbus:090]: Key defined, trying to decrypt telegram ...
[07:40:00][VV][wmbus:291]: Decrypting: tpl-ci '7A' tpl-cfg '580' offset '15
[07:40:00][VV][wmbus:339]: 2F2f check after decrypting - OK
[07:40:00][D][wmbus:095]: Decrypted T : 8E44B409620927020B0D7A000080052F2F0C0E91990000046D202810310C13175727000C0E010000000C13030300000C13000000000C13000000000A5A57039C34044C9AFCDD177A1A7F288B54ECD8D3E097733B2FE7853FE1BA5A5AB2602F574147B2B1A46D87FC6AD7F49392D2B0EDDA485151D817A38854C398099A233C7C27315D84B3AE6E0D534B6C56482FB8 (143)
[07:40:00][VV][wmbus-drivers:046]: Converting BCD to INT
[07:40:00][VV][wmbus-drivers:095]: Found register '0C0E' with '9991'->'2775.277778'
[07:40:00][VV][wmbus-drivers:035]: Value added to map
[07:40:00][VV][wmbus-drivers:046]: Converting BCD to INT
[07:40:00][VV][wmbus-drivers:215]: Found register '0C13' with '275717'->'275.717000'
[07:40:00][VV][wmbus-drivers:035]: Value added to map
[07:40:00][V][sensor:043]: '0x2270962 Ogrzewanie LQI': Received new state 128.000000
[07:40:00][D][sensor:094]: '0x2270962 Ogrzewanie LQI': Sending state 128.00000  with 0 decimals of accuracy
[07:40:00][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 1459946094
  state: 128
  missing_state: NO
}
[07:40:00][VV][wmbus:126]: Publishing 'total_heating_kwh' = 2775.2778
[07:40:00][V][sensor:043]: '0x2270962 Ogrzewanie_kWh': Received new state 2775.277832
[07:40:00][D][sensor:094]: '0x2270962 Ogrzewanie_kWh': Sending state 2775.27783 kWh with 3 decimals of accuracy
[07:40:00][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 1426243618
  state: 2775.28
  missing_state: NO
}
[07:40:00][VV][wmbus:126]: Publishing 'total_water_m3' = 275.7170
[07:40:00][V][sensor:043]: '0x2270962 Ogrzewanie_m3': Received new state 275.717010
[07:40:00][D][sensor:094]: '0x2270962 Ogrzewanie_m3': Sending state 275.71701 m³ with 3 decimals of accuracy
[07:40:00][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 3033929708
  state: 275.717
  missing_state: NO
}
2 polubienia

@_Szczepan Mam dziwne piki z odczytu podzielników, które robiłeś. Jest na to jakaś rada?

Podsyłać te dziwne telegramy (razem z wartościami) tutaj - pewnie jakis haczyk jest w protokole.

To jest pewnie to co opisałem tutaj.

Jak miałbym strzelać to ostatnia pozycja w telegramie może pomóc.

Najpierw trzeba je złapać :smiley:

@KuChar Zainstaluj wersje 2.4.19 oraz w YAMLu dodaj:

text_sensor:
  - platform: wmbus
    name: "Text debug for Apator"

W HA powinien pojawić się nowy sensor tekstowy. Teraz wystarczy czekać. Jak jakieś telegramy z current_hca > 400 wystąpią to zostaną one zachowane w HA.

Aby się do nich dostać najwygodniej kliknąć Dziennik i ustawić filtr na ten text sensor a następnie podzielić się tymi telegramami na forum :smiley:
obraz

1 polubienie

Już mam stary, który dodałem jako Apator 16-2.

Zaaktualizowałem. Czekam :slight_smile:

6 postów zostało podzielonych na nowy temat: Stworzenie w HA encji okazującej różnicę między wodomierzami

"1 | 40440106159901000908A00000A1009C01950124002300260000000000000000000000000000000300030003802400070000"
"2 | 0036804500000000001C0C00C00000 (65)"

 "1' | 40.44.01.06.15.99.01.00.09.08.A0.00.00.A1.00.9C.01.95.01.24.00.23.00.26.00."
"2' | 00.00.00.00.00.00.00.00.00.00.00.00.00.00.03.00.03.00.03.80.24.00.07.00.00.00.36.80.45.00.00.00.00."
"3' | 00.1C.0C.00.C0.00.00 (65)"

"1 | 40440106149901000908A00000A100B301AF01370064004700000000000000000000000000000021004F00638049800B8000"
"2 | 0071003F0080000000189801800000 (65)"

 "1' | 40.44.01.06.14.99.01.00.09.08.A0.00.00.A1.00.B3.01.AF.01.37.00.64.00.47.00."
"2' | 00.00.00.00.00.00.00.00.00.00.00.00.00.00.21.00.4F.00.63.80.49.80.0B.80.00.00.71.00.3F.00.80.00.00."
 "3' | 00.18.98.01.80.00.00 (65)"

 "1 | 40440106159901000908A00000A1009C019702640047004C0040000010000000000000000000000C00CC001E03A4003C0000"
"2 | 01F403280000000304C4C00C000002 (65)"

"1' | 40.44.01.06.15.99.01.00.09.08.A0.00.00.A1.00.9C.01.97.02.64.00.47.00.4C.00."
 "2' | 40.00.00.10.00.00.00.00.00.00.00.00.00.00.0C.00.CC.00.1E.03.A4.00.3C.00.00.01.F4.03.28.00.00.00.03."
"3' | 04.C4.C0.0C.00.00.02 (65)"

@KuChar A masz jakieś poprawne do pary? Np dla tego

Na szybko widzę ze tak łatwo nie będzie (strzelać).
btw Podaj też pozostałe wartości (temp, prev_HCA, itp co tam podzielnik wyświetla/wysyła dla ramki OK) im więcej pol odgadniemy tym lepiej.

edit (po północy :wink:) :
Teraz mnie olśniło - nic więcej w driverze nie zrobimy. Pola poprawnie zostały zlokalizowane. Problem jest gdzieś indziej. Jest to telegram C a dla C nie mam sprawdzania CRC. Na 99% te wyskoki są z uszkodzonych ramek. Jedynie dodanie sprawdzania CRC dla ramek C może rozwiązać problem.

Jakbyś wyzbierał logi po kablu (tak aby byly widoczne te z wMbus-lib) to coś bym miał do grzebania (kolejny pomysł mam jak to ugryźć). Tak z 10-20 ramek.

nie bardzo wiem jak to zrobić.
Wczoraj wieczorem zaczytałem pomiary i od rana zbieram ramki.

Salon:  
Numer licznika: 00019913

Zużycie w bieżącym roku rozliczeniowym: 319
Zużycie w poprzednim roku rozliczeniowym: 199
Zużycie w bieżącym miesiącu rozliczeniowym: 7.9.
Zużycie za poprzedni miesiąc rozliczeniowy: 1.6.2.

Ramki: 
40440106139901000908A00000A1007F016B014F00A2004E00000000000000000000000000000018001E0007007800100002003F01C70000000000323004000000 

40440106139901000908A00000A1007F016B014F00A2004E00000000000000000000000000000018001E0007007800100002003F01C70000000000323004000000 

40440106139901000908A00000A1007F016B014F00A2004E00000000000000000000000000000018001E0007007800100002003F01C70000000000323004000000 

40440106139901000908A00000A1007F016B014F00A2004E00000000000000000000000000000018001E0007007800100002003F01C70000000000323004000000 

Wiktoria: 
Numer licznika: 00019914

Zużycie w bieżącym roku rozliczeniowym: 226
Zużycie w poprzednim roku rozliczeniowym: 382
Zużycie w bieżącym miesiącu rozliczeniowym: 5.5.
Zużycie za poprzedni miesiąc rozliczeniowy: 1.0.0.

Ramki: 
40440106149901000908A00000A100B201AF01370064004700000000000000000000000000000021004E006700930015000000E2007E0100000000323004000000 

40440106149901000908A00000A100B201AF01370064004700000000000000000000000000000021004E006700930015000000E2007E0100000000323004000000 

40440106149901000908A00000A100B201AF01370064004700000000000000000000000000000021004E006700930015000000E2007E0100000000323004000000 

40440106149901000908A00000A100B201AF01370064004700000000000000000000000000000021004E006700930015000000E2007E0100000000323004000000 


Sypialnia: 
Numer licznika: 00019915

Zużycie w bieżącym roku rozliczeniowym: 109
Zużycie w poprzednim roku rozliczeniowym: 138 
Zużycie w bieżącym miesiącu rozliczeniowym: 3.6.
Zużycie za poprzedni miesiąc rozliczeniowy: 3.5.

Ramki: 
40440106159901000908A00000A1009C019501240023002600000000000000000000000000000006000600070049000E000000EC01180000000000646008000000 

40440106159901000908A00000A1009C019501240023002600000000000000000000000000000006002600070049000E0000006D008A0040000000323004000000 

Kuchnia: 
Numer licznika: 00019916
Zużycie w bieżącym roku rozliczeniowym: 0
Zużycie w poprzednim roku rozliczeniowym: 0
Zużycie w bieżącym miesiącu rozliczeniowym: 0
Zużycie za poprzedni miesiąc rozliczeniowy: 0

Ramki: 
40440106169901000908A00000A1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000323004000000 

40440106169901000908A00000A1000000000000000000000000000000000000000000000000000000010000000000000000000000000000000300C8C010000001 

40440106169901000908A00000A1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080191802000000 

Podzielnik jest taki:

instrukcja do tego tutaj:

Podzielnik nie pokazuje śr. temp. Tylko wartości, które podałem poprzedzając ramki, czyli:
Zużycie w bieżącym roku rozliczeniowym:
Zużycie w poprzednim roku rozliczeniowym:
Zużycie w bieżącym miesiącu rozliczeniowym:
Zużycie za poprzedni miesiąc rozliczeniowy:

OK do tych “nowych” pól powinny te ramki wystarczyć. Zakładam że zużycie “miesięczne” jest normalnie bez kropek, tylko tak jest wyświetlane.

Zużycie w bieżącym roku rozliczeniowym: 319         013F   xxxx
Zużycie w poprzednim roku rozliczeniowym: 199       00C7   yyyy
Zużycie w bieżącym miesiącu rozliczeniowym: 7.9.    004F   aaaa
Zużycie za poprzedni miesiąc rozliczeniowy: 1.6.2.  00A2   bbbb

Ramki: 
40440106139901000908A00000A1007F016B014F00A2004E00000000000000000000000000000018001E0007007800100002003F01C70000000000323004000000 
                                      aaaabbbb                                                        xxxxyyyy

Spróbuj z wersją 2.5.1 i do yamla dodaj:

current_hca    - bieżący rok rozliczeniowy
previous_hca   - poprzedni rok
current_m_hca  - bieżący miesiąc
previous_m_hca - poprzedni miesiąc

I daj znać czy zadziałało :slight_smile:

'PO KABLU" czyli podpinasz się USB do ESP (albo w inny sposób do jego portu szeregowego), łączysz się jakimś terminalem z PC i tam zbierasz logi.

Tylko tak naprawdę mam rozliczenie roczne. Nie potrzebuję miesięcznego, ponieważ SM tego nie rozlicza. Z kropkami są miesięczne, ale tak, jak piszę - do niczego mi nie potrzebne.

Dodatkowo, jak usunąć “stare” encje?

Usuń całe urządzenie z integracji i dodaj je ponownie.

Działa.

Kilka błędów w text sensorze.

"1 | 40440106149901000908A00000A100B201AF0137006400470000000000000000000000000000006300CE00EF01B7002A0000"
"2 | 01C400FC0200000000646008000000 (65)"

"1' | 40.44.01.06.14.99.01.00.09.08.A0.00.00.A1.00.B2.01.AF.01.37.00.64.00.47.00."
"2' | 00.00.00.00.00.00.00.00.00.00.00.00.00.00.63.00.CE.00.EF.01.B7.00.2A.00.00.01.C4.00.FC.02.00.00.00."
 "3' | 00.64.60.08.00.00.00 (65)"

Pomiary wyglądają tak (nie grzały dzisiaj grzejniki, więc wskazania nie zmieniły sie:

Fajnie. Mozesz wyłączyć ten text_sensor. Niestety w driverze nic wiecej nie osiągniemy (no może poza zgadywaniem co jeszcze jest w telegramie).

Jedynie dodanie sprawdzania CRC dla telegramów typu C da poprawę.

Jakieś plany na to? Czy trzeba czekać na ruch wmbusmeters?