WMBusmeters odczyt licznika wody IZAR RC 868 I R4 PL Diehl (AI-Speaker - Home Assistant)

Był licznik gazu to teraz opisze jak dodałem do HA licznik wody.
Przymierzałem się długo ale dopiero @Cezary.K naprowadził mnie jak zacząć, do tego wskazał sprzęt do odczytu za 20zł, jeszcze raz dzięki @Cezary.K i szacunek :+1: :clap:
Zasada działania jest prosta, tuner dvbt (Hardware) zbiera dane z licznika i przekazuje informacje do MQTT (Software) a stamtąd trafiają do Home Assistant.

HARDWARE

Ja użyłem tuner dvbt:
NOT ONLY TV LV5T DELUXE
image
Jaki można użyć inny tuner a jaki nie będzie działa na pewno chętnie podpowie @Cezary.K.

SOFTWARE
Jak postawić serwer wmbusmeters opisane jest na stronie projektu:
weetmuts/wmbusmeters: Read the wireless mbus protocol to acquire utility meter readings. (github.com)

Generalnie serwer wmbusmeters można postawić na

  1. raspberry

  2. jak adon do Home Assistant

  3. Docker

Ja mam serwer Synolgy i w przeciwieństwie do @jolka bardzo lubię kontenery więc zrobiłem na dockerze :wink:

Mój Synology pracuje na DSM 7 i byłem pewien, że będzie problem ze sterownikami do tuner dvbt ale okazało się że jest rozpoznawany przez DSM 7 bez żadnych problemów:

Jak postawić serwer wmbusmeters w kontenerze jest opisane tutaj:
weetmuts/wmbusmeters - Docker Image | Docker Hub
Po zainstalowaniu dockera z wmbusmeters programie File Station będą następujące foldery:
image
Do folderu etc
image
wrzucam pliki wmbusmeters.conf z taką konfiguracją:

loglevel=debug
device=auto
logtelegrams=false
ignoreduplicates=false
format=json
meterfiles=/wmbusmeters_data/logs/meter_readings
meterfilesaction=overwrite
logfile=/wmbusmeters_data/logs/wmbusmeters.log
shell=/usr/bin/mosquitto_pub -h IP_SERWERA -t wmbusmeters/$METER_ID -m "$METER_JSON"

lub jak mamy hasło do MQTT to ostania linijka powinna wyglądać tak:

shell=/usr/bin/mosquitto_pub -h IP_SERWERA -u USER_MQTT -P HASŁO_MQTT -t wmbusmeters/$METER_ID -m "$METER_JSON"

Mój licznik wysyła dane co 8sekund.
Jeżeli parametr ignoreduplicates=false ustawimy na false to do MQTT trafi każdy odczyt co 8sekund.
Jeżeli parametr ignoreduplicates=true ustawimy na true to do MQTT trafi odczyt tylko w przypadku zmiany stanu (np. ktoś odkręci wodę)
Powyższa konfiguracja nie jest docelowa, służy wyszukaniu naszego licznika.
Przed przystąpieniem do szukania najlepiej być jak najbliżej licznika.
Uruchamiamy kontener:


Następnie przechodzimy do File Station i otwieramy plik wmbusmeters.log
image
i patrzymy co wypluje.
Żeby zobaczyć aktualne logi trzeba zamykac i otwierać ten plik, niestety nie udało mi się uruchomić konsoli dla wmbusmetera.
U mnie w logach pojawił się wpis:

Received telegram from: 2140eeee
          manufacturer: (SAP) Sappel (0x4c30)
                  type: Water meter (0x07)
                   ver: 0x00
                device: rtlwmbus[00000001]
                  rssi: 6 dBm
                driver: izar

to znaczy, że został znaleziony licznik (id 2140eeee)
i najważniejsze, że nie informacji encrypted (jak na screenie niżej) co oznacza że mój liczniki nie jest zakodowany kluczem
image

Zatrzymujemy kontener i w folderze wmbusmeters.d

image

tworzymy plik z taką konfiguracją:

name=Licznik_wody
type=izar
id=2140eeee
key=

