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

Dodac klucz z samych zer.
https://wmbusmeters.org/analyze/6e4401067721780105077aaf0060851d39ce343c306a98d68615B837a6c79e36dB360f85782B05a504f4ddec2ddf390142e698f10148f7134a4905a07a84a9B4cee14c48BaB585d2e9299Be52f121a8df8dfd5eB9f2030299fcf52B916dfa1253d76da9B472854f5e0a15cf33395a4:auto:00000000000000000000000000000000

@_Szczepan dziekuje za pomoc, ogarnięte, offset zrobiony, liczniki wyrównane. Teraz tylko zamontować w docelowe miejsce.

1 polubienie

A ja mam pytanie z innej beczki , licznik główny mam i działa odczyt po wmbus, potrzebuje zrobić pomiar na cwu, mam możliwość wkręcenia tam licznika w rurę, tylko pytanie co tam zamontować by to ogarnąć jak najniższym kosztem

@_Szczepan zauważyłem jedną “dziwną” rzecz:
nakładka Apator (apator162) po godzinach roboczych (wieczór, noc, weekendy) raportuje rzadziej a wtedy ESPHome (ESP32 z CC1101 zakupiony u @Mariusz_Woszczyński) “nie wyłapuje” wszystkich ramek. Wiem o tym bo zauważyłem na wykresach godzinowego zużycia wody pobór np. 100 litrów a nikt wody nie używał. Żeby to potwierdzić ponownie uruchomiłem dongla RTL-SDR i wmbusmeters Home Assistant Add-on i faktycznie wmbusmeters odczytuje ramkę, której ESPHome nie odczytał, moduł ma poprawną konfigurację (testowałem na Twojej wersji 2.4.10 i 3.2.0), problemów z Wi-Fi brak, nie wiem dlaczego tak sie dzieje, jak można to zdiagnozować?

Więcej szczegółów podaj. Czy cos jeszcze na tym ESP chodzi? Jakie poziomy odebranych sygnałów masz na TV i CC1101 itp.

Mam to samo po którejś aktualizacji ESPHome, w kodzie nic nie było zmieniane, wykres pokazuje jakieś randomowe pobory wody w godzinach porannych 5-8.

Ale stan końcowy się zgadza?

Nie sprawdzałem jeszcze bo odkryłem to wczoraj, pytałem żony kto zużywał wodę jak spaliśmy :slight_smile:

Screenshot - 31.03.2024 , 22_56_54

Aktualizacja ESpHome 4 dni temu _esphome_2024.3.0

Dla izar, kiedyś miałem podobnie, ale od dłuższego czasu jest stabilnie.
ESPHome version 2024.3.1
wM-Bus v3.2.1

ESPHome 2024.2.2
sensor.apator_584_lqi ~128
sensor.apator_584_rssi ~ -65dB
wMBusmeters
sensor.wmbus_584_rssi ~ 140dB
Ogólnie to stan końcowy się zgadza.
Poniżej różnice widać na wykresach - użycie z ostatnich 24 godzin (niedziela):

Przed chwilą udało mi się zaobserować:
image

mija kilka minut i bedzie OK:
image

Wyraźnie widać, że wmbus odczytuje “wcześniej” a skoro licznik nadaje tak samo to ESPHome nie czyta wszystkich nadawanych ramek. Może ESPHome nie jest wstanie czytać live tylko czyta w określonych przedziałach czasowych, np. co 3 sekundy.

Witam, mam licznik Otus 1 od PGE, właśnie mi uruchomili zdalny odczyt po wmbus, działa idealnie! Moja konfiguracja:

    meter_id: 0xXXXXXXX
    key: "XXXXXXXXXXXXXXXXXXXXXXX"
    type: amiplus
    mode: T1C1
    lqi:
      name: "Otus 1 lqi"
    rssi:
      name: "Otus 1 rssi"
    total_energy_consumption_kwh:
      name: "Energia pobrana"
    current_power_consumption_kw:
      name: "Aktualny pobór"
    total_energy_production_kwh:
      name: "Energia wysłana"
    current_power_production_kw:
      name: "Aktualna wysyłka"

