Wątek archiwalny - Komponent wM-Bus do ESPHome (SzczepanLeon) starsze wersje do 1.5.1 włącznie

wmbus jest komponentem do ESPHome umożliwiającym odczyt radiowych wodomierzy wM-Bus oraz bezpośrednią integrację z Home Assistant (wodomierz “widoczny” jako sensor). Obecnie wspierane są różne wodomierze/gazomierze/watomierze/ciepłomierze. Aktualna lista jest dostępna po zainstalowaniu komponentu… Do uruchomienia wymagany jest moduł CC1101 oraz ESP32 lub ESP8266.

Coś nie działa? Podeślij DEBUG logi (jako tekst a nie obrazek) razem z numerem wersji, którą masz.
obraz
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ę”.


mod-edit: Ten wątek pozostaje w ramach wsparcia dla starych wersji komponentu, aktualna wersja dla komponentu 2.x jest tam

linki do wątków wydzielonych dawniej są poniżej.

3 polubienia

Testuje…
Mam NodeMCU V3 podłączone zgodnie ze schematem:

plik konfiguracyjny yaml:

esphome:
  name: apator
  comment: Maszynownia - licznik wody

esp8266:
  board: nodemcuv2

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

# Enable logging
logger: 
  level: DEBUG

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

ota:
  password: "*******************************************"

# Serwer with a statistic data and OTA board update
web_server:
  port: 80
  version: 2
  auth:
    username: !secret maszynownia_auth_u
    password: !secret maszynownia_auth_p

# WiFi Local Area Network (HA)
wifi:
  ssid: !secret maszynownia_wifi_ssid
  password: !secret maszynownia_wifi_p

  # Hotspot when can't connect to Local WiFi
  ap:
    ssid: "Apator AP"
    password: !secret maszynownia_ap_p

captive_portal:

# int ApatorID = 0x4829838;

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

sensor:
  - platform: wmbus
    name: "Wodomierz"
    meter_id: 0x4829838
    type: apator162

no i porażka :frowning:
SUKCES, wodomierz obudził się o 07:46

logi:

INFO Reading configuration /config/esphome/apator.yaml...
INFO Starting log output from apator.local using esphome API
INFO Successfully connected to apator.local
[01:44:41][I][app:102]: ESPHome version 2022.12.3 compiled on Dec 28 2022, 01:27:32
[01:44:41][C][wifi:504]: WiFi:
[01:44:41][C][wifi:362]:   Local MAC: C4:5B:BE:4A:58:93
[01:44:41][C][wifi:363]:   SSID: [redacted]
[01:44:41][C][wifi:364]:   IP Address: 192.168.**.***
[01:44:41][C][wifi:365]:   BSSID: [redacted]
[01:44:41][C][wifi:367]:   Hostname: 'apator'
[01:44:41][C][wifi:369]:   Signal strength: -46 dB ▂▄▆█
[01:44:41][C][wifi:373]:   Channel: 1
[01:44:41][C][wifi:374]:   Subnet: 255.255.255.0
[01:44:41][C][wifi:375]:   Gateway: 192.168.**.*
[01:44:41][C][wifi:376]:   DNS1: 192.168.**.*
[01:44:41][C][wifi:377]:   DNS2: 192.168.*.*
[01:44:41][C][logger:293]: Logger:
[01:44:41][C][logger:294]:   Level: DEBUG
[01:44:41][C][logger:295]:   Log Baud Rate: 115200
[01:44:42][C][logger:296]:   Hardware UART: UART0
[01:44:42][C][wmbus_sensor:015]: wM-Bus Sensor 'Wodomierz'
[01:44:42][C][wmbus_sensor:015]:   Device Class: 'water'
[01:44:42][C][wmbus_sensor:015]:   State Class: 'total_increasing'
[01:44:42][C][wmbus_sensor:015]:   Unit of Measurement: 'm³'
[01:44:42][C][wmbus_sensor:015]:   Accuracy Decimals: 3
[01:44:42][C][wmbus_sensor:015]:   Icon: 'mdi:water'
[01:44:42][C][wmbus_sensor:016]:   Type: apator162
[01:44:42][C][wmbus_sensor:017]:   ID: 75667512 [0x04829838]
[01:44:42][C][captive_portal:088]: Captive Portal:
[01:44:42][C][web_server:125]: Web Server:
[01:44:42][C][web_server:126]:   Address: apator.local:80
[01:44:42][C][mdns:103]: mDNS:
[01:44:42][C][mdns:104]:   Hostname: apator
[01:44:42][C][ota:093]: Over-The-Air Updates:
[01:44:42][C][ota:094]:   Address: apator.local:8266
[01:44:42][C][ota:097]:   Using Password.
[01:44:42][C][api:138]: API Server:
[01:44:42][C][api:139]:   Address: apator.local:6053
[01:44:42][C][api:141]:   Using noise encryption: YES
[01:44:42][C][wmbus:059]: wM-Bus:
[01:44:42][C][wmbus:060]:   CC1101 SPI bus:
[01:44:42][C][wmbus:061]:     MOSI Pin: GPIO13
[01:44:42][C][wmbus:062]:     MISO Pin: GPIO12
[01:44:42][C][wmbus:063]:     CLK Pin:  GPIO14
[01:44:42][C][wmbus:064]:     CS Pin:   GPIO2
[01:44:42][C][wmbus:065]:     GDO0 Pin: GPIO5
[01:44:42][C][wmbus:066]:     GDO2 Pin: GPIO4
[01:44:42][C][wmbus:067]:   Available drivers:
[01:44:42][C][wmbus:069]:     Name: apator162
[01:44:42][C][wmbus:069]:     Name: izar
[01:44:46][I][ota:113]: Boot seems successful, resetting boot loop counter.