gdzie id to numer naszego znalezionego licznika
Uruchamiamy kontener i teraz w logach w pliku wmbusmeters.log powinismy zobaczyć:

(shell) env "METER_ID=2140eeee"
(shell) env "METER_NAME=izar_2140eeee"
(shell) env "METER_MEDIA=water"
(shell) env "METER_TYPE=izar"
(shell) env "METER_TIMESTAMP=2022-09-15T18:20:56Z"
(shell) env "METER_TIMESTAMP_UTC=2022-09-15T18:20:56Z"
(shell) env "METER_TIMESTAMP_UT=1663266056"
(shell) env "METER_TIMESTAMP_LT=2022-09-15 20:20.56"
(shell) env "METER_DEVICE=rtlwmbus[00000001]"
(shell) env "METER_RSSI_DBM=12"
(shell) env "METER_PREFIX=C51DA"
(shell) env "METER_SERIAL_NUMBER=050552"
(shell) env "METER_TOTAL_M3=191.631"
(shell) env "METER_LAST_MONTH_TOTAL_M3=184.72"
(shell) env "METER_LAST_MONTH_MEASURE_DATE=2022-08-31"
(shell) env "METER_REMAINING_BATTERY_LIFE_Year=14"
(shell) env "METER_CURRENT_ALARMS=underflow"
(shell) env "METER_PREVIOUS_ALARMS=no_alarm"
(shell) env "METER_TRANSMIT_PERIOD_Second=8"
(shell) env "METER_MANUFACTURE_YEAR=2021"

I te dane powinny pojawić się na MQTT a stamtąd przekazujemy je do HA np. za pomocą wpisu w configuration.yaml:

mqtt:
  sensor:
    - name: Licznik Wody Total
      state_topic: 'wmbusmeters/2140e6b6'
      json_attributes_topic: 'wmbusmeters/2140e6b6'
      unit_of_measurement: 'm³'
      state_class: total_increasing
      device_class: water
      value_template: "{{ value_json.total_m3 }}"
      icon: "mdi:hand-water"
    - name: Licznik Wody Last Month Total
      state_topic: 'wmbusmeters/2140eeee'
      json_attributes_topic: 'wmbusmeters/2140eeee'
      unit_of_measurement: 'm³'
      value_template: "{{ value_json.last_month_total_m3 }}"
      icon: "mdi:hand-water"  
    - name: Licznik Wody Last Month Measure Date
      state_topic: 'wmbusmeters/2140eeee'
      json_attributes_topic: 'wmbusmeters/2140eeee'
      value_template: "{{ value_json.last_month_measure_date }}" 
      icon: "mdi:calendar"
    - name: Licznik Wody Current Alarms
      state_topic: 'wmbusmeters/2140eeee'
      json_attributes_topic: 'wmbusmeters/2140eeee'
      value_template: "{{ value_json.current_alarms }}"
      icon: "mdi:alarm-light-outline"    
    - name: Licznik Wody Previous Alarms
      state_topic: 'wmbusmeters/2140eeee'
      json_attributes_topic: 'wmbusmeters/2140eeee'
      value_template: "{{ value_json.previous_alarms }}"
      icon: "mdi:alarm-light-outline" 
    - name: Licznik Wody RSSI
      state_topic: 'wmbusmeters/2140eeee'
      json_attributes_topic: 'wmbusmeters/2140eeee'
      value_template: "{{ value_json.rssi_dbm }}"
      icon: "mdi:access-point-network"

efekt taki:

Jak wszystko działa to optymalizujemy działanie serwera aby nie obciążać Synology.
Moje logi ze znalezienia licznika były takie:

Received telegram from: 2140eeee
          manufacturer: (SAP) Sappel (0x4c30)
                  type: Water meter (0x07)
                   ver: 0x00
                device: rtlwmbus[00000001]
                  rssi: 6 dBm
                driver: izar

więc ostateczna konfiguracja jest taka:

loglevel=normal
device=rtlwmbus[00000001]:t1
listento=t1
logtelegrams=false
ignoreduplicates=true
format=json
meterfiles=/wmbusmeters_data/logs/meter_readings
meterfilesaction=overwrite
logfile=/wmbusmeters_data/logs/wmbusmeters.log
shell=/usr/bin/mosquitto_pub -h IP_SERWERA -t wmbusmeters/$METER_ID -m "$METER_JSON"