Ale jak dekoduję ramki w wmbusters mam jeszcze inne info (m.in. pobór i wysyłka w taryfie dziennej i nocnej), zdekodowana ramka:


Auto driver  : not found!
Best driver  : amiplus 60/98
Using driver : amiplus 60/98
000   : ce length (206 bytes)
001   : 44 dll-c (from meter SND_NR)
002   : 0106 dll-mfct (APA)
004   : 29301555 dll-id (55153029)
008   : 01 dll-version
009   : 02 dll-type (Electricity meter)
010   : 7a tpl-ci-field (EN 13757-3 Application Layer (short tplh))
011   : f7 tpl-acc-field
012   : 00 tpl-sts-field (OK)
013   : c005 tpl-cfg 05c0 (AES_CBC_IV nb=12 cntn=0 ra=0 hc=0 )
015   : 2f2f already decrypted check bytes
017   : 06 dif (48 Bit Integer/Binary Instantaneous value)
018   : 6D vif (Date and time type)
019 C!: C0510E043480 ("device_date_time":"2024-04-04 14:17:00")
025   : 0C dif (8 digit BCD Instantaneous value)
026   : 78 vif (Fabrication no)
027 C?: 29301555
031   : 0E dif (12 digit BCD Instantaneous value)
032   : 03 vif (Energy Wh)
033 C!: 661318000000 ("total_energy_consumption_kwh":181.366)
039   : 8E dif (12 digit BCD Instantaneous value)
040   : 10 dife (subunit=0 tariff=1 storagenr=0)
041   : 03 vif (Energy Wh)
042 C!: 742511000000 ("total_energy_consumption_tariff_1_kwh":112.574)
048   : 8E dif (12 digit BCD Instantaneous value)
049   : 20 dife (subunit=0 tariff=2 storagenr=0)
050   : 03 vif (Energy Wh)
051 C!: 928706000000 ("total_energy_consumption_tariff_2_kwh":68.792)
057   : 8E dif (12 digit BCD Instantaneous value)
058   : 30 dife (subunit=0 tariff=3 storagenr=0)
059   : 03 vif (Energy Wh)
060 C!: 000000000000 ("total_energy_consumption_tariff_3_kwh":0)
066   : 8E dif (12 digit BCD Instantaneous value)
067   : 80 dife (subunit=0 tariff=0 storagenr=0)
068   : 10 dife (subunit=0 tariff=4 storagenr=0)
069   : 03 vif (Energy Wh)
070 C?: 000000000000
076   : 0E dif (12 digit BCD Instantaneous value)
077   : 83 vif (Energy Wh)
078   : 3C combinable vif (BackwardFlow)
079 C!: 322315000000 ("total_energy_production_kwh":152.332)
085   : 8E dif (12 digit BCD Instantaneous value)
086   : 10 dife (subunit=0 tariff=1 storagenr=0)
087   : 83 vif (Energy Wh)
088   : 3C combinable vif (BackwardFlow)
089 C!: 029711000000 ("total_energy_production_tariff_1_kwh":119.702)
095   : 8E dif (12 digit BCD Instantaneous value)
096   : 20 dife (subunit=0 tariff=2 storagenr=0)
097   : 83 vif (Energy Wh)
098   : 3C combinable vif (BackwardFlow)
099 C!: 302603000000 ("total_energy_production_tariff_2_kwh":32.63)
105   : 8E dif (12 digit BCD Instantaneous value)
106   : 30 dife (subunit=0 tariff=3 storagenr=0)
107   : 83 vif (Energy Wh)
108   : 3C combinable vif (BackwardFlow)
109 C!: 000000000000 ("total_energy_production_tariff_3_kwh":0)
115   : 8E dif (12 digit BCD Instantaneous value)
116   : 80 dife (subunit=0 tariff=0 storagenr=0)
117   : 10 dife (subunit=0 tariff=4 storagenr=0)
118   : 83 vif (Energy Wh)
119   : 3C combinable vif (BackwardFlow)
120 C?: 000000000000
126   : 0B dif (6 digit BCD Instantaneous value)
127   : 2B vif (Power W)
128 C!: 000000 ("current_power_consumption_kw":0)
131   : 0B dif (6 digit BCD Instantaneous value)
132   : AB vif (Power W)
133   : 3C combinable vif (BackwardFlow)
134 C!: 550100 ("current_power_production_kw":0.155)
137   : 0B dif (6 digit BCD Instantaneous value)
138   : FB vif (First extension FB of VIF-codes)
139   : 14 vife (Reserved)
140 C?: 000000
143   : 0B dif (6 digit BCD Instantaneous value)
144   : FB vif (First extension FB of VIF-codes)
145   : 94 vife (Reserved)
146   : 3C combinable vif (BackwardFlow)
147 C?: 240100
150   : 0A dif (4 digit BCD Instantaneous value)
151   : FD vif (Second extension FD of VIF-codes)
152   : C8 vife (10^-1 Volts)
153   : FC combinable vif (CombinableVIFExtension)
154   : 01 combinable extension vife
155 C?: 0424
157   : 0B dif (6 digit BCD Instantaneous value)
158   : AB vif (Power W)
159   : C8 combinable vif (UpperLimit)
160   : FC combinable vif (CombinableVIFExtension)
161   : 10 combinable extension vife
162 C?: 000000
165   : 8B dif (6 digit BCD Instantaneous value)
166   : 40 dife (subunit=1 tariff=0 storagenr=0)
167   : AB vif (Power W)
168   : C8 combinable vif (UpperLimit)
169   : FC combinable vif (CombinableVIFExtension)
170   : 10 combinable extension vife
171 C?: 000000
174   : 8B dif (6 digit BCD Instantaneous value)
175   : 80 dife (subunit=0 tariff=0 storagenr=0)
176   : 40 dife (subunit=2 tariff=0 storagenr=0)
177   : AB vif (Power W)
178   : C8 combinable vif (UpperLimit)
179   : FC combinable vif (CombinableVIFExtension)
180   : 10 combinable extension vife
181 C?: 000000
184   : 8B dif (6 digit BCD Instantaneous value)
185   : C0 dife (subunit=1 tariff=0 storagenr=0)
186   : 40 dife (subunit=3 tariff=0 storagenr=0)
187   : AB vif (Power W)
188   : C8 combinable vif (UpperLimit)
189   : FC combinable vif (CombinableVIFExtension)
190   : 10 combinable extension vife
191 C?: 000000
194   : 0A dif (4 digit BCD Instantaneous value)
195   : AB vif (Power W)
196   : C8 combinable vif (UpperLimit)
197   : FD combinable vif (MultiplicativeCorrectionFactorForValue103)
198   : 66 combinable vif (DurationOfDLast)
199 C?: 1111
201   : 2F skip
202   : 2F skip
203   : 2F skip
204   : 2F skip
205   : 2F skip
206   : 2F skip