i nic… puściłem trochę wody, żeby wodomierz się ruszył, ale cały czas encja jest jako “nieznana”.
image

Ktoś ma jakieś pomysły, może robię coś nie tak…

update:
jak się zaloguje na NodeMCU, jest to samo:

update2:
wodomierz obudził się o godzinie 7:44
image

1 polubienie

Mój id nakładki izar zawiera litery przez co wywala błąd bo zmienną jest intiger. Coś źle robię czy założenie było że id to cyfry?

Podaj jako HEX. Czyli przed numerkiem daj 0x
Jak niezałapie to nie definiuj żadnego sensora tylko czekaj w logu tego ESPHome (Info) aż odbierze telegram i wyświetli ID.

Czyli wszystko działa tak jak powinno? Odczyt jest prawidłowy?

TAK :slight_smile: Wodomierz się obudził, a odczyt jest prawidłowy. Będę obserwował jak ze stabilnością przez najbliższe kilka dni.

Logi:

Time	level	Tag	Message
08:48:10	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:48:10	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:48:34	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A220030854133DC99D973E9DAAEC7BC95B2358F4F92B87EC0BC36B64E04282F7E75399F0E3D85EC1C4F18732B99C8910E6B39482B (63)
08:48:34	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:48:34	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:50:47	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A25003085F8880B0E125A393B282E5F0E60C4698757F67B558E6339EB07283140C1FD5D08171DF2CD7176191D40BA7CB626F4E851 (63)
08:50:47	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:50:47	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:51:18	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A260030853F362FA7634BA15F06F706B6F042FA0FD5B1812CA199BA0A6C972B037764C743F30D9BD6480F55523DE756729DBA0393 (63)
08:51:18	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:51:18	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:52:41	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A280030851B0C39260B1953AAF558F141BB6D9520593838B977EEBE150FB1EC3CC88FF0C00287ABE227C77E40C5ECE3A02C19F143 (63)
08:52:41	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:52:41	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:53:19	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A29003085F55FA1D11D8C2D39BA0B3B963FB9D2E4F1D264129DEA33958B8C36F3827E09E2D7456802D951B7B2A6A9377383AE7358 (63)
08:53:19	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:53:19	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:54:09	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A2A003085A5A3B37B08464255FEA4BD2F68280F520F5372F41960608A6D9F7EF4095D31E56C4B4FAAD0C34EAB4C22F5FB4461A1BE (63)
08:54:09	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:54:09	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:55:28	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A2C0030853C8A3F706D747CE63495D7E112788E642C1E65C6CCDD027E4A09BBDF6263DEBE71A2E3464E1D402361B8110CED0A27E8 (63)
08:55:28	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:55:28	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:55:57	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A2D003085D6705C2CF5BDBC8110DD4C72A3F677F00F81722258D612F6FB715E170257DD6D1BED17E467DC0B7B9C784917636B628D (63)
08:55:57	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:55:57	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:57:18	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A2F0030853C21A623D5353A2E46DAE39E3300509734CAFDB3FF5F2049E53A37D4E3D0901575429AB0F15A88D5B5B72B6475F150BA (63)
08:57:18	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:57:18	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:58:12	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A300030851FB2148D85FE47BA877DE0E933D1C4EBA8F9C46B831756CBDD7E3BBF07E2F5D22572DF945B7C0B342AF449E6B8B0A389 (63)
08:58:12	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:58:12	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:58:43	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A3100308558D0410EC6F955A9F4E768CC7249647222C0EB20080976033991FCD62528B79359F4037713B26935E000240A297F24F1 (63)
08:58:43	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:58:43	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:59:14	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A3200308519C5A2818326DECE8A4545DC06AC5B3951871B88350D4447F98A5EAC2745513EDCEBA19291A3EBDC08686586BDBD3505 (63)
08:59:14	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:59:14	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
08:59:59	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A33003085C18C29928C1E99117FC980C7BA164579A0A1D75557BB69901502E21BC0FAF1AA22562A72B3E830C559482D757DED17EF (63)
08:59:59	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
08:59:59	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
09:00:36	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A3400308581F05EF8DB6E046550E35E1E6378B5F70196CE208C2AF4EC9297E15563A4D25BF4293E51E92C4F7E61791157D66854B2 (63)
09:00:36	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
09:00:36	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95200 m³ with 3 decimals of accuracy
09:01:29	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A35003085611BDDDDE46D39F34D011EB2B76E8D58E27CEC1E7536027E2511CC4DAE8F22D05B811DE31BCFF119B19E7AE42AE815D4 (63)
09:01:29	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
09:01:29	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95300 m³ with 3 decimals of accuracy
09:01:57	[I]	[wmbus:035]	
Telegram from ID [0x04829838]: 3E4401063898820405077A360030853AD6D79A46C7BB65453668C36213FE3854C3041CE8A307EAA63AFF197E01682318A241B9E02AC0C346957BAC170AF504 (63)
09:01:57	[D]	[wmbus:042]	
Using driver 'apator162' for ID [0x04829838]
09:01:57	[D]	[sensor:126]	
'Wodomierz': Sending state 5.95300 m³ with 3 decimals of accuracy