lub jak masz hasło do MQTT to ostania linijka powinna wyglądać tak:

shell=/usr/bin/mosquitto_pub -h IP_SERWERA -u USER_MQTT -P HASŁO_MQTT -t wmbusmeters/$METER_ID -m "$METER_JSON"

wstaw swoje IP serwera w miejsce IP_SERWERA
wstaw swoje nazwę użytkownika dla MQTT w miejsce USER_MQTT
wstaw swoje hasło do MQTT w miejsce HASŁO_MQTT

4 polubienia

W przypadku natywnej instalacji HA (HAOS, np. na RPi) jest jeszcze prościej, instalujesz add-on z repozytorium GitHub - wmbusmeters/wmbusmeters: Read the wired or wireless mbus protocol to acquire utility meter readings. konfigurujesz przez GUI (jest nawet enable_mqtt_discovery więc encje w HA pojawiają sie automatycznie), uruchamiasz i cieszysz się zdalnym odczytem liczników, w moim przypadku licznika wody z nakładką Apator, licznika mojego i sąsiada :grin:.

Sprawdź czy również w nocy bo nakładki Apator po godzinach pracy raportują bardzo rzadko. Wynika to z ich konfiguracji przez dostawcę, zakłada on, że odczyty do rozliczeń są wykonywane w godzinach pracy (pn - pt w godzinach 7-17). Z tego powodu odczyty stanu licznika wieczorami i w weekendy są odczytywane z opóźnieniem.

Trochę jest zajęty aby podejść do tego ale proponuję zajrzeć na forum https://forum.arturhome.pl, tam temat był kilka razy poruszany.

A z wodomierzami typu “JS90-2,5-02” marki Apator Powogaz da się coś zrobić?

A jak nie spróbuje to się nie przekona…

To jest sam wodomierz mechaniczny, a dane wysyła nakładka WMBus - masz jakąś?

Niestety nie mam żadnej nakładki :frowning:
A wodomierz nie jest z serii Smart, więc nie wiem czy nawet jak bym zakupił nakładkę WMBus to czy by pasowała.

Jeśli dobrze pamiętam pasowałaby, on ma sprzęg magnetyczny, możesz też poszukać dokumentacji technicznej to się upewnisz.
Jakkolwiek modyfikacje zaplombowanego licznika musisz przeprowadzić w uzgodnieniu z dostawcą wody, jeśli to twój własny podlicznik, z którego się nie rozliczasz to oczywiście możesz robić co chcesz.
(prawdopodobnie używane nakładki widziałem po 40zł)

PS Pewnie już gdzieś to było omawiane, ale jest projekt na bazie modułów ESP32-Cam służący do przechwytywania odczytów z liczników mechanicznych metodą OCR (zupełnie o nim zapomniałem, a mam prawdopodobnie odpowiedni sprzęt to może przyjdzie czas na eksperymenty)

1 polubienie

@damu a może lepszym (tańszym) rozwiązaniem będzie dla Ciebie:

Tu masz licznik za 90zl
https://www.olx.pl/d/oferta/nowe-wodomierze-metron-maddalena-impulsator-zdalny-odczyt-dn15-dn20-CID628-IDkVODk.html

Opisałem jak uruchomić ciekawy linuxowy system z KODI CoreELEC na bramce DEV1 i dać jej nowe życie z Docker jako natywnym dodatkiem.

CoreELEC pozwala na używanie dodatku w postaci Docker po SSH. Tuner DVB-T rozpoznany w nim bez problemów

CoreELEC:~/docker/wmbusmeters # docker -v
Docker version 19.03.15, build 99e3ed89195c4e551e87aad1e7453b65456b03ad
CoreELEC:~/docker/wmbusmeters # lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 1f4d:c803 G-Tek Electronics Group NotOnlyTV (Lifeview) LV5TDLX DVB-T [RTL2832U]
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
CoreELEC:~/docker/wmbusmeters # 

