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

Na github’ie pojawiła się wersja 4.0.0.

Support wszystkich* driverów z wmbusmeters 1.17.1. Zmiana formatu YAMLa. Możliwość zmiany parametru “log_all” (dawne “log_unknown”) z poziomu HA (poprzez mechanizm lambdy z ESPHome).

wmbus jest komponentem do ESPHome umożliwiającym odczyt radiowych mierników wM-Bus oraz bezpośrednią integrację z Home Assistant (miernik “widoczny” jako sensor). Do uruchomienia wymagany jest moduł CC1101 oraz ESP32 (od wersji 4.0 ESP8266 nie jest wspierany).

Coś nie działa? Podeślij VERBOSE logi (jako tekst a nie obrazek) - razem z numerem werji ESPHome.oram komponentu.
Jak załączyć odpowiedni poziom logowania? Patrz poniżej:

Nie odpisuję na wpisy bez tych informacji – nie dorobiłem się jeszcze szklanej kuli :wink: .

Coś działa i jesteś zadowolony? Możesz postawić “kawę”. :coffee: klik lub klik
Możesz też zakupić u mnie gotowy moduł CC1101.

Rozwiązywanie problemów polecam zacząć od przeczytania:

5 polubień

Chwilkę potestowałem i jest git, ale…:slight_smile:

Przydałby się opis driverów fraz z ich “fieldami”, bo nie bardzo wiadomo co wstawiać. Masz kilka przykładów, ale nie wszystko. Ja mam np. Izara, który nadaje pozostały czas baterii, okres nadawania, alarmy itp.

    type: izar
    sensors:
      - name: "RSSI Izar"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"
      - name: "Stan licznika wody Izar"
        field: "total"
        accuracy_decimals: 3
        unit_of_measurement: "m3"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"
      - name: "Zużycie w ostatnim miesiącu - Izar"
        field: "last_month_total"
        accuracy_decimals: 3
        unit_of_measurement: "m3"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"
      - name: "Okres nadawania - Izar"
        field: "transmit_period_s"
        accuracy_decimals: 0
#        unit_of_measurement: "s"
#        device_class: "signal_strength"
#        state_class: "measurement"
#        entity_category: "diagnostic"
      - name: "Pozostały żywot baterii - Izar"
        field: "remaining_battery_life_y"
        accuracy_decimals: 0
 #       unit_of_measurement: "dBm"
#        device_class: "signal_strength"
#        state_class: "measurement"
#        entity_category: "diagnostic"

Nie udało mi się odczytać nic poza stanem licznika i odczytem z poprzedniego miesiąca. Fieldy wziąłem z drivera wmbusmeters, ale nie wiem czy są ok. Wykomentowałem opcjonalne funkcje w dodatkowych sensorach, ale logi zgłaszają warning “Fields without unit not supported yet!”

EDIT:
dobra, doszperałem, że brakowało mi jednostek Year i Second. Czyli jednak unit_of_measurement nie jest taki do końca opcjonalny :smiley:
Tak czy siak opis driverów w wersji 4 by się przydał :slight_smile:

@_Szczepan po co jest funkcja all_drivers ?

Na stronie https://wmbusmeters.org/ dekodujesz swój telegram i na samym dole masz JSONa z field’ami.
Prościej się nie da.
Ostatni _ ( czyli najbardziej na prawo wysunięty :wink: ) oddziela nazwę pola od jednostki.

Jednostki są opcjonalne (na poziomie walidacji YAMLA) bo dziedziczone z klasy sensor ESPHome ale juz dla komponentu nie jest to opcjonalne. Mam w planach lepszy walidator ale wolalem juz wypchnac to co mam.

Szukam chętnego kto napisze dokumentacje :wink:

all_drivers przydaj się jak chcesz skorzystac z autodetekcji drivera. Wtedy wszystkie drivery zostaną załączone do obrazu. Bez tej opcji załączone będą tylko te jawnie zdefiniowane w YAML.

2 polubienia

To masz na myśli?

fieldy

No to jeszcze trzeba pamiętać, żeby z tych fieldów odrzucić jednostki, bo “remaining_battery_life_y”, to w yamlu trzeba zapisać:

field: "remaining_battery_life"
unit_of_measurement: "Year"

Dokładnie.
Coś za coś. Na chwilę obecną mam taki pomysł na komponent. Plusem jest ze możesz dla Twojego izara dać np litry jako jednostkę dla total i będziesz miał wszystko automatycznie przeliczone. Bardziej przydatne moze to byc dla kWh i MJ…

