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

W drugim module podczytowym mam definicję


i też nie czytają się poprawnie liczniki

```
type: apatoreitn
    mode: T1C1
```

Czekam na poprawkę, która będzie się próbowała czytać podzielniki ciepła z key w formie HEX

3 posty zostały scalone z istniejącym tematem: Komponent wM-Bus do ESPHome (SzczepanLeon) wersja 4.x - wątek ogólny

Cześć,

uruchomiłem ostatnio wmbus na esphome i napotkałem problem z którym nie potrafię sobie poradzić. Może ktoś jest w stanie pomóc.

Mam HydrocalM4 i brak dekodowania ‘total_heating_kwh’.
Moja konfiguracja esphome:

esphome:
  name: esp-cc1101
  friendly_name: ESP CC1101

esp8266:
  board: esp12e

logger:
  level: VERBOSE

#web_server:
#  port: 80
#  version: 2

api:

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  min_auth_mode: WPA2

time:
  - platform: homeassistant
    id: ha_time

external_components:
  - source: github://SzczepanLeon/esphome-components@version_3
    components: [wmbus]

wmbus:
  mosi_pin: GPIO13
  miso_pin: GPIO12
  clk_pin: GPIO14
  cs_pin: GPIO15
  gdo0_pin: GPIO5
  gdo2_pin: GPIO4
  log_unknown: true

sensor:
  - platform: wmbus
    meter_id: 0x05151953
    type: hydrocalm3
    total_water_m3:
      name: "Total water"
    total_heating_kwh:
      name: "Total heating"

w logu mam:

[09:07:24.914][V][mbus:052]: Frame: 8644B409531915051A0DB5658C00C27A8A000000046D1F294C330C0B8FAE476493310C13907060008C10086771101F36028C1013930500000F640100000000003F0A0F0B0D15263162542824662471522134BD4C53197111188408188408188408188408E953184898176181160B0934472068951865008F68186058186058184049184049184049C4E2184049184049184049184049187323 (153) [with CRC]
[09:07:24.933][V][mbus:095]: Validating CRC for Block1
[09:07:24.944][V][crc:031]:     calculated: 0xB565, read: 0xB565
[09:07:24.944][V][mbus:115]: Validating CRC for Block2
[09:07:24.944][V][crc:031]:     calculated: 0x8FAE, read: 0x8FAE
[09:07:24.957][V][mbus:115]: Validating CRC for Block3
[09:07:24.957][V][crc:031]:     calculated: 0x1F36, read: 0x1F36
[09:07:24.972][V][mbus:115]: Validating CRC for Block4
[09:07:24.972][V][crc:031]:     calculated: 0x3F0A, read: 0x3F0A
[09:07:24.972][V][mbus:115]: Validating CRC for Block5
[09:07:24.981][V][crc:031]:     calculated: 0xBD4C, read: 0xBD4C
[09:07:24.982][V][mbus:115]: Validating CRC for Block6
[09:07:24.997][V][crc:031]:     calculated: 0xE953, read: 0xE953
[09:07:24.997][V][mbus:115]: Validating CRC for Block7
[09:07:25.017][V][crc:031]:     calculated: 0x008F, read: 0x008F
[09:07:25.017][V][mbus:115]: Validating CRC for Block8
[09:07:25.017][V][crc:031]:     calculated: 0xC4E2, read: 0xC4E2
[09:07:25.017][V][mbus:115]: Validating CRC for Block9
[09:07:25.018][V][crc:031]:     calculated: 0x7323, read: 0x7323
[09:07:25.024][V][mbus:062]: Frame: 8644B409531915051A0D8C00C27A8A000000046D1F294C330C0B476493310C13907060008C1008677110028C1013930500000F640100000000000F0B0D1526316254282466247152213453197111188408188408188408188408184898176181160B09344720689518656818605818605818404918404918404918404918404918404918404918 (135) [without CRC]
[09:07:25.049][D][wmbus:090]: Using driver 'hydrocalm3' for ID [0x05151953] RSSI: -60 dBm LQI: 132 Frame: T1 A T: 8644B409531915051A0D8C00C27A8A000000046D1F294C330C0B476493310C13907060008C1008677110028C1013930500000F640100000000000F0B0D1526316254282466247152213453197111188408188408188408188408184898176181160B09344720689518656818605818605818404918404918404918404918404918404918404918 (135)
[09:07:25.084][V][wmbus:121]: Publishing 'total_water_m3' = 607.0900
[09:07:25.111][V][sensor:083]: '0x5151953 Total water': Received new state 607.090027
[09:07:25.146][D][sensor:135]: '0x5151953 Total water': Sending state 607.09003 m³ with 3 decimals of accuracy

