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

Zakręcony już dzisiaj jestem, bo i w robocie pod górkę to i teraz z tym repo jakos tak odruchowo.
Domyślny klucz w driverach, miałem właśnie dylemat gdzie go umieścić, naturalnie było by w driverach, ale natomiast w konstruktorze ładnie widać w logu.
Oka zmianie to i będzie w driverach, ale to już nie dzisiaj.

Wypchnąłem wersję 2.2.35 z uaktualnionym driverem dla sharky774.
Dodane dodatkowe pola, bez domyślnego klucza.
@aurban6 Możesz przetestować?

Działa wyśmienicie, wszystkie wartości zgadzają się z odczytem z miernika.
image

Dodał bym do dokumentacji przykład konfiguracji

  - platform: wmbus
    meter_id: 0x75453518
    type: sharky774
    key: "51728910E66D83F851728910E66D83F8"
    lqi:
      name: "My lqi"
    rssi:
      name: "My RSSI"
    total_energy_consumption_kwh:
      name: "My consumption in kWh"
      device_class: "energy"
      icon: "mdi:heating-coil"
    power_kw:
      name: "My power in kW"
    flow_temperature_c:
      name: "My flow temp"
    return_temperature_c:
      name: "My return temp"
    total_volume_m3:
      name: "My volume in m3"
    volume_flow_m3h:
      name: "My flow in m3h"

Zastanawiam się co do klucza (specjalnie umieściłem go w przykładzie) czy to jednak dobry pomysł zaszywać go w kodzie (a jak się w jakiejś wersji fw licznika zmieni).
Widzę po przykładach, że dla type: bmeters umieściłeś rozumiem defaultowy klucz, tak więc podobnie było by dla sharky.
Wycofałem się też z pomysłu dodawania drivera sharky ponieważ nie zauważyłem różnic pomiędzy shark774.
Do zastanowienia czy zamiast “total_energy_consumption_kwh” nie zwracać w GJ, ponieważ ta jednostka raczej służy do rozliczenia się (podaje się cenę dla 1 GJ)(na liczniku 1 pokazywana wartością jest zużycie w GJ).
Do zastanowienia czy zamiast “volume_flow_m3h” nie zwracać przepływu w litrach na godzinę.
Tak wiem, na wszystkie te wartości można nałożyć filtr.

Domyślny można zaszyć tak aby i tak był nadpisywany poprzez key z YAMLa

Mi jest to obojętne – nie korzystam z tego miernika :wink:

Mam jeszcze jedną prośbę - test/log VERBOSE z:

external_components:
  - source: github://SzczepanLeon/esphome-components@default_key

Chyba kiepski pomysł, a co jeśli monter ustali jakiś swój klucz szyfrujący ?
Nie wiem jak działa ten licznik, czy można zmienić klucz szyfrujący, czy ten default działa niezależnie od własnego klucza.
Dodałem już sobie filtry i niech tak pozostanie rzeczywiście jak licznik zwraca.

Mam jeszcze jedną prośbę - test/log VERBOSE z OK

Nie w tę stronę. Po prostu najczęściej wykorzystywane klucze jako defaultowe i wtedy nie trzeba by sekcji key dodawać do konfiga. A jak ktoś ma inny klucz to daje key z tym swoim.

1 polubienie

Jeśli oczekujesz w logu

ESP_LOGV(TAG, "Added driver '%s' with key '%s'", this->driver_type_.c_str(), this->key_.c_str());

To nie ma.