A zaciekawiła mnie ta autodetekcja drivera. Czy to daje jakieś korzyści? Sam zdekoduje wszystkie odczytane telegramy (no może oprócz tych które wymagają podania klucza)?

Sam wykryje poprawny driver i wszystko zdekoduje (ale nie stworzy sensorów) - jak dasz mqtt to wyśle do brokera zdekodowanego JSONa (takiego jak na stronie wmbusmeters).

Ok. Ciekawe. Na próbę włączyłem all_drivers: true i po instalacji esp32 nie wstał :slight_smile: Nieźle go zmuliło…

Ciekawe - ile zajetosci pamieci miałeś? Jakie ESP?

ESP32-S2 mini. Ponad 98% flash zajęte było

Nic a nic nie wstało? ESP zdechł? Żadnego śladu ESPHome - nawet po serialu?
Może mu stacka zabrakło, ale wtedy raczej i tak ESPHome by wstał a wywaliło by się na dekodowaniu telegramu. Testowałem na długich AMI i działa stabilnie.

Po instalacji nie połączył. Reset zasilania, wstał na chwilę i znowu zniknął i tak w koło Macieju. Na szczęście wstał na tyle długo, że zdążyłem zainstalować po resecie poprzednią wersję bez wszystkich driverów.
Po serialu nie sprawdzałem, bo bawiłem się na moim piwnicznym. Jutro wezmę świeżaka i protestuje

Wszystko moze mieć znaczenie. Jakie ESP, co odbierasz po radiu, jaka wersje ESPHome masz itp…

https://www.wemos.cc/en/latest/s2/s2_mini.html
320kB SRAM
2MB PSRAM
4MB flash
1-rdzeniowy proc Xtensa LX7

Dzień dobry. Mam problem ze zmianą kodu na nową wersję. Poprzednia wersja działa i jest wszystko ok, natomiast zmieniłem kod chyba zgodnie z dokumentacją i mam problem. Walidacja kodu jest ok , natomiast kompilacja już wyrzuca błędy. Proszę o wskazówki co źle zrobiłem.

Używam modułu nodemcuv2.

Mój kod wygląda następująco:

time:
  - platform: sntp
    id: time_sntp

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    refresh: 0d
    components: [ wmbus ]

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

  frequency: 868.950
  all_drivers: False
  sync_mode: True
  log_all: True

sensor:
  - platform: wmbus
    meter_id: 0x03344521
    type: apator162
    key: "00000000000000000000000000000000"
    sensors:
      - name: "Lazienka Zimna woda RSSI"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"
      - name: "Lazienka Zimna woda"
        field: "total"
        accuracy_decimals: 3
        unit_of_measurement: "m3"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"

Natomiast w logach podczas kompilacji mam takie błędy:

INFO ESPHome 2024.9.0
INFO Reading configuration /config/esphome/water-meter.yaml...
INFO Updating https://github.com/SzczepanLeon/esphome-components.git@main
INFO Detected timezone 'Europe/Warsaw'
INFO Generating C++ source...
INFO Compiling app...
Processing water-meter (board: nodemcuv2; framework: arduino; platform: platformio/espressif8266@4.2.1)
--------------------------------------------------------------------------------
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
Dependency Graph
|-- ESPAsyncTCP-esphome @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.2.2
|-- DNSServer @ 1.1.1
|-- ESP8266WiFi @ 1.0
|-- ESP8266mDNS @ 1.2
|-- noise-c @ 0.1.6
|-- SPI @ 1.0
|-- SmartRC-CC1101-Driver-Lib @ 2.5.7
Compiling .pioenvs/water-meter/src/esphome/components/wmbus/utils.cpp.o
Compiling .pioenvs/water-meter/src/esphome/components/wmbus/utils_my.cpp.o
Compiling .pioenvs/water-meter/src/esphome/components/wmbus/wmbus.cpp.o
src/esphome/components/wmbus/utils.cpp: In function 'double addMonths(double, int)':
src/esphome/components/wmbus/utils.cpp:615:15: error: aggregate 'tm time' has incomplete type and cannot be defined
  615 |     struct tm time;
      |               ^~~~
src/esphome/components/wmbus/utils.cpp:616:5: error: 'localtime_r' was not declared in this scope; did you mean 'locale_t'?
  616 |     localtime_r( &ut,&time);
      |     ^~~~~~~~~~~
      |     locale_t
src/esphome/components/wmbus/utils.cpp:618:20: error: 'mktime' was not declared in this scope; did you mean 'mktemp'?
  618 |     return (double)mktime(&time);
      |                    ^~~~~~
      |                    mktemp
