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

Nie wkleiłeś YAMLa a bez tego trudno wyczuć co tam masz.

Wyedytowałem post. Yaml jest dostępny

Log nie pasuje do tego YAMLa (nie ma definicji sensorów a z loga wynika, że są, więc YAML jest chyba mocno ucięty)

jakkolwiek powinieneś zrobić co najmniej taką zmianę
https://forum.arturhome.pl/t/komponent-wm-bus-do-esphome-szczepanleon-wersja-3-x-watek-ogolny/11577/308

Cześć, faktycznie nie taki Yaml był.

Cześć, śledzę ten wątek od początku i testuję wasze propozycje rozwiązań i niestety nie działa mi nic. Mój Yaml wygląda następująco


esphome:
  name: licznik-wody-apator
  friendly_name: Licznik wody APATOR

esp8266:
  board: nodemcuv2

external_components:
  # - source: github://SzczepanLeon/esphome-components@main
  # - source: github://SzczepanLeon/esphome-components@1.5.1
  # - source: github://SzczepanLeon/esphome-components@main
  - source: github://SzczepanLeon/esphome-components@3.2.3
  # - source: github://SzczepanLeon/esphome-components@version_3
    components: [ wmbus ]
    refresh: 0d
# Enable logging
logger:
  level: DEBUG

time:
  - platform: sntp
    id: time_sntp
# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.0.17
    gateway: 192.168.0.1
    subnet: 255.255.255.0
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Licznik-Wody-Apator"
    password: "45fxfr7725vx"

captive_portal:
web_server:
  port: 80

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

sensor:
  - platform: wmbus
    name: "Stan licznika wody Apator"
    meter_id: 0x00085603
    type: apator162
    key: "00000000000000000000000000000000"
    accuracy_decimals: 3
    filters:
      - offset: 1253.692
 #129.063 +/- 1 na liczniku o 1 więcej     

  - platform: wmbus
    name: "Stan licznika wody Hydrofor"
    meter_id: 0x00989884
    type: apator162
    key: "00000000000000000000000000000000"
    accuracy_decimals: 3
    filters:
      - offset: -174.142
 #129.063 +/- 1 na liczniku o 1 więcej  

I podczas parsowania wyrzuca mi błąd:


INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/licznik-wody-apator.yaml...
INFO Updating https://github.com/SzczepanLeon/esphome-components.git@3.2.3
ERROR Unexpected exception while reading configuration:
Traceback (most recent call last):
  File "/usr/local/bin/esphome", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/esphome/esphome/__main__.py", line 1049, in main
    return run_esphome(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1027, in run_esphome
    config = read_config(dict(args.substitution) if args.substitution else {})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 1095, in read_config
    res = load_config(command_line_substitutions)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 949, in load_config
    return _load_config(command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 939, in _load_config
    return validate_config(config, command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 835, in validate_config
    target_platform = core_config.preload_core_config(config, result)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 222, in preload_core_config
    if _is_target_platform(domain):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 184, in _is_target_platform
    if get_component(name, True).is_target_platform:
       ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 205, in get_component
    return _lookup_module(domain, exception)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 181, in _lookup_module
    module = importlib.import_module(f"esphome.components.{domain}")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/data/external_components/0e75e1a4/components/wmbus/__init__.py", line 62, in <module>
    cv.Required(CONF_IP_ADDRESS): cv.ipv4,
                                  ^^^^^^^
AttributeError: module 'esphome.config_validation' has no attribute 'ipv4'

Dla source: github://SzczepanLeon/esphome-components@version_3 błąd jest inny

INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/licznik-wody-apator.yaml...
INFO Updating https://github.com/SzczepanLeon/esphome-components.git@version_3
INFO Detected timezone 'Europe/Warsaw'
Failed config

sensor.wmbus: [source /config/esphome/licznik-wody-apator.yaml:57]
  platform: wmbus
  
  [name] is an invalid option for [sensor.wmbus]. Please check the indentation.
  name: Stan licznika wody Apator
  meter_id: 546307
  type: apator162
  key: 00000000000000000000000000000000
  
  [accuracy_decimals] is an invalid option for [sensor.wmbus]. Please check the indentation.
  accuracy_decimals: 3
  
  [filters] is an invalid option for [sensor.wmbus]. Please check the indentation.
  filters: 
    - offset: 1253.692

Macie jakieś pomysły? Bo wszystkie powyższe metody nie działają

Bo masz złą składnię. Dla wersji 3 poczytaj tutaj GitHub - SzczepanLeon/esphome-components at version_3

1 polubienie

Poszło, dziękuję.

Dla wersji 3 jest ok natomiast jak wpiszę version_4 lub main to już nie działa i pisze o innej składni.

Którą wersję należy używać by było najpoprawniej w dłuższej perspektywie czasu?

Zależy jaki masz sprzęt - jeśli ESP32, ESP32-S2 lub ESP32-S3 to v4, czyli obecnie z brancha main, który nie wymaga specyfikowania, optymalnie mieć płytkę z PSRAM (choćby 2MB)

Dla pozostałych modeli MCU z linii ESP32-xx czyli ESP32-C2 ESP32-C3 ESP32-C6 pozostaje eksperyment (ale warto zacząć od v4).

Jeśli ESP8266 lub ESP8285 to jedynie stare wersje (co najwyżej v3.x).


W drugiej kwestii

Przyszłościowo jedynie v4.x, autorem komponentu jest @_Szczepan i nieraz już wspominał, że starsze wersje nie będą już rozwijane (doczekały się niedawno jedynie łatek umożliwiających dalsze korzystanie, ale upgrade sprzętu do ESP32-xx jest wskazane, wiele nowych konstrukcji płytek prototypowych zapewnia elektrycznie i mechanicznie wsteczną kompatybilność z wieloma konstrukcjami bazującymi na ESP8266, więc można przelutować na ich nowsze odpowiedniki).

Super, dzięki za pomoc.

Pozostaje mi zatem wersja 3 póki co a jak zacznie się problem to zakupić nową płytkę i kombinować.

Którą chcesz. W wersji 5 cały YAML bedzie znowu przeorany na każdą stronę. Będą też niespodzianki.

Ja bym napisał “zależy co potrzebujesz”. Jak v3 spełnia Twoje wymagania to tam zostań. Jedyne co może się rozwalić to jakieś dziwne zmiany w ESPHome.

1 polubienie

Jedynie do czego używam to odczyt stanu licznika wody z nakładki apator’a

Zmieniłem składnię i zaktualizowałem płytkę, jednakże zmieniły mi się nazwy encji na
0x85603 Stan licznika wody Apator
oraz
0x989884 Stan licznika wody Hydrofor

Yaml wygląda następująco

sensor:
  - platform: wmbus
    meter_id: 0x00085603
    type: apator162
    key: "00000000000000000000000000000000"
    total_water_m3:
      name: "Stan licznika wody Apator"
      accuracy_decimals: 3
      filters:
        - offset: 1253.692
 #129.063 +/- 1 na liczniku o 1 więcej     

  - platform: wmbus 
    meter_id: 0x00989884
    type: apator162
    key: "00000000000000000000000000000000"
    total_water_m3:
      name: "Stan licznika wody Hydrofor"
      accuracy_decimals: 3
      filters:
        - offset: -174.142
 #129.063 +/- 1 na liczniku o 1 więcej  

Jak zatem uzyskać nazwy takie jakie są w jaml czyli bez metter_id?

Wstaw całego YAMLa a nie kawałek

To w ogóle jest wersja 3.x?

Cały YAML, tak to jest wersja 3

esphome:
  name: licznik-wody-apator
  friendly_name: Licznik wody APATOR

esp8266:
  board: nodemcuv2

external_components:
  # - source: github://SzczepanLeon/esphome-components@main
  # - source: github://SzczepanLeon/esphome-components@1.5.1
  # - source: github://SzczepanLeon/esphome-components@main
  # - source: github://SzczepanLeon/esphome-components@3.2.3
  - source: github://SzczepanLeon/esphome-components@version_3
    components: [ wmbus ]
  #  refresh: 0d
# Enable logging
logger:
  level: DEBUG

time:
  - platform: sntp
    id: time_sntp
# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.0.17
    gateway: 192.168.0.1
    subnet: 255.255.255.0
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Licznik-Wody-Apator"
    password: "45fxfr7725vx"

captive_portal:
web_server:
  port: 80

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

sensor:
  - platform: wmbus
    meter_id: 0x00085603
    type: apator162
    key: "00000000000000000000000000000000"
    total_water_m3:
      name: "Stan licznika wody Apator"
      accuracy_decimals: 3
      filters:
        - offset: 1253.692
 #129.063 +/- 1 na liczniku o 1 więcej     

  - platform: wmbus 
    meter_id: 0x00989884
    type: apator162
    key: "00000000000000000000000000000000"
    total_water_m3:
      name: "Stan licznika wody Hydrofor"
      accuracy_decimals: 3
      filters:
        - offset: -174.142
 #129.063 +/- 1 na liczniku o 1 więcej  

Ja mam taką samą sytuację :Yaml

esphome:
  name: esp8266-woda
  friendly_name: Esp8266_Woda

esp8266:
  board: nodemcuv2

# Enable logging
logger:
  level: VERY_VERBOSE
# Enable Home Assistant API
api:
  encryption:
    key: "8H+XvVCMwETzsaPZ85A50chUsW88iZIf6ZF6xdx306c="

ota:
  - platform: esphome
    password: "c7bbd05951f656d82e7319e2a95f0176"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp8266-Woda Fallback Hotspot"
    password: "9nVfKR1SxQg2"

captive_portal:
time:
  - platform: sntp
    id: time_sntp

external_components:
  - source: github://SzczepanLeon/esphome-components@version_3
    components: [ wmbus ]
wmbus:
  mosi_pin: GPIO13 #Pomarańczowy  D7
  miso_pin: GPIO12 #Niebieski  D6 
  clk_pin: GPIO14 #Zielony  D5 
  cs_pin: GPIO2 #Szary  D4
  gdo0_pin: GPIO5 #ŻóŁty  D1  
  gdo2_pin: GPIO4 #Fioletowy  D2 
  led_pin: GPIO0
  led_blink_time: "1s"
  
  clients:
    - name: "wmbusmeters"
      ip_address: "192.168.1.35"
      port: 9011
      format: RTLWMBUS
      transport: UDP

sensor:
  - platform: wmbus
    meter_id: 0x76098277
    type: apator162
    key: "00000000000000000000000000000000"
    lqi:
      name: "My lqi"
    rssi:
      name: "My RSSI"
    total_water_m3:
      name: "My cold water"
text_sensor:
  - platform: wmbus
    name: "Text debug for Apator 16-2"

i log:

INFO ESPHome 2025.3.0
INFO Reading configuration /config/esphome/esp8266-woda.yaml...
INFO Detected timezone 'Europe/Warsaw'
INFO Starting log output from 192.168.1.29 using esphome API
INFO Successfully connected to esp8266-woda @ 192.168.1.29 in 0.005s
INFO Successful handshake with esp8266-woda @ 192.168.1.29 in 2.652s
[15:31:03][I][app:100]: ESPHome version 2025.3.0 compiled on Mar 20 2025, 15:25:39
[15:31:03][C][wifi:600]: WiFi:
[15:31:03][C][wifi:428]:   Local MAC: 98:F4:AB:B3:CB:7A
[15:31:03][C][wifi:433]:   SSID: 'Garden'[redacted]
[15:31:03][C][wifi:436]:   IP Address: 192.168.1.29
[15:31:03][C][wifi:439]:   BSSID: 64:70:02:54:C9:E6[redacted]
[15:31:03][C][wifi:441]:   Hostname: 'esp8266-woda'
[15:31:03][C][wifi:443]:   Signal strength: -79 dB ▂▄▆█
[15:31:03][V][wifi:445]:   Priority: -3.0
[15:31:03][C][wifi:447]:   Channel: 6
[15:31:03][C][wifi:448]:   Subnet: 255.255.255.0
[15:31:03][C][wifi:449]:   Gateway: 192.168.1.1
[15:31:03][C][wifi:450]:   DNS1: 192.168.1.1
[15:31:03][C][wifi:451]:   DNS2: 0.0.0.0
[15:31:03][C][logger:177]: Logger:
[15:31:03][C][logger:178]:   Max Level: VERY_VERBOSE
[15:31:03][C][logger:179]:   Initial Level: VERY_VERBOSE
[15:31:03][C][logger:181]:   Log Baud Rate: 115200
[15:31:03][C][logger:182]:   Hardware UART: UART0
[15:31:03][C][captive_portal:089]: Captive Portal:
[15:31:03][C][sntp:042]: SNTP Time:
[15:31:03][C][sntp:045]:   Server 0: '0.pool.ntp.org'
[15:31:03][C][sntp:045]:   Server 1: '1.pool.ntp.org'
[15:31:03][C][sntp:045]:   Server 2: '2.pool.ntp.org'
[15:31:03][C][mdns:116]: mDNS:
[15:31:03][C][mdns:117]:   Hostname: esp8266-woda
[15:31:03][V][mdns:118]:   Services:
[15:31:03][V][mdns:120]:   - _esphomelib, _tcp, 6053
[15:31:03][V][mdns:122]:     TXT: friendly_name = Esp8266_Woda
[15:31:03][V][mdns:122]:     TXT: version = 2025.3.0
[15:31:03][V][mdns:122]:     TXT: mac = 98f4abb3cb7a
[15:31:03][V][mdns:122]:     TXT: platform = ESP8266
[15:31:03][V][mdns:122]:     TXT: board = nodemcuv2
[15:31:03][V][mdns:122]:     TXT: network = wifi
[15:31:03][V][mdns:122]:     TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[15:31:03][C][esphome.ota:073]: Over-The-Air updates:
[15:31:03][C][esphome.ota:074]:   Address: esp8266-woda.local:8266
[15:31:03][C][esphome.ota:075]:   Version: 2
[15:31:03][C][esphome.ota:078]:   Password configured
[15:31:03][C][safe_mode:018]: Safe Mode:
[15:31:03][C][safe_mode:019]:   Boot considered successful after 60 seconds
[15:31:03][C][safe_mode:021]:   Invoke after 10 boot attempts
[15:31:03][C][safe_mode:022]:   Remain in safe mode for 300 seconds
[15:31:03][C][api:140]: API Server:
[15:31:03][C][api:141]:   Address: esp8266-woda.local:6053
[15:31:03][C][api:143]:   Using noise encryption: YES
[15:31:03][C][wmbus:372]: wM-Bus v3.3.0:
[15:31:03][C][wmbus:374]:   Clients:
[15:31:03][C][wmbus:376]:     wmbusmeters: 192.168.1.35:9011 UDP [rtl-wmbus]
[15:31:03][C][wmbus:385]:   LED:
[15:31:03][C][wmbus:386]:     Pin: GPIO0
[15:31:03][C][wmbus:387]:     Duration: 1000 ms
[15:31:03][C][wmbus:389]:   CC1101 frequency: 868.950 MHz
[15:31:03][C][wmbus:390]:   CC1101 SPI bus:
[15:31:03][C][wmbus:391]:     MOSI Pin: GPIO13
[15:31:03][C][wmbus:392]:     MISO Pin: GPIO12
[15:31:03][C][wmbus:393]:     CLK Pin:  GPIO14
[15:31:03][C][wmbus:394]:     CS Pin:   GPIO2
[15:31:03][C][wmbus:395]:     GDO0 Pin: GPIO5
[15:31:03][C][wmbus:396]:     GDO2 Pin: GPIO4
[15:31:03][C][wmbus:403]:   Available drivers:  amiplus, apator08, apator162, apatoreitn, bmeters, c5isf, compact5, dme07, elf, evo868, fhkvdataiii, flowiq2200, hydrocalm3, hydrus, iperl, itron, izar, kamheat, mkradio3, mkradio4, mkradio4a, multical21, qheat, qwater, rfmtx1, sharky774, topaseskr, ultrimis, unismart, vario451
[15:31:03][C][wmbus:421]:   Meter:
[15:31:03][C][wmbus:422]:     ID: 1980334711 [0x76098277]
[15:31:03][C][wmbus:423]:     Type: apator162
[15:31:03][C][wmbus:424]:     Mode: T1
[15:31:03][C][wmbus:425]:     Key: '00000000000000000000000000000000'
[15:31:03][C][wmbus:427]:     Sensor '0x76098277 My lqi'
[15:31:03][C][wmbus:427]:       Device Class: 'signal_strength'
[15:31:03][C][wmbus:427]:       State Class: 'measurement'
[15:31:03][C][wmbus:427]:       Unit of Measurement: ''
[15:31:03][C][wmbus:427]:       Accuracy Decimals: 0
[15:31:03][C][wmbus:427]:     Sensor '0x76098277 My RSSI'
[15:31:03][C][wmbus:427]:       Device Class: 'signal_strength'
[15:31:03][C][wmbus:427]:       State Class: 'measurement'
[15:31:03][C][wmbus:427]:       Unit of Measurement: 'dBm'
[15:31:03][C][wmbus:427]:       Accuracy Decimals: 0
[15:31:03][C][wmbus:427]:     Sensor '0x76098277 My cold water'
[15:31:03][C][wmbus:427]:       Device Class: 'water'
[15:31:03][C][wmbus:427]:       State Class: 'total_increasing'
[15:31:03][C][wmbus:427]:       Unit of Measurement: 'm³'
[15:31:03][C][wmbus:427]:       Accuracy Decimals: 3
[15:31:03][C][wmbus:427]:       Icon: 'mdi:water'
[15:31:03][C][wmbus:421]:   Meter:
[15:31:03][C][wmbus:422]:     ID: 2952790005 [0xAFFFFFF5]
[15:31:03][C][wmbus:423]:     Type: text
[15:31:03][C][wmbus:424]:     Mode: T1
[15:31:03][C][wmbus:425]:     Key: ''

poczytaj jakie masz opcje dla v3

i??
Ładny YAML. CC1101 działa (a przynajmniej połączenie SPI do niego).

Nie mam żadnych odczytów , żadnych danych w logu :frowning:

Post został scalony z istniejącym tematem: Komponent wM-Bus do ESPHome (SzczepanLeon) wersja 2.x - wątek ogólny

Czołem, mam taki błąd przy próbie aktualizacji do nowej wersji, esphome, może ktoś pomoże mój kod poniżej, wraz z błędem

Mój błąd który mi się wyświetla podczas instalacji,

INFO ESPHome 2025.3.0
INFO Reading configuration /config/esphome/water-meter-home.yaml...
ERROR Unexpected exception while reading configuration:
Traceback (most recent call last):
  File "/usr/local/bin/esphome", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/esphome/esphome/__main__.py", line 1057, in main
    return run_esphome(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1035, in run_esphome
    config = read_config(dict(args.substitution) if args.substitution else {})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 1095, in read_config
    res = load_config(command_line_substitutions)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 949, in load_config
    return _load_config(command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 939, in _load_config
    return validate_config(config, command_line_substitutions)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/config.py", line 835, in validate_config
    target_platform = core_config.preload_core_config(config, result)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 231, in preload_core_config
    if _is_target_platform(domain):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/core/config.py", line 192, in _is_target_platform
    return get_component(name, True).is_target_platform
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 205, in get_component
    return _lookup_module(domain, exception)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/loader.py", line 181, in _lookup_module
    module = importlib.import_module(f"esphome.components.{domain}")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/data/external_components/0e75e1a4/components/wmbus/__init__.py", line 62, in <module>
    cv.Required(CONF_IP_ADDRESS): cv.ipv4,
                                  ^^^^^^^
AttributeError: module 'esphome.config_validation' has no attribute 'ipv4'

Mój Yaml


captive_portal:

time:
  - platform: sntp
    id: time_sntp

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

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

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

#led_pin: GPIO0
#led_blink_time: "1s"

sensor:
  - platform: wmbus
    meter_id: 0x3943515
    type: apator162
    key: "00000000000000000000000000000000"
    lqi:
      name: "WC Z.W lqi"
    rssi:
      name: "WC Z.W RSSI"
    total_water_m3:
      name: "Toaleta zimna woda"
  - platform: wmbus
    meter_id: 0x4528687
    type: apator162
    key: "00000000000000000000000000000000"
    lqi:
      name: "WC C.W lqi"
    rssi:
      name: "WC C.W RSSI"
    total_water_m3:
      name: "Toaleta ciepla woda"
 ## Kuchnia ###     
  - platform: wmbus
    meter_id: 0x3950511
    type: apator162
    key: "00000000000000000000000000000000"
    lqi:
      name: "Kuchnia Z.W lqi"
    rssi:
      name: "Kuchnia Z.W RSSI"
    total_water_m3:
      name: "Kuchnia zimna woda"
  - platform: wmbus
    meter_id: 0x4620991
    type: apator162
    key: "00000000000000000000000000000000"
    lqi:
      name: "Kuchnia C.W lqi"
    rssi:
      name: "Kuchnia C.W RSSI"
    total_water_m3:
      name: "Kuchnia ciepla woda"

Czemu to masz odkomentowane

a to zakomentowane?

Czemu nie przeczytałeś albo chociaż pierwszego posta albo kilkunastu ostatnich w tym wątku?