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

Z telegramu. Ten sam jest na obudowie.

A jakiej wartości oczekujesz?

total_m3 = 45052.83 ??

dla tego telegramu

Nakładka jest używana, więc nie wiem ile miała natłuczone. Może być taka wartość.

Izar nie ma ID na obudowie. Pokaż fotkę licznika

Jeżeli takiej wartości oczekujesz to moim komponentem nie uzyskasz jej z tej nakładki. Ale jest prosty sposób. Wystarczy że przeniesiesz kod z wmbusmeters’a do driver’a.

Albo do dekodowania wykorzystasz wmbusmeters, a komponent będzie tylko podsyłał telegramy.

Sprawdzę, czy ta wartość się zmienia wraz z przepływem.
Tak czy inaczej jakimś sposobem bmeters jest na liście wspieranych nakładek - czy zatem mam kupić i sprawdzić inną?

Edit:

@Mariusz_Woszczyński
https://wmbusmeters.org/analyze/2944304CBC561421D401A2413101135EDE4147162D79D2548DFFF3F80C67385362D2AB9874E95EBE1F2A

Po zdekodowaniu stan i numer wodomierza zgadzają się ze stanem faktycznym:
{
“media”:“water”,
“meter”:“izar”,
“name”:“”,
“id”:“211456bc”,
“last_month_total_m3”:0,
“remaining_battery_life_y”:8.5,
“total_m3”:830.22,
“transmit_period_s”:8,
“current_alarms”:“meter_blocked”,
“last_month_measure_date”:“2017-01-31”,
“manufacture_year”:“2018”,
“prefix”:“C18UA”,
“previous_alarms”:“mechanical_fraud”,
“serial_number”:“110140”,
“timestamp”:“2023-12-21T19:26:36Z”
}
Z czego wnoszę, że ID jest takie jak podaje wmbusmeters. Takie zresztą widać w nagłówkach telegramu, jeśli odpalę czytnik bez sensorów.

Nie przesadzaj. Korzystasz z używanej nakładki, darmowego komponentu i narzekasz że coś nie działa?!

Masz do wyboru:

  • dopisać obsługę tej nakładki (jest to jakiś stary bmeters a komponent wspiera aktualnie tylko nowe)
  • kupić coś co wiadomo że będzie działać
  • nic nie robić

Wracając do Izara. Interesuje Ciebie ID a nie serial_number. Standardowo, bez logów nic nie powiem. Najlepiej jak by to były VERY_VERBOSE.

1 polubienie

ID Izara w konfiguracji ma byc 0x211456BC

1 polubienie

Witam,
czytam od 3 tygodni wartości liczników wody z nakładkami apator 16-2. Do dzisiaj nie było problemu z odczytem. Przeprowadzilem ponownie konfigurację ale dalej nie działa poprawnie. Wersja wmbus: [C][wmbus:416]: wM-Bus v2.4.9.
Oto moja konfiguracja:

#dashboard_import:
 # package_import_url: github://MariuszWoszczynski/WMBUS-reader/WMBUS-reader.yaml@main
 # import_full_config: true

substitutions:
  name: "wmbus-reader"
  friendly_name: "wmbus-reader"

esphome:
  name: "${name}"
  friendly_name: "${friendly_name}"
  project:
    name: esphome.wmbus_reader
    version: "1.0"
  # only for RPI 
  compile_process_limit: 1  
  
esp32:
  board: nodemcu-32s
  framework:
    type: arduino

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    components: [ wmbus ]
    refresh: 0d
    
    
time:
 - platform: sntp
   id: time_sntp


# Enable logging
logger:
  level: debug

# Enable Home Assistant API
api:
  encryption:
    key: "9p2efbtoh/7izZ93LRVsgSXsL1JAoP07YQeoyATI7IE="

ota:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  fast_connect: true
  reboot_timeout: 10min