src/esphome/components/wmbus/utils.cpp: In function 'void addMonths(tm*, int)':
src/esphome/components/wmbus/utils.cpp:623:37: error: invalid use of incomplete type 'struct tm'
  623 |     bool is_last_day_in_month = date->tm_mday == get_days_in_month(date->tm_year, date->tm_mon);
      |                                     ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:623:72: error: invalid use of incomplete type 'struct tm'
  623 |     bool is_last_day_in_month = date->tm_mday == get_days_in_month(date->tm_year, date->tm_mon);
      |                                                                        ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:623:87: error: invalid use of incomplete type 'struct tm'
  623 |     bool is_last_day_in_month = date->tm_mday == get_days_in_month(date->tm_year, date->tm_mon);
      |                                                                                       ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:625:20: error: invalid use of incomplete type 'struct tm'
  625 |     int year = date->tm_year + months / 12;
      |                    ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:626:21: error: invalid use of incomplete type 'struct tm'
  626 |     int month = date->tm_mon + months % 12;
      |                     ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:648:28: error: invalid use of incomplete type 'struct tm'
  648 |         day = std::min(date->tm_mday, get_days_in_month(year, month));
      |                            ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:651:9: error: invalid use of incomplete type 'struct tm'
  651 |     date->tm_year = year;
      |         ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:652:9: error: invalid use of incomplete type 'struct tm'
  652 |     date->tm_mon = month;
      |         ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp:653:9: error: invalid use of incomplete type 'struct tm'
  653 |     date->tm_mday = day;
      |         ^~
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/cwchar:44,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/postypes.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/bits/char_traits.h:40,
                 from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/10.3.0/string:40,
                 from src/esphome/core/log.h:5,
                 from src/esphome/components/wmbus/utils.h:6,
                 from src/esphome/components/wmbus/utils.cpp:5:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/wchar.h:82:8: note: forward declaration of 'struct tm'
   82 | struct tm;
      |        ^~
src/esphome/components/wmbus/utils.cpp: In function 'std::string strdate(tm*)':
src/esphome/components/wmbus/utils.cpp:673:5: error: 'strftime' was not declared in this scope
  673 |     strftime(buf, sizeof(buf), "%Y-%m-%d", date);
      |     ^~~~~~~~
src/esphome/components/wmbus/utils.cpp: In function 'std::string strdate(double)':
src/esphome/components/wmbus/utils.cpp:680:15: error: aggregate 'tm date' has incomplete type and cannot be defined
  680 |     struct tm date;
      |               ^~~~
src/esphome/components/wmbus/utils.cpp:682:5: error: 'localtime_r' was not declared in this scope; did you mean 'locale_t'?
  682 |     localtime_r( &t,&date);
      |     ^~~~~~~~~~~
      |     locale_t
src/esphome/components/wmbus/utils.cpp: In function 'std::string strdatetime(tm*)':
src/esphome/components/wmbus/utils.cpp:689:5: error: 'strftime' was not declared in this scope
  689 |     strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M", datetime);
      |     ^~~~~~~~
src/esphome/components/wmbus/utils.cpp: In function 'std::string strdatetime(double)':
src/esphome/components/wmbus/utils.cpp:696:15: error: aggregate 'tm datetime' has incomplete type and cannot be defined
  696 |     struct tm datetime;
      |               ^~~~~~~~
src/esphome/components/wmbus/utils.cpp:698:5: error: 'localtime_r' was not declared in this scope; did you mean 'locale_t'?
  698 |     localtime_r( &t,&datetime);
      |     ^~~~~~~~~~~
      |     locale_t
src/esphome/components/wmbus/utils.cpp: In function 'std::string strdatetimesec(tm*)':
src/esphome/components/wmbus/utils.cpp:705:5: error: 'strftime' was not declared in this scope
  705 |     strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", datetime);
      |     ^~~~~~~~
src/esphome/components/wmbus/utils.cpp: In function 'std::string strdatetimesec(double)':
src/esphome/components/wmbus/utils.cpp:711:15: error: aggregate 'tm datetime' has incomplete type and cannot be defined
  711 |     struct tm datetime;
      |               ^~~~~~~~
src/esphome/components/wmbus/utils.cpp:713:5: error: 'localtime_r' was not declared in this scope; did you mean 'locale_t'?
  713 |     localtime_r( &t,&datetime);
      |     ^~~~~~~~~~~
      |     locale_t
src/esphome/components/wmbus/utils.cpp: In function 'std::string strTimestampUTC(double)':
src/esphome/components/wmbus/utils.cpp:783:15: error: aggregate 'tm ts' has incomplete type and cannot be defined
  783 |     struct tm ts;
      |               ^~