jak widać odczytywany jest tylko sensor ‘total_water_m3’, brak ‘total_heating_kwh’, wmbusmeters –analyze go dekoduje poprawnie:

{
    "_":"telegram",
    "media":"heat/cooling load",
    "meter":"hydrocalm3",
    "name":"",
    "id":"05151953",
    "device_datetime":"2026-03-12 09:31",
    "total_heating_kwh":8871.235278,
    "total_heating_m3":607.09,
    "status":"OK",
    "timestamp":"2026-03-12T08:08:34Z"
}

Ktoś miał podobne problemy?
Dzięki

EDIT:
Wygląda na to, że problem leży w driverze:

struct Hydrocalm3: Driver
{
  Hydrocalm3(std::string key = "") : Driver(std::string("hydrocalm3"), key) {};
  virtual esphome::optional<std::map<std::string, double>> get_values(std::vector<unsigned char> &telegram) override {
    std::map<std::string, double> ret_val{};

    add_to_map(ret_val, "total_heating_kwh", this->get_0C0E(telegram));
    add_to_map(ret_val, "total_heating_kwh", this->get_0C03(telegram));
    add_to_map(ret_val, "total_heating_kwh", this->get_0C0A(telegram));
    add_to_map(ret_val, "total_heating_kwh", this->get_0C09(telegram)); /* Hydrocal M4 kWh metering map value */ 
    add_to_map(ret_val, "total_water_m3", this->get_0C13(telegram));

    if (ret_val.size() > 0) {
      return ret_val;
    }
    else {
      return {};
    }
  };

private:
};

brakowało:

    add_to_map(ret_val, "total_heating_kwh", this->get_0C0B(telegram));

Problem rozwiązany

Od roku dobrze działał mi odczyt z liczników: GAMA 350 - energii i LIZAR - wody.
Mam odczyt na ESP32 + CC1101
Dziś wymienili mi licznik wody i zmienił się ID licznika.
Niestety po zmianie ID licznika w YAML, ESPHome nie chce się skompilować.
Praktycznie kod YAML jest niezmieniony.
Pewnie od poprzedniej kompilacji coś się zmieniło w zewnętrznych bibliotekach …
Proszę o sugestię co zrobić?

Using Python 3.12.10 environment at: /root/.platformio/penv/.espidf-5.5.4 Reading CMake configuration... Dependency Graph |-- noise-c @ 0.1.11 |-- SPI @ 3.3.8 |-- SmartRC-CC1101-Driver-Lib @ 2.5.7+sha.b8c6af4 |-- wM-Bus-drivers @ 0.0.0+20260421171655.sha.c856f7d Compiling .pioenvs/esp32-mbus/src/esphome/components/wmbus/wmbus.cpp.o Compiling .pioenvs/esp32-mbus/src/esphome/core/gpio.cpp.o Compiling .pioenvs/esp32-mbus/src/esphome/core/helpers.cpp.o Compiling .pioenvs/esp32-mbus/src/esphome/core/log.cpp.o In file included from src/esphome/components/wmbus/wmbus.cpp:1: src/esphome/components/wmbus/wmbus.h:17:10: fatal error: WiFiClient.h: No such file or directory \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \* Looking for WiFiClient.h dependency? Check our library registry! \* \* CLI > platformio lib search "header:WiFiClient.h" \* Web > https://registry.platformio.org/search?q=header:%1B%5Bm%1B%5BKWiFiClient.h \* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 17 | #include <WiFiClient.h> | ^\~\~\~\~\~\~\~\~\~\~\~\~\~ compilation terminated. \*\*\* \[.pioenvs/esp32-mbus/src/esphome/components/wmbus/wmbus.cpp.o\] Error 1 ========================= \[FAILED\] Took 19.24 seconds =========================

