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

jaka to wersja?
test_01_01?

main

Wystarczy ze w YAML masz

refresh: 0d

i go zaciągnie (mozesz dać clean wcześniej).

Udało mi się zmusić ESP32 Wroom do obsługi czterech wodomierzy z wysyłaniem danych po MQTT przez NAT. HA ładnie dane odbiera na bieżąco.
Sprawa była prosta, wystarczyło wyczyścić z HA wszystkie pliki budowania, jakie przez ostatni czas nazbierały się w katalogach.
Dodam, że ESP jest oddalone od liczników od 5m do kilkunastu metrów ścian i stropów. Antena standard dołączona do cc1101.

Dziękuję za sugestię i porady.

1 Like

Ciekawe jaki mechanizm tu zadziałał?
Może poprostu kolejna wersja lepiej działa?

1 Like

Dobre pytanie. Już chciałem wymienić ESP32 na inny model ale po wgraniu programu diagnostycznego jeszcze raz od początku skompilowałem program. Po uruchomieniu pojawiły się inny format logów i zaczął przetwarzać telegramy i wysyłać je po MQTT do HA.
Na razie tego już nie dotykam, czekam aż wejdą poprawki na ESP D1 mini albo zamienię go na ESP32 S2 mini.

Ciekawe. Inny z mojego komponentu czy też ogólnie z ESPHome?

Z Twojego komponentu. Tak mam aktualnie:

12:05:41[I}[wmbus:085]apator162 [0x07375077] RSSI: -55dBm T: 6E4401067750370705077A8700608556B64B7B2782076F6CE00D4CA53E8CF37E329F1946C4010F33666CA5DD4CDF3677D13B11BE40CD44698BC6E348AAEDB6AE811876F8B7AF26C130E617AAC08216816D7D6DCBBB70CAECA25BD474E4C7B75BE8BDA373560D2939BE63CB86D797A7 (111) T1 A
12:05:41[D][meters.cpp:1993](meter) created ESPHome apator162 07375077 encrypted
12:05:41[D][meters.cpp:922] (meter) ESPHome(0) apator162 handling telegram from 07375077.M=APA.V=05.T=07
12:05:41[D][sensor:094] 'RSSI Ciepla woda': Sending state -55.00000 dBm with 0 decimals of accuracy
12:05:41[D][sensor:094]'Ciepla woda': Sending state 0.14000 m³ with 3 decimals of accuracy
1 Like

I tak ma być. Chcesz więcej informacji to daj VERBOSE.
Widocznie wcześniej nie ładowałeś najnowszej wersjii.

Hej, pierwsza próba z Twoim komponentem i takie błędy w trakcie kompilacji otrzymuje.

In file included from src/esphome/components/wmbus/dvparser.h:23,
                 from src/esphome/components/wmbus/meters.h:22,
                 from src/esphome/components/wmbus/wmbus.cpp:4:
src/esphome/components/wmbus/units.h:102:7: error: expected identifier before '(' token
     X(HZ,hz,"Hz",Frequency,"hz")                                        \
       ^~
src/esphome/components/wmbus/units.h:129:53: note: in definition of macro 'X'
 #define X(cname,lcname,hrname,quantity,explanation) cname,
                                                     ^~~~~
src/esphome/components/wmbus/units.h:130:5: note: in expansion of macro 'LIST_OF_UNITS'
     LIST_OF_UNITS
     ^~~~~~~~~~~~~
src/esphome/components/wmbus/units.h:102:7: error: expected '}' before '(' token
     X(HZ,hz,"Hz",Frequency,"hz")                                        \
       ^~
src/esphome/components/wmbus/units.h:129:53: note: in definition of macro 'X'
 #define X(cname,lcname,hrname,quantity,explanation) cname,
                                                     ^~~~~
src/esphome/components/wmbus/units.h:130:5: note: in expansion of macro 'LIST_OF_UNITS'
     LIST_OF_UNITS
     ^~~~~~~~~~~~~
src/esphome/components/wmbus/units.h:128:1: note: to match this '{'
 {
 ^
src/esphome/components/wmbus/units.h:102:7: error: expected unqualified-id before numeric constant
     X(HZ,hz,"Hz",Frequency,"hz")                                        \
       ^~
src/esphome/components/wmbus/units.h:129:53: note: in definition of macro 'X'
 #define X(cname,lcname,hrname,quantity,explanation) cname,
                                                     ^~~~~
src/esphome/components/wmbus/units.h:130:5: note: in expansion of macro 'LIST_OF_UNITS'
     LIST_OF_UNITS
     ^~~~~~~~~~~~~
src/esphome/components/wmbus/units.h:102:7: error: expected ')' before numeric constant
     X(HZ,hz,"Hz",Frequency,"hz")                                        \
       ^~
src/esphome/components/wmbus/units.h:129:53: note: in definition of macro 'X'
 #define X(cname,lcname,hrname,quantity,explanation) cname,
                                                     ^~~~~
src/esphome/components/wmbus/units.h:130:5: note: in expansion of macro 'LIST_OF_UNITS'
     LIST_OF_UNITS
     ^~~~~~~~~~~~~
src/esphome/components/wmbus/units.h:133:1: error: expected declaration before '}' token
 };
 ^
Compiling .pioenvs/wmbus-test/src/esphome/core/helpers.cpp.o
Compiling .pioenvs/wmbus-test/src/esphome/core/log.cpp.o
*** [.pioenvs/wmbus-test/src/esphome/components/wmbus/wmbus.cpp.o] Error 1
========================= [FAILED] Took 15.64 seconds =========================