{
    "media":"electricity",
    "meter":"amiplus",
    "name":"",
    "id":"55153029",
    "current_power_consumption_kw":0,
    "current_power_production_kw":0.155,
    "total_energy_consumption_kwh":181.366,
    "total_energy_consumption_tariff_1_kwh":112.574,
    "total_energy_consumption_tariff_2_kwh":68.792,
    "total_energy_consumption_tariff_3_kwh":0,
    "total_energy_production_kwh":152.332,
    "total_energy_production_tariff_1_kwh":119.702,
    "total_energy_production_tariff_2_kwh":32.63,
    "total_energy_production_tariff_3_kwh":0,
    "device_date_time":"2024-04-04 14:17:00",
    "timestamp":"2024-04-04T12:20:13Z"
}


Using: wmbusmeters: 1.15.0-1-g097f91f
097f91fac0585c6e47beec7dcb086cce3fcb0e5e

@_Szczepan - jest szansa na dodanie info o poborze i wysłaniu ze względu na taryfę?

Jak wyjdzie wersja 4.0 to tak. Ale to potrwa.
Jak chcesz szybciej to możesz samemu dopisać do v3 i zrobić poprawkę w githubie.

Poczekam na wersję 4.0 :wink: dzięki wielkie za super komponent.

Przy okazji informacyjnie licznik Gama 350 montowany przez PGE też działa idealnie z tymi ustawieniami:

    meter_id: 0xXXXX
    key: "XXXXXXXXXXXXXXXXX"
    type: amiplus
    mode: T1C1
    lqi:
      name: "Gama 350 lqi"
    rssi:
      name: "Gama 350 RSSI"
    total_energy_consumption_kwh:
      name: "Góra energia pobrana"
    current_power_consumption_kw:
      name: "Góra aktualny pobór"
    total_energy_production_kwh:
      name: "Góra energia wprowadzona"
    current_power_production_kw:
      name: "Góra aktualne wprowadzenie"
    voltage_at_phase_1_v:
      name: "Góra napięcie na fazie 1"
    voltage_at_phase_2_v:
      name: "Góra napięcie na fazie 2"
    voltage_at_phase_3_v:
      name: "Góra napięcie na fazie 3"

