Ja obstawiam, że problem może być z tym zapisem type: auto
Proponuję zmienić na qualcosonic
oraz idąc za opisem zmienić all_drivers: true na false jeśli już wiesz jaki driver jest potrzebny.
Ja obstawiam, że problem może być z tym zapisem type: auto
Proponuję zmienić na qualcosonic
oraz idąc za opisem zmienić all_drivers: true na false jeśli już wiesz jaki driver jest potrzebny.
Błędy leżą wyłącznie po stronie konfiguracji YAML i wyboru drivera – nie dotyczą sprzętu ani ramki (która jest nieszyfrowana i poprawnie dekoduje się w wmbusmeters).
To co udało mi się znaleźć:
Nieprawidłowa struktura YAML sekcji sensor:
musi być listą (każdy sensor zaczyna się od myślnika -). Brak myślników powoduje że ESPHome nie tworzy obiektów sensorów, mimo że komponent wmbus ładuje się poprawnie.
Nieprawidłowa wartość type: auto parametr type przyjmuje nazwę konkretnego drivera lub jest pomijany (wtedy auto-detect). Wartość auto nie jest rozpoznawana – komponent nie przypisuje żadnego drivera do ramki.
Driver dla licznika Qualcosonic. Licznik ciepła Qualcosonic (Axioma Qualcosonic E3) jest obsługiwany przez dedykowany driver qualcosonic (z wmbusmeters 1.17.1). Auto-detect działa ale jawne wskazanie drivera jest pewniejsze i zalecane przy heat/cooling meters
Niestety ESPHome mogę mieć w wersji: 2024.12.4 albo 2026.2.6. (takie ma z backupow). Próbowałem wgrać 2025.9.3 wg jakiś poradników ale niestety nie działa
Builder ESPHome możesz mieć w niemal dowolnej wersji (mniej więcej od czasów, gdy zmiany w architekturze zrobiły się na tyle znaczące, że nie każdy projekt jest w stanie podążać za bieżącymi wydaniami)
tylko nie uruchamiaj więcej niż jednej wersji na raz (zatrzymaj aktualny, gdy uruchamiasz jakiś archiwalny)
Dzięki, zainstalowałem ESPHome 2025.6 wgrałem kod:
esphome:
name: dommm
friendly_name: Dommm
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
level: DEBUG
# Enable Home Assistant API
api:
encryption:
key: "bU88vYkEc361gDZHZ3FhWSWEUYjgDSS2fRMNijGDSS8="
ota:
- platform: esphome
password: "ba5b52cc421e9a38d6b069874d9be896"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Dommm Fallback Hotspot"
password: ""
captive_portal:
time:
- platform: sntp
id: time_sntp
external_components:
- source: github://SzczepanLeon/esphome-components@version_4
refresh: 0d
components: [ wmbus ]
wmbus:
frequency: 868.950 #default
sync_mode: true #default
log_all: false
#log_unknown: true #default
all_drivers: false
mosi_pin: GPIO32
clk_pin: GPIO33
miso_pin: GPIO19
gdo2_pin: GPIO21
gdo0_pin: GPIO22
cs_pin: GPIO23
#mqtt:
# broker: 10.0.0.88
# username: mqttUser
# password: mqttPass
# clients:
# - name: "wmbusmeters"
# ip_address: "10.0.0.22"
# port: 7227
sensor:
#add driver to compile list (will be available for autodetect), don't create sensor
- platform: wmbus
type: itron
########### LOKAL ##############################
# lokal zimna
- platform: wmbus
meter_id: 0x00606059
type: apator162
key: "00000000000000000000000000000000"
sensors:
- name: "Lokal zimna woda"
field: "total"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: "water"
state_class: "total_increasing"
icon: "mdi:water"
# lokal ciepla
- platform: wmbus
meter_id: 0x00746039
type: apator162
key: "00000000000000000000000000000000"
sensors:
- name: "Lokal ciepla woda"
field: "total"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: "water"
state_class: "total_increasing"
icon: "mdi:water"
########### PARTER ##############################
# parter zimna
- platform: wmbus
meter_id: 0x00791869
type: apator162
key: "00000000000000000000000000000000"
sensors:
- name: "Parter zimna woda"
field: "total"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: "water"
state_class: "total_increasing"
icon: "mdi:water"
# parter ciepla
- platform: wmbus
meter_id: 0x00638821
type: apator162
key: "00000000000000000000000000000000"
sensors:
- name: "Parter ciepla woda"
field: "total"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: "water"
state_class: "total_increasing"
icon: "mdi:water"
########### PODDASZE ##############################
# PODDASZE zimna
- platform: wmbus
meter_id: 0x00638780
type: apator162
key: "00000000000000000000000000000000"
sensors:
- name: "Poddasze zimna woda"
field: "total"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: "water"
state_class: "total_increasing"
icon: "mdi:water"
# PODDASZE ciepla
- platform: wmbus
meter_id: 0x00611344
type: apator162
key: "00000000000000000000000000000000"
sensors:
- name: "Poddasze ciepla woda"
field: "total"
accuracy_decimals: 3
unit_of_measurement: "m³"
device_class: "water"
state_class: "total_increasing"
icon: "mdi:water"
i log:
INFO ESPHome 2025.6.3
INFO Reading configuration /config/esphome/dommm.yaml...
INFO Updating https://github.com/SzczepanLeon/esphome-components.git@version_4
INFO Detected timezone 'Europe/Warsaw'
INFO Generating C++ source...
INFO Compiling app...
Processing dommm (board: esp32dev; framework: arduino; platform: platformio/espressif32@5.4.0)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
- toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 2.1.4
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.3.0
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.6
|-- SPI @ 2.0.0
|-- SmartRC-CC1101-Driver-Lib @ 2.5.7
Compiling .pioenvs/dommm/src/esphome/components/wmbus/wmbus.cpp.o
Compiling .pioenvs/dommm/src/esphome/core/entity_base.cpp.o
Compiling .pioenvs/dommm/src/esphome/core/helpers.cpp.o
In file included from src/esphome/components/web_server_base/web_server_base.h:11,
from src/esphome/components/captive_portal/captive_portal.h:11,
from src/esphome/components/wmbus/wmbus.cpp:13:
.piolibdeps/dommm/ESPAsyncWebServer-esphome/src/ESPAsyncWebServer.h:280:68: warning: 'warning_x' attribute directive ignored [-Wattributes]
const String& ASYNCWEBSERVER_REGEX_ATTRIBUTE pathArg(size_t i) const;
^~~~~
Compiling .pioenvs/dommm/src/esphome/core/log.cpp.o
src/esphome/components/wmbus/wmbus.cpp:18:48: note: #pragma message: Loop task stack increased.
#pragma message ( "Loop task stack increased." )
^
src/esphome/components/wmbus/wmbus.cpp: In member function 'virtual void esphome::wmbus::WMBusComponent::loop()':
src/esphome/components/wmbus/wmbus.cpp:145:42: error: 'class esphome::sensor::Sensor' has no member named 'get_unit_of_measurement_ref'; did you mean 'get_unit_of_measurement'?
else if (field.second->get_unit_of_measurement_ref().empty()) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~
get_unit_of_measurement
src/esphome/components/wmbus/wmbus.cpp:149:60: error: 'class esphome::sensor::Sensor' has no member named 'get_unit_of_measurement_ref'; did you mean 'get_unit_of_measurement'?
Unit field_unit = toUnit(field.second->get_unit_of_measurement_ref());
^~~~~~~~~~~~~~~~~~~~~~~~~~~
get_unit_of_measurement
Compiling .pioenvs/dommm/src/esphome/core/ring_buffer.cpp.o
src/esphome/components/wmbus/wmbus.cpp: In member function 'void esphome::wmbus::WMBusComponent::send_to_clients(esphome::wmbus::WMbusFrame&)':
src/esphome/components/wmbus/wmbus.cpp:314:40: error: 'IP_ADDRESS_BUFFER_SIZE' is not a member of 'esphome::network'
char ip_buf[network::IP_ADDRESS_BUFFER_SIZE];
^~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:316:59: error: 'struct esphome::network::IPAddress' has no member named 'str_to'; did you mean 'str'?
if (this->tcp_client_.connect(client.ip.str_to(ip_buf), client.port)) {
^~~~~~
str
src/esphome/components/wmbus/wmbus.cpp:316:66: error: 'ip_buf' was not declared in this scope
if (this->tcp_client_.connect(client.ip.str_to(ip_buf), client.port)) {
^~~~~~
src/esphome/components/wmbus/wmbus.cpp:316:66: note: suggested alternative: 'pbuf'
if (this->tcp_client_.connect(client.ip.str_to(ip_buf), client.port)) {
^~~~~~
pbuf
In file included from src/esphome/components/wmbus/wmbus.h:3,
from src/esphome/components/wmbus/wmbus.cpp:1:
src/esphome/components/wmbus/wmbus.cpp:321:79: error: 'struct esphome::network::IPAddress' has no member named 'str_to'; did you mean 'str'?
ESP_LOGE(TAG, "Can't connect via TCP to %s:%d", client.ip.str_to(ip_buf), client.port);
^~~~~~
src/esphome/core/log.h:130:100: note: in definition of macro 'esph_log_e'
::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_ERROR, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
^~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:321:21: note: in expansion of macro 'ESP_LOGE'
ESP_LOGE(TAG, "Can't connect via TCP to %s:%d", client.ip.str_to(ip_buf), client.port);
^~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:327:40: error: 'IP_ADDRESS_BUFFER_SIZE' is not a member of 'esphome::network'
char ip_buf[network::IP_ADDRESS_BUFFER_SIZE];
^~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:329:59: error: 'struct esphome::network::IPAddress' has no member named 'str_to'; did you mean 'str'?
this->udp_client_.beginPacket(client.ip.str_to(ip_buf), client.port);
^~~~~~
str
src/esphome/components/wmbus/wmbus.cpp:329:66: error: 'ip_buf' was not declared in this scope
this->udp_client_.beginPacket(client.ip.str_to(ip_buf), client.port);
^~~~~~
src/esphome/components/wmbus/wmbus.cpp:329:66: note: suggested alternative: 'pbuf'
this->udp_client_.beginPacket(client.ip.str_to(ip_buf), client.port);
^~~~~~
pbuf
src/esphome/components/wmbus/wmbus.cpp:347:40: error: 'IP_ADDRESS_BUFFER_SIZE' is not a member of 'esphome::network'
char ip_buf[network::IP_ADDRESS_BUFFER_SIZE];
^~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:349:59: error: 'struct esphome::network::IPAddress' has no member named 'str_to'; did you mean 'str'?
if (this->tcp_client_.connect(client.ip.str_to(ip_buf), client.port)) {
^~~~~~
str
src/esphome/components/wmbus/wmbus.cpp:349:66: error: 'ip_buf' was not declared in this scope
if (this->tcp_client_.connect(client.ip.str_to(ip_buf), client.port)) {
^~~~~~
src/esphome/components/wmbus/wmbus.cpp:349:66: note: suggested alternative: 'pbuf'
if (this->tcp_client_.connect(client.ip.str_to(ip_buf), client.port)) {
^~~~~~
pbuf
In file included from src/esphome/components/wmbus/wmbus.h:3,
from src/esphome/components/wmbus/wmbus.cpp:1:
src/esphome/components/wmbus/wmbus.cpp:361:79: error: 'struct esphome::network::IPAddress' has no member named 'str_to'; did you mean 'str'?
ESP_LOGE(TAG, "Can't connect via TCP to %s:%d", client.ip.str_to(ip_buf), client.port);
^~~~~~
src/esphome/core/log.h:130:100: note: in definition of macro 'esph_log_e'
::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_ERROR, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
^~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:361:21: note: in expansion of macro 'ESP_LOGE'
ESP_LOGE(TAG, "Can't connect via TCP to %s:%d", client.ip.str_to(ip_buf), client.port);
^~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:367:40: error: 'IP_ADDRESS_BUFFER_SIZE' is not a member of 'esphome::network'
char ip_buf[network::IP_ADDRESS_BUFFER_SIZE];
^~~~~~~~~~~~~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:369:59: error: 'struct esphome::network::IPAddress' has no member named 'str_to'; did you mean 'str'?
this->udp_client_.beginPacket(client.ip.str_to(ip_buf), client.port);
^~~~~~
str
src/esphome/components/wmbus/wmbus.cpp:369:66: error: 'ip_buf' was not declared in this scope
this->udp_client_.beginPacket(client.ip.str_to(ip_buf), client.port);
^~~~~~
src/esphome/components/wmbus/wmbus.cpp:369:66: note: suggested alternative: 'pbuf'
this->udp_client_.beginPacket(client.ip.str_to(ip_buf), client.port);
^~~~~~
pbuf
src/esphome/components/wmbus/wmbus.cpp: In member function 'virtual void esphome::wmbus::WMBusComponent::dump_config()':
src/esphome/components/wmbus/wmbus.cpp:421:30: error: 'IP_ADDRESS_BUFFER_SIZE' is not a member of 'esphome::network'
char ip_buf[network::IP_ADDRESS_BUFFER_SIZE];
^~~~~~~~~~~~~~~~~~~~~~
In file included from src/esphome/components/wmbus/wmbus.h:3,
from src/esphome/components/wmbus/wmbus.cpp:1:
src/esphome/components/wmbus/wmbus.cpp:424:33: error: 'struct esphome::network::IPAddress' has no member named 'str_to'; did you mean 'str'?
client.ip.str_to(ip_buf),
^~~~~~
src/esphome/core/log.h:101:101: note: in definition of macro 'esph_log_config'
::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
^~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:422:9: note: in expansion of macro 'ESP_LOGCONFIG'
ESP_LOGCONFIG(TAG, " %s: %s:%d %s [%s]",
^~~~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:424:40: error: 'ip_buf' was not declared in this scope
client.ip.str_to(ip_buf),
^~~~~~
src/esphome/core/log.h:101:101: note: in definition of macro 'esph_log_config'
::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
^~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:422:9: note: in expansion of macro 'ESP_LOGCONFIG'
ESP_LOGCONFIG(TAG, " %s: %s:%d %s [%s]",
^~~~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:424:40: note: suggested alternative: 'pbuf'
client.ip.str_to(ip_buf),
^~~~~~
src/esphome/core/log.h:101:101: note: in definition of macro 'esph_log_config'
::esphome::esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
^~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:422:9: note: in expansion of macro 'ESP_LOGCONFIG'
ESP_LOGCONFIG(TAG, " %s: %s:%d %s [%s]",
^~~~~~~~~~~~~
*** [.pioenvs/dommm/src/esphome/components/wmbus/wmbus.cpp.o] Error 1
========================== [FAILED] Took 4.00 seconds ==========================
TO co wkleiłeś wyżej nie jest w formacie YAML.
Jak prawidłowo zamieszczać YAML, inny kod lub logi w postach na forum
juz poprawione, zły znacznik dodałem
Dzięki @angler i @Allon za sugestię.
Nie zwróciłem uwagi, że źle się sformatowało przy wklejaniu (najpierw wkleiłem,a potem wybrałem kodowanie).
Zmieniłem all_drivers: false oraz type: qualcosoni. Na efekty poczekam do jutra bo po południ te liczniki nadaja bardzo rzadko.
esphome:
name: esp32-wroom
friendly_name: ESP32_WROOM
esp32:
board: esp32dev
framework:
type: arduino
#flash_size: 4MB
partitions: custom_partitions.csv
external_components:
- source: github://SzczepanLeon/esphome-components@version_4
refresh: 0d
components: [ wmbus ]
# Enable logging
logger:
id: component_logger
level: DEBUG
# Enable Home Assistant API
api:
encryption:
key: "X1q5zqdlERc301sdsda2edz891mMl62NxCZ48s="
ota:
- platform: esphome
password: "5f66571df7bdsd656808cd7e9b15fb88"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp32-Wroom Fallback Hotspot"
password: "GdjhgrCCAS9N"
captive_portal:
mqtt:
broker: 192.168.0.111
port: 1883
username: esp
password: !secret mqtt_password
time:
- platform: sntp
id: time_sntp
wmbus:
mosi_pin: GPIO23
miso_pin: GPIO19
clk_pin: GPIO18
cs_pin: GPIO15
gdo0_pin: GPIO21
gdo2_pin: GPIO22
log_all: true
sync_mode: False
all_drivers: false
sensor:
- platform: wmbus
meter_id: 0x04018481
type: qualcosonic
key: ""
sensors:
- name: "total_heat_energy_kwh"
field: "total_heat_energy_kwh"
unit_of_measurement: "MJ"
- name: "total_cooling_energy_kwh"
field: "total_cooling_energy_kwh"
unit_of_measurement: "kwh"
- name: "total_m3"
field: "total_m3"
unit_of_measurement: "m3"
Niestety po dodaniu powyższego kodu jest cisza w eterze.
Jak zrobiłem testowo coś takiego jak poniżej to widać tylko Received T1 A frame
sensor:
- platform: wmbus
type: qualcosonic
Próbowałem zrobić też logger na poziomie verbose, ale wtedy moje urządzenie umiera. Ciągle się restartuje.
W chwili obecnej wygląda to tak, że jeśli zrobię sensor bez ID, czyli w ten sposób:
sensor:
- platform: wmbus
#type: qualcosonic
#meter_id: 0x04018481
sensors:
- name: "total_heat_energy_kwh"
field: "total_heat_energy"
unit_of_measurement: "kwh"
- name: "total_m3"
field: "total_m3"
unit_of_measurement: "m3"
To widzę ramki latające dla mojego licznika rozpoznane jako qualcosonic z prawidłowym meter_id:
[12:41:07.379][I][wmbus:100]: qualcosonic [0x04018481] RSSI: -61dBm T: 59440907818401040C0D7A62000000046D1E0D4433048E3B1A700000048E3C000000000413F04F06000C788184010484086D3B175C3284088E3BC86F000084088E3C00000000446D3B173F3C448E3B7A5B0000448E3C00000000 (90) T1 A`
`[12:47:16.379][I][wmbus:100]: qualcosonic [0x04018481] RSSI: -61dBm T: 59440907818401040C0D7A68000000046D240D4433048E3B1A700000048E3C000000000413F14F06000C788184010484086D3B175C3284088E3BC86F000084088E3C00000000446D3B173F3C448E3B7A5B0000448E3C00000000 (90) T1 A`
`[12:50:25.773][I][wmbus:100]: qualcosonic [0x04018481] RSSI: -60dBm T: 7D440907818401040C0D7A6B000000046D280D4433048E3B1A700000048E3C000000000413F24F06000C788184010484086D3B175C32820859E11682085D830E84082450EBEB0484088E3BC86F000084088E3C00000000840813B94706008408BE5800000000027FE355446D3B173F3C448E3B7A5B0000448E3C00000000 (126) T1 A`
`[14:05:25.954][I][wmbus:100]: qualcosonic [0x04018481] RSSI: -61dBm T: 69440907818401040C0D7AB4000000046D370E4433048E3B1D700000048E3C000000000413215006000C788184010484086D3B175C3284088E3BC86F000084088E3C00000000446D3B173F3C4424CC229E04448E3B7A5B0000448E3C000000004413915E0500027F3876 (106) T1 A
Wygląda to na problem w dekodowaniu. Niestety nie mam pojecia co można z tym zrobić. Czy czasami nie jest tak, że biblioteka qualcosonic nie obsługuje licznika E4 tylko E3 ?
Chyba wiem w czym jest problem. Driver qualcosonic nie obsługuje ramek T1:
[08:06:58.621][I][wmbus:094]: Using selected driver qualcosonic (detected driver was qualcosonic)
[08:06:58.632][I][wmbus:100]: qualcosonic [0x04018481] RSSI: -53dBm T: 59440907818401040C0D7A65000000046D38084533048E3B43700000048E3C000000000413215406000C788184010484086D3B175C3284088E3BC86F000084088E3C00000000446D3B173F3C448E3B7A5B0000448E3C00000000 (90) T1 A
[08:06:58.636][W][wmbus:124]: Link mode T1 not supported in driver qualcosonic
Czy jest na to jakiś sposób ?
Masz dwa sposoby :
Tylko jak widzę to nowsza wersja webmastera wspiera to. Jest jakaś możliwość wymuszenia dekodowania za pomocą nowszej wersji ?