Utworzyłem katalog wmbusmeters

CoreELEC:~/docker/wmbusmeters # pwd
/storage/docker/wmbusmeters
CoreELEC:~/docker/wmbusmeters # 

I stworzyłem kontener za pomocą komendy dockera:

docker run -d --privileged \
    --name=wmbusmeters \
    --restart=always \
    -v /etc/localtime:/etc/localtime:ro \
    -v /storage/docker/wmbusmeters:/wmbusmeters_data \
    -v /dev/:/dev/ \
    weetmuts/wmbusmeters

Pozostałe kroki konfiguracji wmbusmeters można wykonać w/g wskazówek @Tomasz

Cześć

Rozumiem że na samej @jolka sie nie da tego uruchomić? Musi być dodatkowy jeszcze serwer który będzie pobierał te dane i udostępniał?

Mi się znudziło próbowanie kompilowania tego w Android → Termux → proot-distro → ubuntu. Brakuje mi skutecznego przekazania urządzenia z Android do rtl-wmbus. A jako że nie mam nic w okolicy do odczytu, to nie walczę już z tym na DEV1.

Rozumiem, ja tego nawet nie ogarniam za ‘malutki’ jestem na to :stuck_out_tongue:
Dzięki za info.

Dochodzę do wniosku przy rozkminianiu różnych ciekawych rozwiązań open source, że bramka AIS jest dobra z Androidem do multimediów i HA Core ale w domu potrzebuję i tak serwera z Docker. Większość projektów obecnie opiera się na konteneryzacji oprogramowania. Dlatego TV BOX z CoreELEC, który ma docker’a jest przy tym (moim zdaniem) świetnym wyborem, przy 4W poboru prądu i swojej multimedialnej funkcjonalności. Ciekawe jak by tak skonteneryzować projekt AIS :wink:

1 polubienie

Teraz widziałem Twój inny post o TV BOX z CoreELEC i jeśli dobrze przeczytałem to tam też można postawić HA. A skoro tak to po co jeszcze AIS ?

A widzisz, bo lubię wydawać komendy po polsku i lokalnie. Gadam do zegarka i mam sentyment do tego projektu. To co otrzymałem po wyjęciu z pudełka bramki DEV inni początkujący z HA osiągali po miesiącach, może na obecnym etapie rozwoju HA będą to tygodnie. Dziś jestem na innym poziomie zrozumienia jak to wszystko działa i nadal uważam, że próg wejścia w świat HA jest nieco niższy z AI-Speaker. Chociaż wsparcie już nie tak intensywne jak na początku i pojawiają się nowe ograniczenia.

Jest jeszcze inna kwestia. HA można postawić na wiele sposobów. Te sposoby będą się jednak różnić dość znacznie. Stawianie HA jako kontener i każdy z dodatków jako osobny kontener wiąże się ze świadomym zarządzanie w Docker. Należy znać te środowisko aby nie mieć problemów z systemem.
Na początek polecam naukę z HA instalowanym jako system operacyjny HAOS, w nim najtrudniej się coś psuje.

3 polubienia

Polecam HAOS np pod VBox, można sobie eksperymentować :slight_smile:

Udało mi się uruchomić na malince HA i WMBuster też w końcu!!! Ale dane mam kodowane :frowning:

Jaki liczniki?
Po czym wnioskujesz że kodowany?
Pokaż logi.

spróbuj tak:

name=Licznik_wody
type=twoj typ licznika lub auto
id=twoje_id_licznika
key=

albo tak:

name=Licznik_wody
type=twoj typ licznika lub auto
id=twoje_id_licznika
key=00000000000000000000000000000000

Bo tak wyglada log:

Received telegram from: 03990112
          manufacturer: (APA) Apator, Poland (0x601)
                  type: Water meter (0x07) encrypted
                   ver: 0x05
                device: rtlwmbus[00000001]
                  rssi: 49 dBm
                driver: apator162

A co masz w logach po stworzeniu pliku konfiguracyjnego jak niżej (ten plik trzeba wrzucić do folderu wmbusmeters.d)

name=Licznik_wody
type=apator162
id=03990112
key=

?