wtam
napisałem kod zgodnie z opisem i klapa, ktoś może pomóc

[18:13:26][I][app:102]: ESPHome version 2024.3.1 compiled on Apr  1 2024, 19:39:04
[18:13:26][C][wifi:580]: WiFi:
[18:13:26][C][wifi:408]:   Local MAC: C8:C9:A3:37:70:66
[18:13:26][C][wifi:413]:   SSID: [redacted]
[18:13:26][C][wifi:416]:   IP Address: 192.168.0.140
[18:13:26][C][wifi:419]:   BSSID: [redacted]
[18:13:26][C][wifi:421]:   Hostname: 'esphome-web-377066'
[18:13:26][C][wifi:423]:   Signal strength: -62 dB ▂▄▆█
[18:13:26][V][wifi:425]:   Priority: -14.0
[18:13:26][C][wifi:427]:   Channel: 6
[18:13:26][C][wifi:428]:   Subnet: 255.255.255.0
[18:13:26][C][wifi:429]:   Gateway: 192.168.0.1
[18:13:26][C][wifi:430]:   DNS1: 0.0.0.0
[18:13:26][C][wifi:431]:   DNS2: 0.0.0.0
[18:13:26][C][logger:166]: Logger:
[18:13:26][C][logger:167]:   Level: VERBOSE
[18:13:26][C][logger:169]:   Log Baud Rate: 115200
[18:13:26][C][logger:170]:   Hardware UART: UART0
[18:13:26][C][homeassistant.time:010]: Home Assistant Time:
[18:13:26][C][homeassistant.time:011]:   Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[18:13:26][C][restart:068]: Restart Switch 'Licznik wody Reset'
[18:13:26][C][restart:070]:   Icon: 'mdi:restart'
[18:13:26][C][restart:090]:   Restore Mode: always OFF
[18:13:26][C][status:034]: Status Binary Sensor 'Licznik wody Status'
[18:13:26][C][status:034]:   Device Class: 'connectivity'
[18:13:26][C][wifi_info:013]: WifiInfo Mac Address 'Licznik wody Mac Adres WiFi'
[18:13:26][V][wifi_info:013]:   Unique ID: 'c8c9a3377066-wifiinfo-macadr'
[18:13:26][C][captive_portal:088]: Captive Portal:
[18:13:26][C][mdns:115]: mDNS:
[18:13:26][C][mdns:116]:   Hostname: esphome-web-377066
[18:13:26][V][mdns:117]:   Services:
[18:13:26][V][mdns:119]:   - _esphomelib, _tcp, 6053
[18:13:26][V][mdns:121]:     TXT: friendly_name = Licznik wody
[18:13:26][V][mdns:121]:     TXT: version = 2024.3.1
[18:13:26][V][mdns:121]:     TXT: mac = c8c9a3377066
[18:13:26][V][mdns:121]:     TXT: platform = ESP8266
[18:13:26][V][mdns:121]:     TXT: board = d1_mini
[18:13:26][V][mdns:121]:     TXT: network = wifi
[18:13:26][V][mdns:121]:     TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[18:13:26][C][ota:096]: Over-The-Air Updates:
[18:13:26][C][ota:097]:   Address: 192.168.0.140:8266
[18:13:26][C][ota:103]:   OTA version: 2.
[18:13:26][C][api:139]: API Server:
[18:13:26][C][api:140]:   Address: 192.168.0.140:6053
[18:13:26][C][api:142]:   Using noise encryption: YES
[18:13:26][C][wifi_info:011]: WifiInfo SSID 'Licznik wody Połączony z siecią'
[18:13:26][V][wifi_info:011]:   Unique ID: 'c8c9a3377066-wifiinfo-ssid'
[18:13:26][C][wifi_info:009]: WifiInfo IPAddress 'Licznik wody IP Adres'
[18:13:26][V][wifi_info:009]:   Unique ID: 'c8c9a3377066-wifiinfo-ip'
[18:13:26][C][wmbus:372]: wM-Bus v3.2.1:
[18:13:26][C][wmbus:374]:   Clients:
[18:13:26][C][wmbus:376]:     wmbusmeters: 10.0.0.1:7227 TCP [rtl-wmbus]
[18:13:26][C][wmbus:389]:   CC1101 frequency: 868.950 MHz
[18:13:26][C][wmbus:390]:   CC1101 SPI bus:
[18:13:26][C][wmbus:391]:     MOSI Pin: GPIO13
[18:13:26][C][wmbus:392]:     MISO Pin: GPIO12
[18:13:26][C][wmbus:393]:     CLK Pin:  GPIO14
[18:13:26][C][wmbus:394]:     CS Pin:   GPIO15
[18:13:26][C][wmbus:395]:     GDO0 Pin: GPIO5
[18:13:26][C][wmbus:396]:     GDO2 Pin: GPIO4
[18:13:26][C][wmbus:403]:   Available drivers:  amiplus, apator08, apator162, apatoreitn, bmeters, c5isf, compact5, dme07, elf, evo868, fhkvdataiii, flowiq2200, hydrocalm3, hydrus, iperl, itron, izar, kamheat, mkradio3, mkradio4, mkradio4a, multical21, qheat, qwater, rfmtx1, sharky774, topaseskr, ultrimis, unismart, vario451
[18:13:26][C][wmbus:421]:   Meter:
[18:13:26][C][wmbus:422]:     ID: 7553936 [0x00734390]
[18:13:26][C][wmbus:423]:     Type: apator08
[18:13:26][C][wmbus:424]:     Mode: T1
[18:13:26][C][wmbus:425]:     Key: '00000000000000000000000000000000'
[18:13:26][C][wmbus:427]:     Sensor '0x734390 My lqi'
[18:13:26][C][wmbus:427]:       Device Class: 'signal_strength'
[18:13:26][C][wmbus:427]:       State Class: 'measurement'
[18:13:26][C][wmbus:427]:       Unit of Measurement: ''
[18:13:26][C][wmbus:427]:       Accuracy Decimals: 0
[18:13:26][C][wmbus:427]:     Sensor '0x734390 My RSSI'
[18:13:26][C][wmbus:427]:       Device Class: 'signal_strength'
[18:13:26][C][wmbus:427]:       State Class: 'measurement'
[18:13:26][C][wmbus:427]:       Unit of Measurement: 'dBm'
[18:13:26][C][wmbus:427]:       Accuracy Decimals: 0
[18:13:26][C][wmbus:427]:     Sensor '0x734390 My cold water'
[18:13:26][C][wmbus:427]:       Device Class: 'water'
[18:13:26][C][wmbus:427]:       State Class: 'total_increasing'
[18:13:26][C][wmbus:427]:       Unit of Measurement: 'm³'
[18:13:26][C][wmbus:427]:       Accuracy Decimals: 3
[18:13:26][C][wmbus:427]:       Icon: 'mdi:water'
[18:17:54][V][rxLoop:167]: Have 405 bytes from CC1101 Rx, RSSI: -84 dBm LQI: 180
[18:17:54][D][mbus:034]: Processing T1 A frame
[18:17:54][V][mbus:040]: Frame: CB1B25F5DE3BB566FFD7FFDE7AF735977C868AA99CEC3F1F687F602E66A7FF47E9FE6FFE064F5E9AED2188063FE4F33F7D7CFFFFFFFFFFFFDEC2E1188FF990027DDEF819E530F58047D25AEF39F08713EC52600EFFB116E93D4FF17C95B4FFFFFFFFFBFFFFBFE1E7658DEDE1273EEAEBAE1010B1DBE6B945C7DDE08828C39DF74DC8ED5FFF26DCD52FBB65F1374CFFFFFFFFFFFFF33C6FBB330B9E21F286077042228EDCD96F814B7BC0DC3F53F76540979DEE10F28DC7F9A728AE977FFFFFFFFFFFB6FCC3ECDEDA [RAW]
[18:17:54][V][mbus:042]:        F9BFCC923FC4F070A5F603587297CFAD8920E3BEE390C3D2EF5D55E72368227FFFFFFFFFFEFFFCFD174DD33DD35E2AD1EF495A2987FF2490DE479A0FB554DEEDF3C66ABFA4005098DF547448DFBFF7DFFFFBFFEE61AECC911DE2184D2A3B8CEC64E8FE902DB63B7A3D9449AEF320DD26B181F131ABEC01EF96B13FFFFFFFFFFFFFF48DA6110F6FB44DCCBFF2F81E4CE78D6C165FCF22C84F4778A608CF9FC20AAF767CBD9AB90249C75DD68441CCFFFFFFFFFFFFFFF7F8AAD160438F3700C79776D140097FE08A1D63F9E985F0 (405) [RAW]
[18:17:54][V][3of6:083]: Decode 3 out of 6 failed..
[18:17:54][W][component:232]: Component wmbus took a long time for an operation (85 ms).
[18:17:54][W][component:233]: Components should block for at most 30 ms.