@_Szczepan czy do tego repo nie potrzeba już wmbusmerers?

Dokładnie tak. Nie potrzeba go (chyba że masz coś aktualnie niewspieranego). Wgrywasz na ESP i konfigurujesz ile sensorów chcesz. Konfiguracja tak jak zwykłego sensora w ESPHome. Domyślnie tworzy zliczając m3. Nie powinno też być pików dla Apatora.

Jak chcecie wsparcie innych nakładek/wodomierzy to wystarczy dodac jeden plik z odpowiednią logiką mapującą odpowiednie pole w telegramie na interesujące dane.

1 polubienie

Działa super na Apator-16-2, sprawdziłem do tego tworzy odrazu sensor widoczny w panelu Energia. Trzeba tylko przedefiniować piny CC1101 jeśli ktoś wcześniej używał repozytorium @Mariusz_Woszczyński

1 polubienie

No i o to chodziło :slight_smile:
Mam oba, ale ja nie potrafilem ogarnąć kodów żeby działał jednocześnie apator i izar :slight_smile:

Przesiadaj się na mój komponent, będziesz miał oba. A niedługo jeszcze apator8 i unismart.

2 polubienia

No teraz to już nie mam wyjścia:)
Cały czas mi zależało, żeby odczyty ogarnąć bez wmbusmerers.
Na razie jestem na wyjeździe, rzuce okiem jak wrócę do domu. Powiedz mi jak przesyłasz ID licznika? Bo w przypadku normalnego sensora byl problem z dluzszym ID, dlatego ja przeszedłem na text sensor.

Dobrze że nie zdążyłem apatora sprzedać :joy:
Goooooood jooooob

Po stronie ESPHome parsowane jako hex_int a po stronie C++ uint32_t.

To powinno być ok.
A czy jest opcja nie wpisania ID? W sensie żeby czytał wszystko co jest w zasięgu?
W Apatorze ID jest nadrukowane, ale ID Izara musiałem sam zidentyfikować po swoim zużyciu

Obecnie każdy trace typu:
[06:30:56][I][wmbus:038]: Telegram from ID [0x00B8DC58]: 1944304C58DCB8008800A26109001329409F32CACC3453B4E9B4 (26)

Jest wyświetlany w momencie odbioru telegramu, niezależnie czy sensor jest zdefiniowany w yaml’u.

Zostawił bym tak jak jest (ten wątek stworzyłem w momencie publikacji komponentu wmbus), wcześniejsze wpisy w sąsiednim wątku dotyczyły mojego pierwszego komponentu wmbusgw.
A dalsze dzielenie/czyszczenie z innych naleciałości to może być droga przez mękę.

1 polubienie