src/esphome/components/wmbus/utils.cpp:784:5: error: 'gmtime_r' was not declared in this scope; did you mean 'time_t'?
  784 |     gmtime_r( &d,&ts);
      |     ^~~~~~~~
      |     time_t
src/esphome/components/wmbus/utils.cpp:785:5: error: 'strftime' was not declared in this scope
  785 |     strftime(datetime, sizeof(datetime), "%FT%TZ", &ts);
      |     ^~~~~~~~
*** [.pioenvs/water-meter/src/esphome/components/wmbus/utils.cpp.o] Error 1
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:11:
.piolibdeps/water-meter/ESPAsyncWebServer-esphome/src/ESPAsyncWebServer.h:280:68: warning: 'warning_x' attribute directive ignored [-Wattributes]
  280 |     const String& ASYNCWEBSERVER_REGEX_ATTRIBUTE pathArg(size_t i) const;
      |                                                                    ^~~~~
src/esphome/components/wmbus/wmbus.cpp:14:25: error: expected constructor, destructor, or type conversion before '(' token
   14 | SET_LOOP_TASK_STACK_SIZE(16 * 1024);
      |                         ^
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: In member function 'virtual void esphome::wmbus::WMBusComponent::dump_config()':
src/esphome/components/wmbus/wmbus.cpp:314:43: error: 'class EspClass' has no member named 'getEfuseMac'
  314 |     ESP_LOGCONFIG(TAG, "  MAC: %08X", ESP.getEfuseMac());
      |                                           ^~~~~~~~~~~
src/esphome/core/log.h:97:90: note: in definition of macro 'esph_log_config'
   97 |   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
      |                                                                                          ^~~~~~~~~~~
src/esphome/components/wmbus/wmbus.cpp:314:5: note: in expansion of macro 'ESP_LOGCONFIG'
  314 |     ESP_LOGCONFIG(TAG, "  MAC: %08X", ESP.getEfuseMac());
      |     ^~~~~~~~~~~~~
*** [.pioenvs/water-meter/src/esphome/components/wmbus/wmbus.cpp.o] Error 1
========================= [FAILED] Took 18.19 seconds =========================

@_Szczepan, potestowałem trochę tą autodetekcję, ale działa to trochę inaczej niż myślałem. Zrozumiałem, że po to jest opcja all drivers, aby po jej włączeniu (bez definiowania żadnych sensorów) dekodował wszystko co złapie i wysyłał jsony po MQTT. Do HA bez sensorów nic nie idzie.

U mnie to tak nie działa. Aby zaczął wysyłać cokolwiek po MQTT to muszę zdefiniować sensor z ID licznika. Przy samym sensorze bez ID też nie nadaje po MQTT. Poniższa konfiguracja wysyła tylko Izara:

wmbus:
  mosi_pin: GPIO32
  clk_pin:  GPIO33 
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin:   GPIO23

  frequency: 868.950
  all_drivers: True
  sync_mode: True
  log_all: True

  mqtt:
    broker: 192.168.10.50
    username: "XXXX"
    password: "XXXX"

sensor:
  - platform: wmbus
    type: apator162
  - platform: wmbus
    type: izar
    meter_id: 0x414FDFAC
  - platform: wmbus
    type: unismart

logs_test-all-drivers_logs.zip (6,9 KB)

Również u mnie ten sam błąd przy kompilacji. Wersja ESPHome 2024.9.0
Wróciłem do wersji 3.2.3 i kompilacja przebiega prawidłowo.

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

U mnie kompilacja przechodzi prawidłowo
niestety mam 2 wodomierze apator 162, gazomierz unismart, oraz licznik energii GAMA350 amiplus
jedyne telegramy jakie odbiera to z jednego wodomierza.

W wersji 3.2.3 nie ma problemu GAMA350 odbiera telegramy co 2 minuty

Moja konfiguracja dla wersji 4.0.0



# antena wewnętrzna 
esphome:
  name: "liczniki_esp"

esp32:
  board: nodemcu-32s
  framework:
    type: arduino

time:
  - platform: sntp
    id: time_sntp
external_components:
  - source: github://SzczepanLeon/esphome-components@4.0.0
    components: [ wmbus ]
###############################################################################################
mqtt:
  broker: 10.0.0.56
  port: 1883
  username: *******
  password: *******

  discovery_retain: true
###################################################################################

web_server:
  port: 80
  version: 3
  auth:
    username: !secret user_wodomierz
    password: !secret pass_wodomierz