Od tygodnia taka akcja. wmbus na wemos_d1mini, podje klucz api, przyjmuje i wywala error. Wyrzucę api z kodu, wgram sotf i dalej to samo.
2-3 inne esphome miało to samo ale po podaniu api wszytko jest ok, a ten wmbus dalej walczy…

Hmmm… co to za rezultat z kosmosu? 140 dB? Liczone od czego? 1 mW?

Przy okazji: czy ktoś może podać na szybko czułość odbiornika CC1101? Dzięki!

To dane odczytywany z MQTT a publikowane przez wmbusmeters Home Assistant Add-on:

{
  "media": "water",
  "meter": "apator162",
  "name": "wmbus_584",
  "id": "****584",
  "total_m3": 454.429,
  "timestamp": "2024-05-05T08:05:19Z",
  "device": "rtlwmbus[00000001]",
  "rssi_dbm": 94,
  "address": "**********"
}

Aha, rozumiem. To znany zDupcz wmbusmeters. Zgłaszałem im to ze 2, jak nie więcej lat temu. Dla rtl-sdr te wyniki to nie jest dBm. To surowy (wprost z chipu) bajt reprezentujący poziom, a przyjmujący wartości 0 do … hmmm… może i 255. Mój icznik prądu regularnie dawał w tym polu odczyty 140+ co jest sygnałem bardzo silnym, no ale nie 140 dBm (każdy może sobie obliczyć ile to jest watów!).

Może warto się przypomnieć :slight_smile:.

Odnosiłem wrażenie, że usunęli z nazwy pola “dBm” - ale może się mylę, albo z jakichś powodów poza-merytorycznych utrzymali tę nazwę. Zbadam to, dam znać.