#  static IP configuration (instead of data from the secret file)
#  ssid: "MY_WIFI"
#  password: "0123456789"
#  reboot_timeout: 10min
#  manual_ip:
#    static_ip: 192.168.1.99
#    gateway: 192.168.1.1
#    subnet: 255.255.255.0
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "WMBUS Reader - Fallback Hotspot"
#    password: "password_12345678"

#your mqtt parameters
#mqtt:
#  broker: 10.10.10.10  
#  port: 1883
#  username: username 
#  password: password 

captive_portal:

web_server: 
  port: 80

wmbus:
  mosi_pin: GPIO32
  clk_pin:  GPIO33 
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin:   GPIO23
  log_unknown: true
  led_pin: GPIO2
  led_blink_time: "1s"

text_sensor: 
    # For Apator16-2 water meter please add also text sensor (for debug purposes):
  - platform: wmbus                       
    name: "Text debug for Apator 16-2"
    #diagnostic info
  - platform: wifi_info                   
    ip_address:
      name: 'IP Address'
      icon: mdi:wifi
    ssid:
      name: 'Connected SSID'
      icon: mdi:wifi-strength-2
      
sensor:
    # Reports the WiFi signal strength/RSSI in dB
  - platform: wifi_signal 
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"
  # first sensor (water) - kitchen
  - platform: wmbus
    meter_id: 0x01075631
    type: apator162
    add_prefix: false
    key: "00000000000000000000000000000000"
    lqi:
      name: "My lqi"
    rssi:
      name: "My RSSI"
    total_water_m3:
      name: "Licznik wody w kuchni"
  # second sensor (water) - bathroom
  - platform: wmbus
    meter_id: 0x01116796
    type: apator162
    add_prefix: false
    key: "00000000000000000000000000000000"
    lqi:
      name: "My lqi"
    rssi:
      name: "My RSSI"
    total_water_m3:
      name: "Licznik wody w łazience"
  # more options on https://github.com/SzczepanLeon/esphome-components

Wartość nie jest poprawnie odczytywana a w logach występują następujące informacje:

[17:43:32][D][sensor:094]: 'WiFi Signal dB': Sending state -26.00000 dBm with 0 decimals of accuracy
[17:43:43][I][wmbus:087]: Using driver 'apator162' for ID [0x01075631] RSSI: -63 dBm LQI: 128 Mode: T1 T: 6E4401063156070105077A22006085668F1EF271E59B26CFCD905BFF8EAEF16C443F1B2FEC59B69D07FF841AEA0F7FD42AC559833A0EEDF0D4C7BFA5FD0E17BE9F0450C4AD62C8EF2C1C9213E00B1E4253217C2E4BF28EB54120FA878B6D7F13410D6E14CAB90ACD9FEE3BE7854E36 (111)
[17:43:43][D][wmbus:094]: Decrypted T : 6E4401063156070105077A220060852F2F0F5F97CC9708000843060A830012F45F97EC01CBED2010C40900007B01C4090000C4090000C4090000C4090000C4BE9F0450C4AD62C8EF2C1C9213E00B1E4253217C2E4BF28EB54120FA878B6D7F13410D6E14CAB90ACD9FEE3BE7854E36 (111)
[17:43:43][D][sensor:094]: 'My lqi': Sending state 128.00000  with 0 decimals of accuracy
[17:43:43][D][sensor:094]: 'My RSSI': Sending state -63.00000 dBm with 0 decimals of accuracy
[17:43:43][D][sensor:094]: 'Licznik wody w kuchni': Sending state 2.50000 m³ with 3 decimals of accuracy
[17:43:43][W][component:214]: Component wmbus took a long time for an operation (0.11 s).
[17:43:43][W][component:215]: Components should block for at most 20-30ms.
[17:44:32][D][sensor:094]: 'WiFi Signal dB': Sending state -26.00000 dBm with 0 decimals of accuracy
[17:45:32][D][sensor:094]: 'WiFi Signal dB': Sending state -27.00000 dBm with 0 decimals of accuracy
[17:45:38][I][wmbus:087]: Using driver 'apator162' for ID [0x01116796] RSSI: -62 dBm LQI: 128 Mode: T1 T: 6E4401069667110105077AF6006085530A48A47CC25B96A32D13FAF504B40C3E649549F8CD4AA74D774D5C44F3BBB7D6E96B0951AD219633E629E02C561241F1B79A8F0D4CCC0E070E46BC7234704FE7755B0AACC813AAA0E627635E1E2ABC8DF4CA634F6275D6BC47C52BE31EA9C0 (111)
[17:45:38][D][wmbus:094]: Decrypted T : 6E4401069667110105077AF60060852F2F0F5F97CC9710020043060A841C6BD914B6F70303000010D27501007B0128620100AE48010002300100771A010060F1B79A8F0D4CCC0E070E46BC7234704FE7755B0AACC813AAA0E627635E1E2ABC8DF4CA634F6275D6BC47C52BE31EA9C0 (111)
[17:45:38][D][sensor:094]: 'My lqi': Sending state 128.00000  with 0 decimals of accuracy
[17:45:38][D][sensor:094]: 'My RSSI': Sending state -62.00000 dBm with 0 decimals of accuracy
[17:45:38][D][sensor:094]: 'Licznik wody w łazience': Sending state 95.69800 m³ with 3 decimals of accuracy
[17:45:38][W][component:214]: Component wmbus took a long time for an operation (0.11 s).
[17:45:38][W][component:215]: Components should block for at most 20-30ms.
[17:46:32][D][sensor:094]: 'WiFi Signal dB': Sending state -27.00000 dBm with 0 decimals of accuracy
[17:47:32][D][sensor:094]: 'WiFi Signal dB': Sending state -27.00000 dBm with 0 decimals of accuracy```

Nie wiem o co chodzi z tym:

Component wmbus took a long time for an operation
Components should block for at most 20-30ms.

Wcześniej nie było tego w logach.

Widzę, że ten problem już się kiedyś pojawił. Czy mogę prosić o wyjaśnienie co się dzieje?

Co jakiś czas odczyt liczników jest aktualizowany. Więc jednak odczytuje pomiary ale jednak inaczej niż wcześniej. Widzę też że była dzisiaj aktualizacja esp czy to może mieć jakiś związek?

Witam
Mi dzisiaj po aktualizacji ESPHOME do ver 2023.12.3 przestało widzieć zdefiniowane encje dla 2 liczników wody a kolejnych dwóch nie spisywało stanów do HA.
Wróciłem do poprzedniej wersji i jest OK
Edit:
Nie zauważyłem nowych encji w HA
Pozdrawiam

Nie zauważyłem jakiś problemów po aktualizacjach ESPHome.

Ja po każdej aktualizacji ESPHome odłączam i podłączam Moduł.

Problem jest w sekcji MQTT
Jeżeli mam w pliku konfiguracyjnym wodomierza sekcję MQTT

mqtt:
  broker: 10.0.0.9
  port: 1883
  username: user_name
  password:   password
  discovery_retain: true

to mam brak telegramów, (w starszych wersjach było ok. Używam 2023.10.6)

Wersje 2023.11.x usunięcie sekcji MQTT i uruchomienie integracji EspHome daje odczyty w integracji. Brak możliwości korzystania MQTT.

Pozdrowienia

1 polubienie

Odnośnie?
Co do bmetersa to nie podpowiem, a izar.musi działać. Wywal mqtt, jak podpowiada Darek. Ja mqtt nie używam i u mnie wszystko śmiga

1 polubienie

W ogóle to w grudniowych wydaniach ESPHome są breaking changes oraz sporo rzeczy jest zwalonych.

2 polubienia

@Mariusz_Woszczyński, w istocie IZAR zadziałał i uzyskałem odczyty sensorów.

@Dariusz_Barczyński wywalenie mqtt pomogło.

Z Bmeters w końcu zdobyłem nową nakładkę i okazało się, że telegramy są prawidłowe, natomiast niestety sensor pokazuje jakąś dziwną wartość (bardziej przypomina rssi niż odczyt), za to w telegramach są prawidłowe dane. Zatem driver jest pewnie niekompatybilny. @_Szczepan planujesz poprawki?

Ostatecznie mógłbym wybrać wariant z wysyłaniem telegramów z bmeters do wmbusmeters ha addon, ale tu pojawia się problem z konfiguracją - nie ma pliku json dla bmeters, jest tylko hydrocalm3.
Może powinienem użyć innego, @_Szczepan?

Edit - wziąłem hydrodigit i ruszyło, ale na razie nie mam odczytów - może nie nadaje ramek. Zobaczymy później.

Edit 2 - mam timestamp z bmeters, ale total nieznany.

Edit 3: meter reading: {“media”:“water”,“meter”:“hydrodigit”,“name”:“WodaK2test”,“id”:“22xxxx”,“timestamp”:“2023-12-31T20:05:45Z”,“device”:“rtlwmbus[cmd_0]”,“rssi_dbm”:-25}

Edit 4:
Telegramy są widoczne w czytniku, ale wmbusmeters addon nie podaje wartości total. Może driver zły? Nie mam pliku z driverem auto…

To fragment logu z czytnika:

[13:21:07][VV][wmbus:057]: have data from CC1101 ...
[13:21:07][I][wmbus:087]: Using driver 'bmeters' for ID [0x22108441] RSSI: -58 dBm LQI: 128 Mode: T1 T: 4E44B4094184102213077A73084005E32D0EBFA24DFFA17E4FF73CED67D802DFE0018E7BEC030105C8913E72A1A918787560B44438E941976A384C0140BE9C09F0E2998D9B17E93F5F2216817C08C9 (79)
[13:21:07][VV][wmbus:089]: Key defined, trying to decrypt telegram ...
[13:21:07][VV][wmbus:290]: Decrypting: tpl-ci '7A' tpl-cfg '540' offset '15
[13:21:07][VV][wmbus:338]: 2F2f check after decrypting - OK
[13:21:07][D][wmbus:094]: Decrypted T : 4E44B4094184102213077A730840052F2F0C1381000000046D152D01310F170A232C291100000002000002000002000002000002000002000002000002000009F0E2998D9B17E93F5F2216817C08C9 (79)
[13:21:07][VV][wmbus-drivers:041]: Converting BCD to INT
[13:21:07][VV][wmbus-drivers:210]: Found register '0C13' with '81'->'0.081000'
[13:21:07][VV][wmbus-drivers:035]: Value added to map
[13:21:07][V][sensor:043]: 'Woda K4bm': Received new state 128.000000
[13:21:07][D][sensor:094]: 'Woda K4bm': Sending state 128.00000  with 0 decimals of accuracy
[13:21:07][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[13:21:07][V][json:058]: Size after shrink 72 bytes
[13:21:07][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 2382216807
  state: 128
  missing_state: NO
}
[13:21:07][VV][wmbus:125]: Publishing 'total_water_m3' = 0.0810
[13:21:07][V][sensor:043]: 'woda_k4_bm': Received new state 0.081000

ale niestety nie widać tego w wmbusmteres, a jak włączyć mqtt to w ogóle nie działa…
Może mam błąd w konfiguracji wmbusmetersha addon albo w yamlu? Ktoś coś?

#dashboard_import:
#  package_import_url: github://MariuszWoszczynski/WMBUS-reader/WMBUS-reader.yaml@main
#  import_full_config: true

substitutions:
  name: "wmbus-reader"
  friendly_name: "Woda wmbus K4"

esphome:
  name: "${name}"
  friendly_name: "${friendly_name}"
  project:
    name: esphome.wmbus_reader
    version: "1.0"
  # only for RPI 
  compile_process_limit: 1  
  
esp32:
  board: nodemcu-32s
  framework:
    type: arduino

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    components: [ wmbus ]
    refresh: 0d
    
    
time:
 - platform: sntp
   id: time_sntp

logger:
  level: VERY_VERBOSE

api:

ota:

wifi:
  ssid: "xxx"
  power_save_mode: none
  fast_connect: true
  reboot_timeout: 10min
  password: "xxx"
  manual_ip:
    static_ip: 192.168.0.64
    gateway: 192.168.0.1
    subnet: 255.255.255.0
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "WMBUS K4 Fallback"

captive_portal:

web_server: 
  port: 80

wmbus:
  mosi_pin: GPIO32
  clk_pin:  GPIO33 
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin:   GPIO23
  log_unknown: true
  led_pin: GPIO2
  led_blink_time: "1s"

  clients:
    - name: "wmbusmeters"
      ip_address: "192.168.0.94"
      port: 7011
      format: RTLWMBUS
      transport: TCP
      
sensor:
    # Reports the WiFi signal strength/RSSI in dB
  - platform: wifi_signal 
    name: "Woda K4 WiFi Signal"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"


  - platform: wmbus
    meter_id: 0x22108441
    type: bmeters
    add_prefix: false
    key: "00000000000000000000000000000000"
    lqi:
      name: "Woda K4 LQI"
    total_water_m3:
      id: "woda_k4_bm"


text_sensor: 
    #diagnostic info
  - platform: wifi_info                   
    ip_address:
      name: 'Woda K4 IP'
      icon: mdi:wifi
    ssid:
      name: 'Woda K4 SSID'
      icon: mdi:wifi-strength-2

wmbusmeters ha addon działa na porcie 7011 tcp:

device=rtlwmbus:CMD(/usr/bin/nc -lk 7011)
donotprobe=all
format=json
logfile=/config/wmbusmeters/edge/wmbusmeters.log
loglevel=verbose
logtelegrams=true
meterfiles=/config/wmbusmeters/edge/logs/meter_readings/
meterfilesaction=append
shell=/wmbusmeters/mosquitto_pub.sh "wmbusmeters/$METER_NAME" "$METER_JSON"

meter:

driver=hydrodigit
id=22108441
key=00000000000000000000000000000000
name=woda_k4_bm

Przy pustym sensorze mam w logu taki błąd:

[ 29439][E][WiFiClient.cpp:268] connect(): socket error on fd 51, errno: 104, "Connection reset by peer"
[W][component:214]: Component wmbus took a long time for an operation (0.08 s).
[W][component:215]: Components should block for at most 20-30ms.
wMBus-lib: Processing T1 A frame

@skupu NIE używaj cytowania do wklejania logów ani jakiegokolwiek kodu, użyj znacznika kodu, spróbuję podedytować posta powyżej… ale to jest rzeźnia pooprawiać coś takiego/

@szopen Zaraz poprawię - nie ogarniam tych oznaczeń.

Edit:
Lepiej?

1 polubienie

Przecież ładnie zdekodowało Tobie tę total 0.081 m3 !!
obraz
obraz

W telegramie nie masz nic więcej zawartego:
obraz

No więc tym bardziej się dziwię, że stan sensora pozostaje pusty…
Nie wpada nic chyba do wmbusmeters, a na pewno stamtąd do mqtt nic.
Gdzieś muszę mieć błąd…

Katalog meter_readings jest pusty.
W log też ani śladu po telegramie.

Czyli może do ha addon nie wpada telegram z czytnika.
"[WiFiClient.cpp:268] connect(): socket error on fd 51, errno: 104, "Connection reset by peer’’ mnie zastanawia…

Ale to nie leci do wmbusmeters’a. Powinno trafiać bezpośrednio do HomeAssistant’a
obraz

Do wmbusmetersa wysyłasz całą ramkę po TCP (bez udziału drivera).
jednak coś nie może się połączyć:
obraz

A nie pojawiły się przypadkiem dwie nowe encje? Jakiś babol na przełomie ESPHome 11 i 12 mieli z ID dla encji.