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

No właśnie nic nie ma ani w ESP ani w MQTT - to znaczy sensory nie mają przypisanych wartości.

Jak chcesz, to możesz zajrzeć zdalnie.

W MQTT nie masz nic (zakładam że.powinno pojawić się z wmbusmerers-ha-addona) bo esphome nie może nawiązać połączenia z wmbusmetersem po TCP.

Dlaczego w HA po API nie ma to nie wiem - jak wyglada log VV?

Tłumaczenie dla nie-programistów :stuck_out_tongue:

[…]
logger:
[…]
  level: VERY_VERBOSE
[…]
1 polubienie

ha wmbusmeters nie ma poziomu logów very_verbose. może być verbose - tak to się wyświetla w panelu dodatku:

[23:36:13] INFO: CONFIG_CONF ...
[23:36:13] INFO: {"device":"rtlwmbus:CMD(/usr/bin/nc -lk 7011)","donotprobe":"all","format":"json","logfile":"/config/wmbusmeters/edge/wmbusmeters.log","loglevel":"very_verbose","logtelegrams":true,"meterfiles":"/config/wmbusmeters/edge/logs/meter_readings/","meterfilesaction":"append","shell":"/wmbusmeters/mosquitto_pub.sh \"wmbusmeters/$METER_NAME\" \"$METER_JSON\""}
[23:36:13] INFO: CONFIG_METERS ...
[23:36:13] INFO: [{"driver":"hydrodigit","id":"22081926","key":"00000000000000000000000000000000","name":"K2edge"},{"driver":"hydrodigit","id":"22108441","key":"00000000000000000000000000000000","name":"woda_k4_bm"}]
[23:36:13] INFO: Syncing wmbusmeters configuration ...
[23:36:13] INFO: Registering meters ...
[23:36:13] INFO: Adding meter-0001 ...
[23:36:13] INFO: Adding meter-0002 ...
[23:36:14] INFO: Generating MQTT configuration ... 
[23:36:14] INFO: Broker core-mosquitto will be used.
[23:36:14] INFO: 
MQTT Discovery ...
[23:36:14] INFO:  Adding meter: K2edge ...
[23:36:15] INFO:   Add/update topic: homeassistant/sensor/wmbusmeters/22081926_rssi_dbm/config
[23:36:15] INFO:   Add/update topic: homeassistant/sensor/wmbusmeters/22081926_timestamp/config
[23:36:15] INFO:   Add/update topic: homeassistant/sensor/wmbusmeters/22081926_total_m3/config
[23:36:15] INFO:  Adding meter: woda_k4_bm ...
[23:36:15] INFO:   Add/update topic: homeassistant/sensor/wmbusmeters/22108441_rssi_dbm/config
[23:36:15] INFO:   Add/update topic: homeassistant/sensor/wmbusmeters/22108441_timestamp/config
[23:36:16] INFO:   Add/update topic: homeassistant/sensor/wmbusmeters/22108441_total_m3/config
[23:36:16] INFO: MQTT Discovery cleanup...
[23:36:17] INFO: Starting web configuration service.
[23:36:17] INFO: Running wmbusmeters ...
No such log level: "very_verbose"
[23:36:17] INFO: Starting Nginx...
2024/01/02 23:36:17 [notice] 83#83: using the "epoll" event method
2024/01/02 23:36:17 [notice] 83#83: nginx/1.24.0
2024/01/02 23:36:17 [notice] 83#83: OS: Linux 6.1.63-haos
2024/01/02 23:36:17 [notice] 83#83: getrlimit(RLIMIT_NOFILE): 1073741816:1073741816
2024/01/02 23:36:17 [notice] 83#83: start worker processes
2024/01/02 23:36:17 [notice] 83#83: start worker process 281

plik wmbusmeters.log na poziomie verbose wygląda tak:

(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 275 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=275 fd=3 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 275 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serialcmd) closed /bin/sh pid=275 fd=3 (rtlwmbus)
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=275 fd=-1 (rtlwmbus)
(serialcmd) closed /bin/sh pid=275 fd=-1 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 274 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=274 fd=3 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 267 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=267 fd=3 (rtlwmbus)
(serialcmd) closed /bin/sh pid=267 fd=-1 (rtlwmbus)
(serialcmd) closed /bin/sh pid=267 fd=-1 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 262 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=262 fd=3 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 275 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serialcmd) closed /bin/sh pid=275 fd=-1 (rtlwmbus)
(serialcmd) closed /bin/sh pid=275 fd=3 (rtlwmbus)
(serial) event loop stopped!
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)