[14:44:33][C][wmbus:400]: wM-Bus v2.3.01:
[14:44:33][C][wmbus:402]:   Clients:
[14:44:33][C][wmbus:409]:     wmbusmeters: 10.0.0.1:7227 TCP [rtl-wmbus]
[14:44:33][C][wmbus:413]:   LED:
[14:44:33][C][wmbus:414]:     Pin: GPIO0
[14:44:33][C][wmbus:415]:     Duration: 1000 ms
[14:44:33][C][wmbus:417]:   CC1101 SPI bus:
[14:44:33][C][wmbus:418]:     MOSI Pin: GPIO23
[14:44:33][C][wmbus:419]:     MISO Pin: GPIO19
[14:44:33][C][wmbus:420]:     CLK Pin:  GPIO18
[14:44:33][C][wmbus:421]:     CS Pin:   GPIO5
[14:44:33][C][wmbus:422]:     GDO0 Pin: GPIO16
[14:44:33][C][wmbus:423]:     GDO2 Pin: GPIO17
[14:44:33][C][wmbus:430]:   Available drivers:  amiplus, apator08, apator162, apatoreitn, bmeters, c5isf, compact5, dme07, elf, evo868, fhkvdataiii, hydrocalm3, hydrus, iperl, itron, izar, mkradio3, mkradio4, qheat, qwater, sharky774, topaseskr, ultrimis, unismart, vario451
[14:44:33][C][wmbus:448]:   Meter:
[14:44:33][C][wmbus:449]:     ID: 71726978 [0x04467782]
[14:44:33][C][wmbus:450]:     Type: apator162
[14:44:33][C][wmbus:451]:     Mode: T1
[14:44:33][C][wmbus:452]:     Key: '00000000000000000000000000000000'
[14:44:33][C][wmbus:454]:     Sensor 'Zimna woda RSSI'
[14:44:33][C][wmbus:454]:       Device Class: 'signal_strength'
[14:44:33][C][wmbus:454]:       State Class: 'measurement'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'dBm'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 0
[14:44:33][C][wmbus:454]:     Sensor 'Zimna woda'
[14:44:33][C][wmbus:454]:       Device Class: 'water'
[14:44:33][C][wmbus:454]:       State Class: 'total_increasing'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'm³'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 3
[14:44:33][C][wmbus:454]:       Icon: 'mdi:water'
[14:44:33][C][wmbus:448]:   Meter:
[14:44:33][C][wmbus:449]:     ID: 71899169 [0x04491821]
[14:44:33][C][wmbus:450]:     Type: apator162
[14:44:33][C][wmbus:451]:     Mode: T1
[14:44:33][C][wmbus:452]:     Key: '00000000000000000000000000000000'
[14:44:33][C][wmbus:454]:     Sensor 'Ciepła woda RSSI'
[14:44:33][C][wmbus:454]:       Device Class: 'signal_strength'
[14:44:33][C][wmbus:454]:       State Class: 'measurement'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'dBm'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 0
[14:44:33][C][wmbus:454]:     Sensor 'Ciepła woda'
[14:44:33][C][wmbus:454]:       Device Class: 'water'
[14:44:33][C][wmbus:454]:       State Class: 'total_increasing'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'm³'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 3
[14:44:33][C][wmbus:454]:       Icon: 'mdi:water'
[14:44:33][C][wmbus:448]:   Meter:
[14:44:33][C][wmbus:449]:     ID: 1969558806 [0x75651516]
[14:44:33][C][wmbus:450]:     Type: sharky774
[14:44:33][C][wmbus:451]:     Mode: T1
[14:44:33][C][wmbus:452]:     Key: '51728910E66D83F851728910E66D83F8'
[14:44:33][C][wmbus:454]:     Sensor 'c.o. temp wejście'
[14:44:33][C][wmbus:454]:       Device Class: 'temperature'
[14:44:33][C][wmbus:454]:       State Class: 'measurement'
[14:44:33][C][wmbus:454]:       Unit of Measurement: '°C'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 0
[14:44:33][C][wmbus:454]:       Icon: 'mdi:coolant-temperature'
[14:44:33][C][wmbus:454]:     Sensor 'c.o. moc bieżąca'
[14:44:33][C][wmbus:454]:       Device Class: 'energy'
[14:44:33][C][wmbus:454]:       State Class: 'measurement'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'kW'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 3
[14:44:33][C][wmbus:454]:       Icon: 'mdi:transmission-tower-export'
[14:44:33][C][wmbus:454]:     Sensor 'c.o. temp wyjście'
[14:44:33][C][wmbus:454]:       Device Class: 'temperature'
[14:44:33][C][wmbus:454]:       State Class: 'measurement'
[14:44:33][C][wmbus:454]:       Unit of Measurement: '°C'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 0
[14:44:33][C][wmbus:454]:       Icon: 'mdi:coolant-temperature'
[14:44:33][C][wmbus:454]:     Sensor 'c.o. RSSI'
[14:44:33][C][wmbus:454]:       Device Class: 'signal_strength'
[14:44:33][C][wmbus:454]:       State Class: 'measurement'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'dBm'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 0
[14:44:33][C][wmbus:454]:     Sensor 'c.o. zużycie'
[14:44:33][C][wmbus:454]:       Device Class: 'energy'
[14:44:33][C][wmbus:454]:       State Class: 'total_increasing'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'GJ'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 3
[14:44:33][C][wmbus:454]:       Icon: 'mdi:heating-coil'
[14:44:33][C][wmbus:454]:     Sensor 'c.o. całkowity przepływ'
[14:44:33][C][wmbus:454]:       Device Class: 'water'
[14:44:33][C][wmbus:454]:       State Class: 'total_increasing'
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'm³'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 3
[14:44:33][C][wmbus:454]:       Icon: 'mdi:water'
[14:44:33][C][wmbus:454]:     Sensor 'c.o. przepływ l/h'
[14:44:33][C][wmbus:454]:       Device Class: 'water'
[14:44:33][C][wmbus:454]:       State Class: ''
[14:44:33][C][wmbus:454]:       Unit of Measurement: 'l/h'
[14:44:33][C][wmbus:454]:       Accuracy Decimals: 3
[14:44:33][C][wmbus:454]:       Icon: 'mdi:water'
[14:44:34][D][wmbus:184]: Meter ID [0x75651541] RSSI: -63 dBm LQI: 130 Mode: T1 not found in configuration T: 5E44A5114115657541047A3A0050052913E881DD30C5F7FDC6E81745940CE405B10E8D1CFFAE88C428E2A441242A394CA19B75FEAF50E25707E4EE8DC87B284D10873CBAA3D43ECB5B349F3C1920567E4CD63315B34ABEF732D0114C37F65F (95)