Komponent wmbus od @_Szczepan w moim przypadku działa idealnie.
Obydwa liczniki są teraz odczytywane prawidłowo. Teraz zostawiam kilka dni na testach i jak nie będzie problemów to przechodzę z wmbusmeters na ESP8266 + CC1101.

1 polubienie

Cześć.
Prośba o pomoc: mam cały czas problem z bootloopem.
Próbowałem wcześniejszych rozwiązań innych osób, teraz próbuję tą, która mi najbardziej odpowiada czyli ESPhome + CC1101. I cały czas mam problem z bootloopem.

Próbowałem połączyć CC1101 z esp32S2 mini, esp8266 D1 mini, nodeMCU v3 i wszędzie to samo.
Poprawiałem luty na CC1101, sprawdzałem poprawność podłączeń.

Same moduły esp działają mi poprawnie, mam szablon w ESPhome który wgrywam na wszystkie esp. Usuwałem też co się da z mojego szablonu szukając problemu.

Dodając:

external_components:
  - source: github://SzczepanLeon/esphome-components@main
    components: [ wmbus ]
logger:
  level: DEBUG

jest ok,

ale po dodaniu:

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

zaczynają się bootloopy, nawet bez podłączonego CC1101.

[C][api:025]: Setting up Home Assistant API server...

CC1101 version: 0
CC1101 initialized
[I][app:062]: setup() finished successfully!

czasem jest CC1101 version:255 i też bootloop.

Z dziwnych rzeczy: przy cs_pin: GPIO2 czyli D4, cały czas świeci niebieska dioda na esp, zmieniłem na próbe na D8, przestała świecić, ale bootloopy zostają.

A CC1101 masz sprawny? Zachowanie wskazuje albo na niewłaściwe podłączenie CC1101 albo na uszkodzony CC1101.

Na niektórych modelach płytek (zasadniczo ESP82xx, bo w ESP32 zwykle LED jest podpięty gdzie popadnie - niektórzy producenci dla kompatybilności z 82xx też podpinają pod GPIO2 inni do zupełnie losowych GPIO - trzeba dysponować schematem płytki) ten LED jest przylutowany przez rezystor na PCB właśnie do GPIO2 więc nie ma w tym nic dziwnego, możesz nie korzystać z GPIO2 a ustawić tam w konfiguracji diodę statusu.

Dysponujesz solidnym zasilaczem? bootloopy są typowe dla problemów z zasilaniem ESP, a ten projekt chyba jest dość wymagający pod względem obciążenia procka?

Niektóre klony D1 mini mają wlutowany za slaby regulator napięcia 3,3V, w związku z czym należy je zasilać zasilaczem 3,3V bezpośrednio na pinie 3V3

"problem: świecącego leda rozwiązałem zmieniając na D8 jeszcze na nodeMCU.

Zasilacz mam całkiem dobry, ładowarka 5V, ale porządna, zawsze rozwiązywała problemy z zasilaniem esp.

Przepiąłem CC1101 na ESP32 i nic się nie zmieniło, mam wrażenie że to jakiś głupi błąd będzie.

Ostatnia linia kodu przed bootloopem to:
[C][api:025]: Setting up Home Assistant API server...
edit: momentami udaje mi się wejść po adresie IP, i pokazuje stronę bez żadnych informacji, jest logo ESP, ramki itd, ale żadnych danych z loga itp

może z tym coś będzie ? jeśli chodzi o api to mam tylko tyle, bez hasła i kodowania.

captive_portal:
logger:
  level: DEBUG
api:
ota:

Przy okazji, usunąłem po raz kolejny build files i na żółto taki tekst się pojawił, ale skompilowało poprawnie.

src/esphome/components/wmbus/wmbus.cpp: In member function 'virtual void esphome::wmbus::WMBusComponent::dump_config()':
src/esphome/components/wmbus/wmbus.cpp:68:20: warning: structured bindings only available with -std=c++17 or -std=gnu++17
   for (const auto& [key, driver] : this->drivers_) {
                    ^

Jeśli zaś chodzi o sprawdzenie poprawności samego CC1101, to nie sprawdzałem inaczej. Mogę spróbować przez arduino nano, lub konwerter ftdi jeśli się da, innego pomysłu nie mam.

Problemem może być za słaby regulator 3V3 na płytce a nie zasilacz zewnętrzny. Tak jak opisał @szopen

Wklej tutaj cały konfig jaki masz do ESPHome, logi na poziomie DEBUG, podeślij też zdjęcia co, gdzie i jak podłączyłeś - tak będzie szybciej.

Tym warning’iem nie przejmuj się. Jak kompilacja przeszła i wyświetla poprawnie konfiguracje w logu to jest OK.