https://forum.arturhome.pl/t/esphome-cloud-builder-kompiluj-w-chmurze-dla-dowolnej-wersji-wydania/16407

Zmieniło się środowisko - musisz skompilować na bardzo starej wersji ESP.

@Krzyszof_K - dzięki za podpowiedź kompilacji w starej wersji ESPHome.

Znalazłem proste rozwiązanie, które może przydać się innym z podobnym problemem.

W HA doinstalowałem starą wersję ESPHome, w której skutecznie kompilowałem ostatnio ten YAML.
Opis instalacji:
Wejdź w:
Ustawienia → Aplikacje → Zainstaluj aplikację → 3 kropki → Repozytoria

  1. Dodaj:

    https://github.com/khenderick/esphome-legacy-addons
    
  2. Znajdziesz tam stare wersje ESPHome

  3. Zainstaluj konkretną wersję ( w moim przypadku 2025.10)

  4. Na liście aplikacji pojawi się nowa, np. “ESPHome 2025.10” - należy włączyć “Show in sidebar” i uruchomić.

  5. W menu pojawi się nowy punkt, np. “ESPHome 2025.10”, który pozwala przekompilować “starą wersję” YAML i zaktualizować firmware z nowym ID licznika.

Na prośbę @super wrzucam mój szkic, który kompiluje się w ESPHome 2025.10
Pozostaje wpisać swoje “tajne” dane

# WMBUS odbiornik na CC1101 
#  biblioteka github://SzczepanLeon/esphome-components@version_3

esphome:
name: esp32-mbus
friendly_name: ESP32-MBus

esp32:
board: esp32dev

logger:
level: DEBUG

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Mbus Fallback Hotspot"
    password: "MBusCaptive"

captive_portal:

web_server: 
  port: 80
  version: 3  

time:
  - platform: sntp
    id: time_sntp
 
# Status LED for connection
#status_led:
#  pin:
    # Blue LED
#    number: GPIO02

external_components:
  - source: github://SzczepanLeon/esphome-components@version_3
    refresh: 0d
    components: [ wmbus ]
     
wmbus:
  mosi_pin: GPIO23
  miso_pin: GPIO19
  clk_pin:  GPIO18
  cs_pin:   GPIO15
  gdo0_pin: GPIO4
  gdo2_pin: GPIO27
 
 
  frequency: 868.900
 # powinno być 868.950 ale mój CC1101 ma uchyb ok -0.07..-0.1 


sensor:
  - platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

# first sensor (water)
  - platform: wmbus
    meter_id: 0x21316BAC
    type: izar
    add_prefix: false
    rssi:
      name: "IZAR RSSI [dB]"
    total_water_m3:
      name: "IZAR water TOTAL"
    last_month_total_water_m3:
      name: "IZAR Last month"
    transmit_period_s:
      name: "IZAR Transmit period [s]"
    remaining_battery_life_y:
      name: "IZAR battery life [Y]"
    current_alarms:
      name: "IZAR Current alarms"
    previous_alarms:
      name: "IZAR Previous alarms"
  # second sensor (electricity)
  - platform: wmbus
    meter_id: 0x30653123
    type: amiplus
    add_prefix: false
    key: "320053065346824105435502000ABCDE"
    mode: T1C1
    rssi:
      name: "GAMA350 RSSI"
    total_energy_consumption_kwh:
      name: "GAMA350 ENERGY IN TOTAL kWh"
      icon: "mdi:power-plug"
    current_power_consumption_kw:
      name: "GAMA350 Power IN kW"
    total_energy_production_kwh:
      name: "GAMA350 ENERGY OUT TOTAL kWh"
    current_power_production_kw:
      name: "GAMA350 Power OUT kW"
    voltage_at_phase_1_v:
      name: "GAMA350 L1[V]"
    voltage_at_phase_2_v:
      name: "GAMA350 L2[V]"
    voltage_at_phase_3_v:
      name: "GAMA350 L3[V]"      

1 polubienie