Jedyne pochodzące z wmbus-drivers to z pobierania wartości

[14:46:30][I][wmbus:084]: Using driver 'sharky774' for ID [0x75651516] RSSI: -50 dBm LQI: 128 Mode: T1 T: 5E44A5111615657541047A2E0050059DB3CB56C30D5D26323452685F3B600F3BEE4ADF0C616E5F4E8343DB16FED04BC08E1D50377A99160D2705E471BFBDAF373814E759727671750613111B6B5A106CD97F522F4846A2D5F51FD621D6C4E0 (95)
[14:46:30][D][wmbus:090]: Decrypted T : 5E44A5111615657541047A2E0050052F2F0C0E966101000C13123634000B3B0000000C2B000000000A5A33040A5E95020B266998000AA6180000C2026CFF2A373814E759727671750613111B6B5A106CD97F522F4846A2D5F51FD621D6C4E0 (95)
[14:46:30][V][wmbus-drivers:088]: Found register '0C0E' with '16196'->'1106032832779409581720731648.000000'
[14:46:30][V][wmbus-drivers:187]: Found register '0C13' with '343612'->'1001816996111155328.000000'
[14:46:30][V][wmbus-drivers:364]: Found register '0B3B' with '0'->'0.000000'
[14:46:30][V][wmbus-drivers:345]: Found register '0C2B' with '0'->'0.000000'
[14:46:30][V][wmbus-drivers:287]: Found register '0A5A' with '433'->'62706532359.154305'
[14:46:30][V][wmbus-drivers:307]: Found register '0A5E' with '295'->'3758097408.447144'
[14:46:30][V][sensor:043]: 'c.o. RSSI': Received new state -50.000000
[14:46:30][D][sensor:094]: 'c.o. RSSI': Sending state -50.00000 dBm with 0 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 72 bytes
[14:46:30][V][sensor:043]: 'c.o. temp wejście': Received new state 43.299999
[14:46:30][D][sensor:094]: 'c.o. temp wejście': Sending state 43.30000 °C with 0 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes
[14:46:30][V][sensor:043]: 'c.o. moc bieżąca': Received new state 0.000000
[14:46:30][D][sensor:094]: 'c.o. moc bieżąca': Sending state 0.00000 kW with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes
[14:46:30][V][sensor:043]: 'c.o. temp wyjście': Received new state 29.500000
[14:46:30][D][sensor:094]: 'c.o. temp wyjście': Sending state 29.50000 °C with 0 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes
[14:46:30][V][sensor:043]: 'c.o. zużycie': Received new state 4498.888672
[14:46:30][D][sensor:094]: 'c.o. zużycie': Sending state 16.19600 GJ with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 76 bytes
[14:46:30][V][sensor:043]: 'c.o. całkowity przepływ': Received new state 343.612000
[14:46:30][D][sensor:094]: 'c.o. całkowity przepływ': Sending state 343.61200 m³ with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 88 bytes
[14:46:30][V][sensor:043]: 'c.o. przepływ l/h': Received new state 0.000000
[14:46:30][D][sensor:094]: 'c.o. przepływ l/h': Sending state 0.00000 l/h with 3 decimals of accuracy
[14:46:30][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[14:46:30][V][json:058]: Size after shrink 80 bytes

Oczekuje byle czego z drivera na VERBOSE

ESP_LOGV(TAG, "Added driver '%s' with key '%s'", this->driver_type_.c_str(), this->key_.c_str());

Ten powyżej to raczej się pokaże tylko po serialu – odpalany jest raz więc nie liczę na jego obecność w logu.
Ważne że te z get_ są.

1 polubienie

Odnośnie czy telegram jest rozkodowany to można by się pokusić o sprawdzenie w telegramie 2f2f i ew. podjąć próbę z default key.

Dokładnie tak po dekodowaniu jest robione.

Z tym sharky to wyskoczyło połączenie paru rzeczy.
Auto dekodowania w wmbusmeters i zaćmnienia użytkowników :wink:

Tutaj mogło by pomóc parsowanie tpl-cfg

1 polubienie

Po testowaniu licznika można by napisać, że doszedłem do zadowolenia.
image

sensor:
  # Ogrzewanie
  - platform: wmbus
    meter_id: 0x75741589
    type: sharky774
    key: "51728910E66D83F851728910E66D83F8"
    rssi:
      name: "Ogrzewanie RSSI"
    total_energy_consumption_gj:
      name: "Ogrzewanie zużycie GJ"
    power_kw:
      name: "Ogrzewanie moc bieżąca"
    total_volume_m3:
      name: "Ogrzewanie przepływ"
    volume_flow_l3h:
      name: "Ogrzewanie przepływ l/h"
    flow_temperature_c:
      name: "Ogrzewanie wejście"
    return_temperature_c:
      name: "Ogrzewanie wyjście"
    operating_time_d:
      name: "Ogrzewanie czas"

@_Szczepan wyślę Ci requesty na githuba.

Cześć, posiadam ESP32 z podłączonym CC1101 wg schematu:

wmbus:
mosi_pin: GPIO13
miso_pin: GPIO12
clk_pin: GPIO14
cs_pin: GPIO2
gdo0_pin: GPIO5
gdo2_pin: GPIO4

Problem polega na tym że randomowo co któryś restart ESP32 ono nie wstaje. Zapętla się na botowaniu. Jak odłączę wtedy CC1101 to normalnie ESP się uruchomi. Ktoś ma jakiś pomysł gdzie szukać przyczyny?

Płytka jest zasilana ładowarką USB 5V-550mA

W ESP32 jest inny zestaw “niezdrowych” pinów niż w ESP8266

a że jest ich dużo więcej do wykorzystania to możesz spróbować zmiany “pinologii”.

1 polubienie

Dla esp32dev

wmbus:
  mosi_pin: GPIO23
  miso_pin: GPIO19
  clk_pin:  GPIO18
  cs_pin:   GPIO5
  gdo0_pin: GPIO16
  gdo2_pin: GPIO17
  led_pin: GPIO2
  led_blink_time: "1s"
  clients:
  - name: "wmbusmeters"
    ip_address: "10.0.0.1"
    port: 7227
2 polubienia

Zmieniłem GPIO5 na 27 i póki co problem z głowy :slight_smile:

1 polubienie

Zaktualizowałem ESPHome z wersji 2023.11.4 na 2023.11.6 i moje ESP32 przestało odbierać dane z modułu unismart. W logu cisza. Nakładki apator08 działają bez zarzutów. Przywróciłem 2023.11.4 i wszystko działa.
Czy komuś działa unismart na wersji 2023.11.6 ?

Załącz logi VERY_VERBOSE na tym 2023.11.6, może coś ciekawego będzie.

Co masz w YAMLu?

W yaml’u mam to:

wmbus:
  mosi_pin: GPIO23
  miso_pin: GPIO19
  clk_pin:  GPIO18
  cs_pin:   GPIO5
  gdo0_pin: GPIO25
  gdo2_pin: GPIO26
  log_unknown: true

sensor:
  - platform: wmbus
    meter_id: 0x000ABFA4
    type: apator08
    mode: T1
    add_prefix: false
    total_water_m3:
      id: "water_main"
      name: "Woda - Licznik główny"
      filters:
        - offset: 83.078

  - platform: wmbus
    meter_id: 0x000B9CE7
    type: apator08
    mode: T1
    add_prefix: false
    total_water_m3:
      id: "water_garden"
      name: "Woda - Licznik ogrodowy"
      filters:
        - offset: 60.457

  - platform: wmbus
    meter_id: 0x00058794
    type: unismart
    key: "00000000000000000000000000000000"
    add_prefix: false
    total_gas_m3:
      id: "gas_main"
      name: "Licznik gazu"
      icon: "mdi:gas-burner"
      device_class: "gas"
      accuracy_decimals: 3
      filters:
        - offset: 4337.090

Tylko? Żadnych dodatkowych komponentów?

Oprócz konfiguracji platformy, wifi, ota, api, time nic więcej nie ma.