Co zrobić, żeby się skompilowało ?

A nie pokażesz YAMLa?

@grz3chubak załaduj wersję 4.0.8 - powinno zadziałać.

Cześć @_Szczepan wersja 4.0.8 GAM350 działa

1 Like

Możesz podać na jakim sprzęcie ESP32?

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

Wersja 1 od @Mariusz_Woszczyński

1 Like

Dariusz, czy możesz podesłać mi swój YAML? Bo coś chyba sobie w skrypcie popsułem, i nie odbieram niczego sensownego.

Proszę, u mnie działa ta konfiguracja
UNISMART x 1
APATOR162 x 2
GAMA350 x 2 (amiplus)

odczyty gazomierz UNISMART
image
odczyty energia PGE AMIPLIS
Import
image
Export
image
Wodomierze odczytuję średnio co 2-5 minut w ciągu dnia między 7:00 a 17:00

Po 17:00 odczyty są rzadsze i spływają co 10 do 15 minut


### ESPOME ver 1
# 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.8
    components: [ wmbus ]


# Logi systemowe dostępne opcje  'NONE', 'ERROR', 'WARN', 'INFO', 'DEBUG', 'VERBOSE', 'VERY_VERBOSE'.
logger:
  level: VERBOSE

 
web_server:
  port: 80



api:
 reboot_timeout: 36000s  
 encryption:
  key: "/usV//VFUokEn296076onuYnhQ0iWEnPJnGBunYwp04="
ota:
  platform: esphome
  password: "e34d0c3980ac9492897724849c021acd"


# Konfiguracja sieci LAN
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
  


captive_portal:
wmbus:
#  frequency: 868.950
#  all_drivers: False
#  sync_mode: True
#  log_all: True
  mosi_pin: GPIO32
  clk_pin: GPIO33
  miso_pin: GPIO19
  gdo2_pin: GPIO21
  gdo0_pin: GPIO22
  cs_pin: GPIO23
  led_blink_time: "1s"
#########################################################################################################



  mqtt:
    broker: !secret mqtt_ip1
    port: !secret mqtt_port1
    username: !secret mqtt_username1
    password: !secret mqtt_password1
  
  clients:
    - name: "wmbusmeters"
      ip_address: "10.0.0.56"
      port: 7227  


sensor:



# APATOR WODOMIERZ GŁÓWNY

  - platform: wmbus
    meter_id: 0x@@@@@@@@
    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"

# APATOR WODOMIERZ  OGRODOWY

  - platform: wmbus
    meter_id:  0x@@@@@@@@
    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"


# UNISMART GAZOMIERZ
  - platform: wmbus
    meter_id:  0x@@@@@@@@
    type: unismart
    key: "00000000000000000000000000000000"
    sensors:

      - name: "RSSI Gazomierz"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"

      - name: "Licznik gazu aktualny"
        field: "total"
        unit_of_measurement: "m3"        
        icon: "mdi:gas-burner"
        device_class: "gas"
        accuracy_decimals: 3

      - name: "Licznik gazu poprzedni"
        field: "target"
        icon: "mdi:gas-burner"
        unit_of_measurement: "m3"        
        device_class: "gas"
        accuracy_decimals: 3


# GAMA 350 LICZNIK ENERGII

  - platform: wmbus
    meter_id:  0x@@@@@@@@
    type: amiplus
    key: "000000000000000000000000000"
    sensors:

      - name: "Gama350 RSSI"
        field: "rssi"
        accuracy_decimals: 0
        unit_of_measurement: "dBm"
        device_class: "signal_strength"
        state_class: "measurement"
        entity_category: "diagnostic"        
        ########################################
        #####   Liczniki #######################

      - name: "Gama350 180"
        field: "total_energy_consumption"
        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"
        accuracy_decimals: 3
        unit_of_measurement: "kWh"
        device_class: "energy"
        state_class: "total_increasing"
        icon: "mdi:transmission-tower-export"        

        ########################################
        #####   Moc      #######################

      - name: "Gama350 Moc importu"
        field: "current_power_consumption"
        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"
        accuracy_decimals: 3
        unit_of_measurement: "kw"
        device_class: "power"
        state_class: "measurement"
        icon: "mdi:lightning-bolt"

        
        ########################################
        #####   Napięcia #######################

      - name: "Gama350 napiecie na fazie 1"
        field: "voltage_at_phase_1"      
        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"      
        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"      
        accuracy_decimals: 0
        unit_of_measurement: "v"
        device_class: "voltage"
        state_class: "measurement"
        icon: "mdi:sine-wave"



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

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


2 Likes

Dzięki. Mam w sumie to samo. I nie odbiera, mimo że odbierało 2 miesiące temu całkiem sporo. … Częstotliwość radiowa…?

Cześć, w jakich odstępach czasu dostajecie odczyty licznika prądu przez komponent ?

Dobra. Mój problem, że nic nie czytało tylko jakieś syfy były … naprawiło przywrócenie do “factory.bin”.
Jak wgrałem wersję 4.0 + all_drivers, to miałem problem w ogóle z OTA. Jakoś się udało, ale … coś zostało we flash’u.
Resolved.

EDIT: yaml musi być jak najprostszy, by nic nie konkurowało o CPU. Dodanie MQTT, web, czy nawet logging=verbose powoduje redukcję rozpoznawalnych ramek.

Co może powodować powtarzający się co chwilę taki komunikat w logach:
image

Dodane 2 wodomierze - mkradio4