a tak jak wybiorę debug:

Started config device=rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
No meters configured. Printing id:s of all telegrams heard!
Started config device=rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
No meters configured. Printing id:s of all telegrams heard!
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
No meters configured. Printing id:s of all telegrams heard!
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 275 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=275 fd=3 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 275 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serialcmd) closed /bin/sh pid=275 fd=3 (rtlwmbus)
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=275 fd=-1 (rtlwmbus)
(serialcmd) closed /bin/sh pid=275 fd=-1 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 274 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=274 fd=3 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 267 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=267 fd=3 (rtlwmbus)
(serialcmd) closed /bin/sh pid=267 fd=-1 (rtlwmbus)
(serialcmd) closed /bin/sh pid=267 fd=-1 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 262 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serial) event loop stopped!
(serialcmd) closed /bin/sh pid=262 fd=3 (rtlwmbus)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(serialcmd) opened /bin/sh pid 275 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(serialcmd) closed /bin/sh pid=275 fd=-1 (rtlwmbus)
(serialcmd) closed /bin/sh pid=275 fd=3 (rtlwmbus)
(serial) event loop stopped!
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(wmbusmeters) version: 1.14.0-71-g331c5a4
(config) store meter files in: "/config/wmbusmeters/edge/logs/meter_readings/"
(config) using device: rtlwmbus:CMD(/usr/bin/nc -lk 7011) 
(config) number of meters: 2
(serial) expecting devices to work
(serial) expecting devices to work
(lookup) with cmd "rtlwmbus:CMD(/usr/bin/nc -lk 7011)"
(main) opening rtlwmbus:CMD(/usr/bin/nc -lk 7011)
Started config rtlwmbus listening on none using CMD(/usr/bin/nc -lk 7011)
(rtlwmbus) using command: /usr/bin/nc -lk 7011
(rtlwmbus) opening cmd_0
(bgshell) exec background "/bin/sh"
(bgshell) arg "-c"
(bgshell) arg "/usr/bin/nc -lk 7011"
(serialcmd) opened /bin/sh pid 274 fd 3 (rtlwmbus)
(main) regular reset of rtlwmbus  using CMD(/usr/bin/nc -lk 7011) will happen every 82800 seconds
(wmbus) no alarm (expected activity) for rtlwmbus
(serial) registered regular callback HOT_PLUG_DETECTOR(0) every 2 seconds
(serial) waiting for stop

log z czytnika (vv) podałem wyżej, ale mam tylko fragment - o tej porze ramko chodzą rzadko:

[13:21:07][VV][wmbus:057]: have data from CC1101 ...
[13:21:07][I][wmbus:087]: Using driver 'bmeters' for ID [0x22108441] RSSI: -58 dBm LQI: 128 Mode: T1 T: 4E44B4094184102213077A73084005E32D0EBFA24DFFA17E4FF73CED67D802DFE0018E7BEC030105C8913E72A1A918787560B44438E941976A384C0140BE9C09F0E2998D9B17E93F5F2216817C08C9 (79)
[13:21:07][VV][wmbus:089]: Key defined, trying to decrypt telegram ...
[13:21:07][VV][wmbus:290]: Decrypting: tpl-ci '7A' tpl-cfg '540' offset '15
[13:21:07][VV][wmbus:338]: 2F2f check after decrypting - OK
[13:21:07][D][wmbus:094]: Decrypted T : 4E44B4094184102213077A730840052F2F0C1381000000046D152D01310F170A232C291100000002000002000002000002000002000002000002000002000009F0E2998D9B17E93F5F2216817C08C9 (79)
[13:21:07][VV][wmbus-drivers:041]: Converting BCD to INT
[13:21:07][VV][wmbus-drivers:210]: Found register '0C13' with '81'->'0.081000'
[13:21:07][VV][wmbus-drivers:035]: Value added to map
[13:21:07][V][sensor:043]: 'Woda K4bm': Received new state 128.000000
[13:21:07][D][sensor:094]: 'Woda K4bm': Sending state 128.00000  with 0 decimals of accuracy
[13:21:07][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[13:21:07][V][json:058]: Size after shrink 72 bytes
[13:21:07][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 2382216807
  state: 128
  missing_state: NO
}
[13:21:07][VV][wmbus:125]: Publishing 'total_water_m3' = 0.0810
[13:21:07][V][sensor:043]: 'woda_k4_bm': Received new state 0.081000

Ale ESPHome ma… a problem z tego co rozumiem leży w ESPHome.
Nie byłem na bieżąco w tym wątku :stuck_out_tongue:

Z ESPHome interesujace jest to czego nie ma - po 13:21

Co do HA wmbusmeters to pierwszy problem do rozwiązania jest z połączeniem do niego. Masz w konfigu addona ustawione przekierowanie/otwarcie portu? IP sie zgadza w yamlu z ESPHome (w sekcji client powiniem być wpisany IP do HA).

1 polubienie

W yaml jest port 7011 i w HA addon ten sam (tcp). IP ha jest.

po 13:21 o ile pamiętam, po tym zaraz był komunikat o błędzie:

socket error on fd 51, errno: 104

taki jak ten, z drugiego zestawu, który testuję (ale potwierdzę rano, jak pójdą ramki):

[ 34354][E][WiFiClient.cpp:268] connect(): socket error on fd 51, errno: 104, "Connection reset by peer"
[W][component:214]: Component wmbus took a long time for an operation (0.08 s).
[W][component:215]: Components should block for at most 20-30ms.

a potem w zasadzie nie było niczego więcej - sekcje się powtarzają.

log z teraz (z wyciętymi liniami, które się powtarzają), wygląda tak:

INFO ESPHome 2023.12.5
INFO Reading configuration /config/esphome/woda-k4.yaml...
INFO Updating https://github.com/SzczepanLeon/esphome-components.git@main
INFO Detected timezone 'Europe/Warsaw'
WARNING GPIO2 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
INFO Starting log output from 192.168.0.64 using esphome API
INFO Successfully connected to wmbus-reader @ 192.168.0.64 in 0.008s
INFO Successful handshake with wmbus-reader @ 192.168.0.64 in 0.081s
[23:43:44][I][app:102]: ESPHome version 2023.12.5 compiled on Jan  1 2024, 15:32:08
[23:43:44][I][app:104]: Project esphome.wmbus_reader version 1.0
[23:43:44][C][wifi:573]: WiFi:
[23:43:44][C][wifi:405]:   Local MAC: 0C:DC:7E:62:D1:CC
[23:43:44][C][wifi:410]:   SSID: [redacted]
[23:43:44][C][wifi:411]:   IP Address: 192.168.0.64
[23:43:44][C][wifi:413]:   BSSID: [redacted]
[23:43:44][C][wifi:414]:   Hostname: 'wmbus-reader'
[23:43:44][C][wifi:416]:   Signal strength: -42 dB ▂▄▆█
[23:43:44][C][wifi:420]:   Channel: 1
[23:43:44][C][wifi:421]:   Subnet: 255.255.255.0
[23:43:44][C][wifi:422]:   Gateway: 192.168.0.1
[23:43:44][C][wifi:423]:   DNS1: 0.0.0.0
[23:43:44][C][wifi:424]:   DNS2: 0.0.0.0
[23:43:44][C][logger:443]: Logger:
[23:43:44][C][logger:444]:   Level: VERY_VERBOSE
[23:43:44][C][logger:445]:   Log Baud Rate: 115200
[23:43:44][C][logger:447]:   Hardware UART: UART0
[23:43:44][C][captive_portal:088]: Captive Portal:
[23:43:44][C][web_server:168]: Web Server:
[23:43:44][C][web_server:169]:   Address: 192.168.0.64:80
[23:43:44][C][sntp:053]: SNTP Time:
[23:43:44][C][sntp:054]:   Server 1: '0.pool.ntp.org'
[23:43:44][C][sntp:055]:   Server 2: '1.pool.ntp.org'
[23:43:44][C][sntp:056]:   Server 3: '2.pool.ntp.org'
[23:43:44][C][sntp:057]:   Timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'
[23:43:44][C][mdns:115]: mDNS:
[23:43:44][C][mdns:116]:   Hostname: wmbus-reader
[23:43:44][V][mdns:117]:   Services:
[23:43:44][V][mdns:119]:   - _esphomelib, _tcp, 6053
[23:43:44][V][mdns:121]:     TXT: friendly_name = Woda wmbus K4
[23:43:44][V][mdns:121]:     TXT: board = nodemcu-32s
[23:43:44][V][mdns:121]:     TXT: network = wifi
[23:43:44][V][mdns:121]:     TXT: project_name = esphome.wmbus_reader
[23:43:44][V][mdns:121]:     TXT: project_version = 1.0
[23:43:44][V][mdns:119]:   - _http, _tcp, 80
[23:43:44][C][ota:097]: Over-The-Air Updates:
[23:43:44][C][ota:098]:   Address: 192.168.0.64:3232
[23:43:44][C][api:139]: API Server:
[23:43:44][C][api:140]:   Address: 192.168.0.64:6053
[23:43:44][C][api:144]:   Using noise encryption: NO
[23:43:44][C][wifi_signal.sensor:009]: WiFi Signal 'Woda K4 WiFi Signal'
[23:43:44][C][wifi_signal.sensor:009]:   Device Class: 'signal_strength'
[23:43:45][C][wifi_signal.sensor:009]:   State Class: 'measurement'
[23:43:45][C][wifi_signal.sensor:009]:   Unit of Measurement: 'dBm'
[23:43:45][C][wifi_signal.sensor:009]:   Accuracy Decimals: 0
[23:43:45][V][wifi_signal.sensor:009]:   Unique ID: 'c-wifisignal'
[23:43:45][C][wifi_info:009]: WifiInfo IPAddress 'Woda K4 IP'
[23:43:45][C][wifi_info:009]:   Icon: 'mdi:wifi'
[23:43:45][V][wifi_info:009]:   Unique ID: 'c-wifiinfo-ip'
[23:43:45][C][wifi_info:011]: WifiInfo SSID 'Woda K4 SSID'
[23:43:45][C][wifi_info:011]:   Icon: 'mdi:wifi-strength-2'
[23:43:45][V][wifi_info:011]:   Unique ID: 'c-wifiinfo-ssid'
[23:43:45][C][wmbus:416]: wM-Bus v2.4.9:
[23:43:45][C][wmbus:418]:   Clients:
[23:43:45][C][wmbus:425]:     wmbusmeters: 192.168.0.94:7011 TCP [rtl-wmbus]
[23:43:45][C][wmbus:429]:   LED:
[23:43:45][C][wmbus:430]:     Pin: GPIO2
[23:43:45][C][wmbus:431]:     Duration: 1000 ms
[23:43:45][C][wmbus:433]:   CC1101 frequency: 868.950 MHz
[23:43:45][C][wmbus:434]:   CC1101 SPI bus:
[23:43:45][C][wmbus:435]:     MOSI Pin: GPIO32
[23:43:45][C][wmbus:436]:     MISO Pin: GPIO19
[23:43:45][C][wmbus:437]:     CLK Pin:  GPIO33
[23:43:45][C][wmbus:438]:     CS Pin:   GPIO23
[23:43:45][C][wmbus:439]:     GDO0 Pin: GPIO22
[23:43:45][C][wmbus:440]:     GDO2 Pin: GPIO21
[23:43:45][C][wmbus:447]:   Available drivers:  amiplus, apator08, apator162, apatoreitn, bmeters, c5isf, compact5, dme07, elf, evo868, fhkvdataiii, hydrocalm3, hydrus, iperl, itron, izar, mkradio3, mkradio4, qheat, qwater, sharky774, topaseskr, ultrimis, unismart, vario451
[23:43:45][C][wmbus:465]:   Meter:
[23:43:45][C][wmbus:466]:     ID: 571507777 [0x22108441]
[23:43:45][C][wmbus:467]:     Type: bmeters
[23:43:45][C][wmbus:468]:     Mode: T1
[23:43:45][C][wmbus:469]:     Key: '00000000000000000000000000000000'
[23:43:45][C][wmbus:471]:     Sensor 'Woda K4 LQI'
[23:43:45][C][wmbus:471]:       Device Class: 'signal_strength'
[23:43:45][C][wmbus:471]:       State Class: 'measurement'
[23:43:45][C][wmbus:471]:       Unit of Measurement: ''
[23:43:45][C][wmbus:471]:       Accuracy Decimals: 0
[23:43:45][C][wmbus:471]:     Sensor 'woda_k4_bm'
[23:43:45][C][wmbus:471]:       Device Class: 'water'
[23:43:45][C][wmbus:471]:       State Class: 'total_increasing'
[23:43:45][C][wmbus:471]:       Unit of Measurement: 'm³'
[23:43:45][C][wmbus:471]:       Accuracy Decimals: 3
[23:43:45][C][wmbus:471]:       Icon: 'mdi:water'
[23:43:45][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=96895710 (now=96896711)
3711)
[23:44:02][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=96913030 (now=96914032)
[23:44:03][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=96913710 (now=96914710)
[23:44:03][VV][api.connection:132]: Sending keepalive PING...
[23:44:03][VV][api.service:037]: send_ping_request: PingRequest {}
[23:44:03][VV][api.service:558]: on_ping_request: PingRequest {}
[23:44:03][VV][api.service:043]: send_ping_response: PingResponse {}
[23:44:03][VV][api.service:567]: on_ping_response: PingResponse {}
[23:44:03][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=96914030 (now=96915030)
[[23:44:32][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=96943030 (now=96944031)
[23:44:33][VV][scheduler:226]: Running interval '' with interval=60000 last_execution=96884649 (now=96944649)
[23:44:33][VV][scheduler:226]: Running interval 'update' with interval=60000 last_execution=96884702 (now=96944702)
[23:44:33][V][sensor:043]: 'Woda K4 WiFi Signal': Received new state -43.000000
[23:44:33][D][sensor:094]: 'Woda K4 WiFi Signal': Sending state -43.00000 dBm with 0 decimals of accuracy
[23:44:33][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[23:44:33][V][json:058]: Size after shrink 84 bytes
[23:44:33][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 657133991
  state: -43
  missing_state: NO
}
[23:44:33][W][component:214]: Component wifi_signal.sensor took a long time for an operation (0.06 s).
[23:44:33][W][component:215]: Components should block for at most 20-30ms.
[23:45:32][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=97002710 (now=97003710)
[23:45:32][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=97003030 (now=97004030)
[23:45:33][VV][scheduler:226]: Running interval '' with interval=60000 last_execution=96944649 (now=97004649)
[23:45:33][VV][scheduler:226]: Running interval 'update' with interval=60000 last_execution=96944702 (now=97004702)
[23:45:33][V][sensor:043]: 'Woda K4 WiFi Signal': Received new state -45.000000
[23:45:33][D][sensor:094]: 'Woda K4 WiFi Signal': Sending state -45.00000 dBm with 0 decimals of accuracy
[23:45:33][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[23:45:33][V][json:058]: Size after shrink 84 bytes
[23:45:33][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 657133991
  state: -45
  missing_state: NO
}

stany IP, LQI, SSID i Wifi Signal sie aktualizują w ESPHome, natomiast sensory rssi, Total i timestamp w mqtt są puste, podobnie jak ręcznie stworzony sensor mqtt.

OFF TOPIC
Skąd ESP wie która jest godzina, skoro źródłem czasu jest sntp z polskich pul serwerów, a nie jest zdefiniowany żaden DNS?

Czy z sieci w której się znajduje ESP jesteś w stanie przeskanować otwarte porty na IP 192.168.0.94?
(to tak minimalnie na temat, bo mam wrażenie, że serwer wmbusmeters wcale nie słucha pod tym IP na porcie 7011)

Mam dostęp i mogę skanować porty. Nie zastanawiałem się skąd wie, ale tasmota też to potrafi.

@_Szczepan

Mam poranną porcję logów:

[08:24:06][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=28163 (now=29163)
[08:24:06][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=28767 (now=29767)
[08:24:06][VV][wmbus:057]: have data from CC1101 ...
[08:24:06][I][wmbus:087]: Using driver 'bmeters' for ID [0x22108441] RSSI: -52 dBm LQI: 128 Mode: T1 T: 4E44B4094184102213077AB808400530F09D98C1DB3A97A615343FC0E93F5CAF902444CEC6C9A481F7776D85918A89B22159C6C33ABE8D982600FF3B9CC0BD5ACD1BBED4B756AA937E2947536BD2B9 (79)
[08:24:06][VV][wmbus:089]: Key defined, trying to decrypt telegram ...
[08:24:06][VV][wmbus:290]: Decrypting: tpl-ci '7A' tpl-cfg '540' offset '15
[08:24:06][VV][wmbus:338]: 2F2f check after decrypting - OK
[08:24:07][D][wmbus:094]: Decrypted T : 4E44B4094184102213077AB80840052F2F0C1381000000046D172803310F170A232C29110000000200000200000200000200000200000200000200000200005ACD1BBED4B756AA937E2947536BD2B9 (79)
[08:24:07][VV][wmbus-drivers:041]: Converting BCD to INT
[08:24:07][VV][wmbus-drivers:210]: Found register '0C13' with '81'->'0.081000'
[08:24:07][VV][wmbus-drivers:035]: Value added to map
[08:24:07][V][sensor:043]: 'Woda K4 LQI': Received new state 128.000000
[08:24:07][D][sensor:094]: 'Woda K4 LQI': Sending state 128.00000  with 0 decimals of accuracy
[08:24:07][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[08:24:07][V][json:058]: Size after shrink 72 bytes
[08:24:07][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 4021715107
  state: 128
  missing_state: NO
}
[08:24:07][VV][wmbus:125]: Publishing 'total_water_m3' = 0.0810
[08:24:07][V][sensor:043]: 'woda_k4_bm': Received new state 0.081000
[08:24:07][D][sensor:094]: 'woda_k4_bm': Sending state 0.08100 m³ with 3 decimals of accuracy
[08:24:07][VV][wmbus:192]: will send telegram to clients ...
[08:24:07][VV][wmbus:231]: Will send RTLWMBUS telegram to 192.168.0.94:9022 via TCP
[08:24:07][W][component:214]: Component wmbus took a long time for an operation (0.16 s).
[08:24:07][W][component:215]: Components should block for at most 20-30ms.
[08:24:07][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=29163 (now=30255)
[08:24:07][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=29767 (now=30769)
[08:24:08][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=30163 (now=31163)
[08:24:08][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=30767 (now=31767)
[08:24:09][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=31163 (now=32165)
[08:24:09][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=31767 (now=32768)
[08:24:10][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=32163 (now=33164)
[08:24:10][VV][scheduler:226]: Running interval '' with interval=10000 last_execution=23642 (now=33642)
[08:24:10][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=32767 (now=33767)
[08:24:11][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=33163 (now=34164)
[08:24:11][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=33767 (now=34767)
[08:24:12][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=34163 (now=35164)
[08:24:12][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=34767 (now=35767)
[08:24:13][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=35163 (now=36163)
[08:24:13][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=35767 (now=36767)
[08:24:14][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=36163 (now=37163)
[08:24:14][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=36767 (now=37767)
[08:24:15][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=37163 (now=38163)
[08:24:15][VV][scheduler:226]: Running interval 'update' with interval=60000 last_execution=4294945460 (now=38172)
[08:24:15][V][sensor:043]: 'Woda K4 WiFi Signal': Received new state -41.000000
[08:24:15][D][sensor:094]: 'Woda K4 WiFi Signal': Sending state -41.00000 dBm with 0 decimals of accuracy
[08:24:15][V][json:038]: Attempting to allocate 512 bytes for JSON serialization
[08:24:15][V][json:058]: Size after shrink 84 bytes
[08:24:15][VV][api.service:140]: send_sensor_state_response: SensorStateResponse {
  key: 657133991
  state: -41
  missing_state: NO
}
[08:24:15][VV][scheduler:226]: Running interval 'update' with interval=1000 last_execution=37767 (now=38767)

w rejestrze encji nie ma rekordu “woda_k4_bm” ani “total_water_m3”, nie ma także takich komunikatów w mqtt.

Edit:
Zakomentowałem sekcję clients.
I log w ogóle się nie zmienił…

Edit2:

Problem rozwiązany.

Sekcja clients nie jest potrzebna, a sensor pojawia się w ESPhome.
Jak to zrobić?

  - platform: wmbus
    meter_id: 0x22108441
    type: bmeters
    add_prefix: false
    key: "00000000000000000000000000000000"
    lqi:
      name: "Woda K4 LQI"
    total_water_m3:
      id: "woda_k4_bm"
      unit_of_measurement: "m³"
      name: "Zużycie w bieżącym miesiącu"

dodałem name i unit of measurement.

Zwróciłem na to uwagę, bo nie masz skonfigurowanych DNSów, więc IP serwerów NTP nie są w stanie się rozwiązać z nazw pul.
Bo generalnie w prawidłowo skonfigurowanej sieci działanie NTP nie jest jakimś cudem (Tasmota też tego używa). Ale tu się dzieje coś co nie jest udokumentowane…

  1. Wyjaśnienie konfiguracji:
  • sekcje sensor i client są od siebie niezależne!
    – client wysyła cały odebrany telegram na zdefiniowany adres IP oraz port w wybranym formacie oraz po wybranym protokole
    – sensor definiuje, który driver wykorzystać do zdekodowania informacji z telegramu i na samym końcu wysłać zdekodowane dane bezpośrednio do HomeAssistant po jego API
  1. Coś masz skopane w tym co podsyłasz.
    W YAMLu i w dyskusji piszesz o porcie 7011 ale w ostatnich logach widzę próbę wysłania na port 9022
[23:43:45][C][wmbus:416]: wM-Bus v2.4.9:
[23:43:45][C][wmbus:418]:   Clients:
[23:43:45][C][wmbus:425]:     wmbusmeters: 192.168.0.94:7011 TCP [rtl-wmbus]
[08:24:07][VV][wmbus:231]: Will send RTLWMBUS telegram to 192.168.0.94:9022 via TCP

Krok po kroku:
a) wywal MQTT – jak pokazuje życie nie działa to dobrze
b) wybierz, jak chcesz wysyłać telegramy/dane do HA
c) polecam zacząć tylko z sekcją sensor
d) przygotuj YAMLa
e) wywal istniejące ESPHome z HA (te dotyczące tego YAMLa)
f) zaprogramuj ESPHome
g) pozwól aby HA wykrył ESPHome i jego encje
h) poczekaj na dane wM-Bus


Wracając do portu klienta to u mnie działa:
Konfiguracja:

[12:13:50][C][wmbus:416]: wM-Bus v2.4.9:
[12:13:50][C][wmbus:418]:   Clients:
[12:13:50][C][wmbus:425]:     wmbusmeters: 192.168.0.94:7011 TCP [rtl-wmbus]

Log:

[12:13:55][VV][wmbus:057]: have data from CC1101 ...
[12:13:55][D][wmbus:188]: Meter ID [0x00B8DC58] RSSI: -67 dBm LQI: 135 Mode: T1 not found in configuration T: 1944xxxxxxxxx (yy)
[12:13:55][VV][wmbus:192]: will send telegram to clients ...
[12:13:55][VV][wmbus:231]: Will send RTLWMBUS telegram to 192.168.0.94:7011 via TCP

rozbieżność portów wynika tylko z tego, że przeinstalowałem dodatek wmbusmeters i zostawiłem a ustawieniach domyślnych, żeby zweryfikować poprawność działania portów.
Wiem, że to są niezależne funkcje. Wolałem od początku mieć to natywnie obsłużone przez ESPhome, ale skoro nie działało, to poszedłem za radą i zacząłem z wmbusmeters.
MQTT odpuściłem już na początku, ale przecież tym kanałem nadaje wmbusmeters, więc ta zmienna też musiała być i po części zaburzała obraz.

Obeszło się bez usuwania nakładki - po prostu sensor się zaktualizował po dopisaniu linii name i uom.

Pomoc była cenna, jednak ostatecznie pomogłem sobie sam - mam nadzieję, że w przyszłości komuś przyda się te kilka postów.

A dla wszystkich byłoby lepiej, gdyby sekcja o bmeters na githubie projektu została wzbogacona o te brakujące w konfiguracji linie.

dodatkowo warto wspomnieć, że nie wszystkie wersje nakładek działają - ja już wiem, że v 14 oraz OMS v8 na pewno nie.

Ale to MQTT po stronie ESPHome zamula a nie MQTT po stronie HA.
Nic związane z MQTT nie musi byc po stronie ESPHome niezależnie czy masz client czy sensor.

To Twoja konfiguracja zawierała błędy. name i unit_of_measurment są obecne dla każdego sensora i nie muszą być dopisywane jawnie w YAMLu
A dokładniej to sam ESPHome podczas walidacji sprawdza czy masz zdefiniowane albo id albo name. Następnie na podstawie tego co ma tworzy to co nie ma :D. Czyli id z name albo name z id. Tak czy inaczej nie jest możliwe uzyskanie binarki bez zdefiniowanego name.

Musiałeś mieć jakiś problem pomiędzy HA a ESPHome (albo raczej w HA z encjami).

Zawsze możesz sam zrobić push request albo z dokumentacją albo z dodatkową funkcjonalnością. Gdzie jest kod podałem parę postów wcześniej.

1 polubienie

U mnie działa… na pewno :slight_smile:

1 polubienie

Widzę, że niektóre v14 również działają,
Zdaje się, że Bmeters sprzedaje różne konfiguracje 0 w tym samym sklepie kupiłem kilka wodomierzy, niby wersja ta sama, ale jakimś cudem jedne dają otwarte telegramy, a inne nie.

@_Szczepan Tak jest na stronie:

  - platform: wmbus
    meter_id: 0xAB125432
    type: bmeters
    key: "00004000000300000500001000000600"
    lqi:
      name: "My lqi"
    total_water_m3:
      id: "my_hot_water"
      filters:
        - offset: 325.0

i zadziałało dopiero po dodaniu wspomnianych linii.
Może to ESPhome, a może jednak potrzebne name a nie id? Z jakiegoś powodu nie działało - jako autor projektu pewnie jesteś ciekawy, więc napisałem co zauważyłem.

Co do push request, to chyba nie ma z czym startować - skoro to wina kodowania nakładek, do czego przyznaje się firma Bmeters…

Ja wiem, że MQTT powoduje problem po stronie ESPhome, ale z logów to nie wynika.
Na szczęście wyłączenie mqtt ze skryptu pomaga.

I jedno i drugie istnieje – to pewnie coś po stronie HA, albo na styku z ESPHome (możne jakaś grudniowa aktualizacja). Na 99.99% nie jest winą komponentu.

Zawsze możesz dodać obsługę starych ramek bmetersa.

Chciałbym dodać, ale niestety pojedyncze są za krótkie, a ich kombinacje nie doprowadziły jak na razie do znalezienia właściwego modus operandi.
Dlatego uważam, że powinna być adnotacja o ograniczonym wsparciu dla bmeters.

Ewentualnie możemy w kooperacji znaleźć sposób na odczyt.
Co Ty na to?

Edit:
Zacząłem się im przyglądać i są pewne prawidłowości.
Postaram się zidentyfikować sekcje zawierające dane o stanie.
Na razie mam numer nakładki, producenta i długość.

Edit2: analizując telegramy z poszczególnych nakładek dochodzę do wniosku, że one są po prostu nieaktywowane - nadają komunikaty o zbieżnej strukturze:
0C 46 B409 potem numer nakładki 13 0778 bity po kolei w każdej kolejnej linii 0A:

0C 46 B409 4084 1022 13 0778 AD 0A
0C 46 B409 4084 1022 13 0778 AE 0A
0C 46 B409 4084 1022 13 0778 AF 0A
0C 46 B409 4084 1022 13 0778 B0 0A
0C 46 B409 4084 1022 13 0778 B2 0A
0C 46 B409 4084 1022 13 0778 B4 0A

tutaj nakładka 221008440.

Bity zmieniają się niezależnie od stanu wodomierza. Wynika z tego, że dopiero trzeba nakładkę zaprogramować, aby wiedziała jaki jest stan i timestamp.

Co ciekawe kupiłem w tym samym sklepie kilka sztuk i jedna działa, a reszta nie.
Kupiłem też używane nakładki i także podają takie telegramy - czyli być może ktoś je wcześniej zresetował.

Bmeters ma do tego software - licencja kosztuje 560 PLN i może nawet bym się pokusił o zakup, ale nie wiem czy ruszy z CC1101, bo mają swój moduł USB i chcą za niego 1460. Razem to już za drogo.

Jutro zadzwonię do nich i jeśli mi nie pomogą, to zwrócę bmeters i poszukam apatora albo czegoś innego.

Wcześniej umieściłeś jakąś ramkę w starym formacie, taką którą wmbusmeters dekodował i od ręki mozna zrobic pusch requesta.

W przypadku każdej odebranej a nie zdekodowanej ramki (przez komponent) procedura postępowania jest taka sama:

  1. sprawdzamy czy wmbusmeters ją dekoduje
  2. jak tak to możemy pokusić się o dodanie nowego drivera do komponentu
  3. jak nie to można stworzyc ticket na wmbusmeters z telegramem, odczytem i prośbą o dodane obslugi itp

Osobiście polecam Maddalene EVO. Jak interesuje Ciebie nówka to spokojnie dostaniesz w PL nawet zaprogramowaną pod Twoje wymagania w zamówieniu super detalicznym - od 1 sztuki.

btw
Jak wklejasz tu ramki to najlepiej jako odnośnik do dekodera wmbusmeters. Np. tak:
https://wmbusmeters.org/analyze/0c46B40940841022130778ad0a0000

Taki mały tips dla krótkich ramek - aby wmbusmeters zadziałał wystarczy dopisać parę zer na koniec.

Nie wiem jakim cudem ta ramka się pojawiła - to było tylko raz, niestety.
wklejam w takim formacie jak podaje log - nie są to długie ciągi jak przy działających telegramach, tylko 6 krótkich jeden po drugim, dlatego wmbusmeters nic nie wypluwa. Krótkie dekoduje tylko z pierwszej części - 0C46B409, ale producenta już znamy, więc to niczego nie wnosi.
Żeby coś wyszło, to trzeba wklejać te krótkie telegramy dwukrotnie (jest więcej znaków) - jak tutaj, albo uzupełniać zerami (jak Ty robisz).

A z ticketem spróbuję. Pewnie znacznie szybciej ogarną temat. Dzięki za sugestię!

Z tych krótkich nic nie wycisniesz (żadnego pomiaru).