# Logi systemowe dostępne opcje  'NONE', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'VERBOSE', 'VERY_VERBOSE'.
logger:
  level: DEBUG

# Enable Home Assistant API
api:
 reboot_timeout: 36000s  
 encryption:
  key: "/usV//VFUokEn296076onuYnhQ0iWEnPJnGBunYwp04="
ota:
  platform: esphome
  password: "e34d0c3980ac9492897724849c021acd"

  
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  manual_ip:
    static_ip: 10.0.0.249
    gateway: 10.0.0.1
    subnet: 255.255.255.0

  ap:
    ssid: "Esp-meter-1"
    password: "Aer570043"
captive_portal:
wmbus:
  frequency: 868.950
  mosi_pin: GPIO32
  clk_pin: GPIO33
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin: GPIO23
  led_blink_time: "1s"
  sync_mode: true 



text_sensor:
  - platform: wifi_info
    ip_address:
      name: 'Adress IP ESP'
      icon: mdi:wifi
    ssid:
      name: 'ESP w sieci'
      icon: mdi:wifi-strength-2

#########################################################################################################

sensor:

  - platform: wmbus
    meter_id: 0x00126858
    type: apator162
    key: "00000000000000000000000000000000"
    sensors:
      - name: "RSSI glowny"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"
      - name: "ESP_wodomierz_glowny"
        field: "total"
        accuracy_decimals: 3
        unit_of_measurement: "m3"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"


  - platform: wmbus
    meter_id: 0x00061085
    type: apator162
    key: "00000000000000000000000000000000"
    sensors:
      - name: "RSSI ogrodowy"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"
      - name: "ESP_wodomierz_ogrodowy"
        field: "total"
        accuracy_decimals: 3
        unit_of_measurement: "m3"
        device_class: "water"
        state_class: "total_increasing"
        icon: "mdi:water"

  - platform: wmbus
    meter_id: 0x00061790
    type: unismart
    key: "00000000000000000000000000000000"
    sensors:
      - name: "Licznik gazu"
        field: "total_gas_m3"
        icon: "mdi:gas-burner"
        device_class: "gas"
        accuracy_decimals: 3
      - name: "RSSI Gazomierz"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"

  - platform: wmbus
    meter_id: 0x30415995
    type: amiplus
    key: "32002304159950000000000000000000"
    sensors:
      - name: "Gama350 RSSI"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"        
      - name: "Gama350 180"
        field: "total_energy_consumption_kwh"
        accuracy_decimals: 3
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        icon: "mdi:transmission-tower-import"        
      - name: "Gama350 280"
        field: "total_energy_production_kwh"
        accuracy_decimals: 3
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        icon: "mdi:transmission-tower-export"        
      - name: "Gama350 Moc importu"
        field: "current_power_consumption_kw"
        accuracy_decimals: 3
        unit_of_measurement: "kW"
        device_class: "power"
        state_class: "measurement"
        icon: "mdi:lightning-bolt"
      - name: "Gama350 Moc exportu"
        field: "current_power_production_kw"
        accuracy_decimals: 3
        unit_of_measurement: "kW"
        device_class: "power"
        state_class: "measurement"
        icon: "mdi:lightning-bolt"


      - name: "Gama350 napiecie na fazie 1"
        field: "voltage_at_phase_1_v"      
        accuracy_decimals: 0
        unit_of_measurement: "v"
        device_class: "voltage"
        state_class: "measurement"
        icon: "mdi:sine-wave"

      - name: "Gama350 napiecie na fazie 2"
        field: "voltage_at_phase_2_v"      
        accuracy_decimals: 0
        unit_of_measurement: "v"
        device_class: "voltage"
        state_class: "measurement"
        icon: "mdi:sine-wave"



      - name: "Gama350 napiecie na fazie 3"
        field: "voltage_at_phase_3_v"      
        accuracy_decimals: 0
        unit_of_measurement: "v"
        device_class: "voltage"
        state_class: "measurement"
        icon: "mdi:sine-wave"


button:
  - platform: restart
    name: "Restart ESP"

Cześć!
Debiut na tym forum, choć śledzę od dłuższego czasu.
Mam taki sam problem z kompilacją - takie same błędy.

Sprawdziłem, że pojawiają się one dla mojego NodeMCU v3

esp8266:
  board: nodemcuv2

Gdy kompiluję dla ESP32, działa bez zarzutu

esp32:
  board: esp32dev
  framework:
    type: arduino

Dariusz posuwaj jednostki z fieldów AMIplus i unismart czyli _kwh, _v, _m3

U mnie kompilacja bez problemów na modemcu-32s i ESP32-s2 mini