DEV Community

Adam Mateusz Brożyński
Adam Mateusz Brożyński

Posted on

Zdalny odczyt licznika AMIplus z HANplus (m-bus)

Poniższe instrukcje pozwalają na pobieranie odczytów licznika AMIplus w Ubuntu za pomocą wireless m-bus (HANplus) w czasie rzeczywistym.

Do zdalnych odczytów potrzebujemy dekodera DVB-T (wystarczy USB) z anteną, opartego na RTL2832U, RTL2838 i innych kompatybilnych.

1. Instalujemy potrzebne pakiety:

$ sudo apt install rtl-sdr libncurses-dev librtlsdr-dev mosquitto-clients mosquitto
Enter fullscreen mode Exit fullscreen mode

2. Pobieramy i instalujemy pakiety i repozytorium GIT:

$ cd /tmp
$ git clone https://github.com/xaelsouth/rtl-wmbus.git
$ cd rtl-wmbus
$ make
$ sudo cp build/rtl_wmbus /usr/bin/rtl_wmbus
$ cd /tmp
Enter fullscreen mode Exit fullscreen mode
$ git clone https://github.com/weetmuts/wmbusmeters.git
$ cd wmbusmeters
$ ./configure
$ make
$ sudo make install
$ sudo systemctl daemon-reload
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger
Enter fullscreen mode Exit fullscreen mode

3. Edytujemy /etc/wmbusmeters.conf:

device=rtlwmbus:868.9M
logtelegrams=false
format=json
meterfiles=/var/log/wmbusmeters/meter_readings
meterfilesaction=overwrite
logfile=/var/log/wmbusmeters/wmbusmeters.log
shell=/usr/local/bin/wmbus-mqtt
Enter fullscreen mode Exit fullscreen mode

4. Tworzymy katalogi dla wmbusmeters:

$ sudo mkdir -p /var/log/wmbusmeters/meter_readings
Enter fullscreen mode Exit fullscreen mode

5. Wpisujemy dane licznika do pliku /etc/wmbusmeters.d/amiplusNUMERLICZNIKA:

name=amiplusNUMERLICZNIKA
type=amiplus
id=ADRES_PORTU_KOMUNIKACYJNEGO_Z_APLIKACJI_ELICZNIK
key=KLUCZ_Z_APLIKACJI_ELICZNIK
Enter fullscreen mode Exit fullscreen mode

6. Tworzymy skrypt /usr/local/bin/wmbus-mqtt:

#!/bin/sh
/usr/bin/mosquitto_pub -h localhost -t home/tauron/state -m "$METER_JSON"
Enter fullscreen mode Exit fullscreen mode

7. Uruchamiamy serwer MQTT:

$ sudo systemctl enable mosquitto
$ sudo systemctl start mosquitto
Enter fullscreen mode Exit fullscreen mode

8. Uruchamiamy odczyty i sprawdzamy, czy nie ma żadnych błędów:

$ sudo systemctl restart wmbusmeters
$ sudo systemctl status wmbusmeters
Enter fullscreen mode Exit fullscreen mode

W Debianie są problemy z uruchomieniem nasłuchu jeśli w pliku lib/systemd/system/wmbusmeters.service jest wpisany użytkownik i grupa wmbusmeters. W takim przypadku komentujemy poniższe linijki:

#User=wmbusmeters
#Group=wmbusmeters
#ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /var/log/wmbusmeters
#ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /run/wmbusmeters
Enter fullscreen mode Exit fullscreen mode

9. Możemy się połączyć przez MQTT, aby sprawdzić odczyty:

$ mosquitto_sub -h localhost -F "%J"--pretty -t 'home/tauron/state
Enter fullscreen mode Exit fullscreen mode

10. Jeśli chcemy dodać licznik do Home Assistanta, musimy zainstalować integrację MQTT, połączyć się z localhost i utworzyć odpowiednie sensory w configuration.yaml, które później będzie można dodać do kokpitu:

mqtt:
 sensor:
   - name: "Energy counter name"
     state_topic: "home/tauron/state"
     value_template: "{{ value_json.name }}"
   - name: "Energy counter id"
     state_topic: "home/tauron/state"
     value_template: "{{ value_json.id }}"
   - name: "Energy total consumption"
     state_topic: "home/tauron/state"
     value_template: "{{ value_json.total_energy_consumption_kwh }}"
     unit_of_measurement: "kWh"
   - name: "Energy total production"
     state_topic: "home/tauron/state"
     value_template: "{{ value_json.total_energy_production_kwh }}"
     unit_of_measurement: "kWh"
   - name: "Energy current consumption"
     state_topic: "home/tauron/state"
     value_template: "{{ value_json.current_power_consumption_kw }}"
     unit_of_measurement: "kW"
   - name: "Energy current production"
     state_topic: "home/tauron/state"
     value_template: "{{ value_json.current_power_production_kw }}"
     unit_of_measurement: "kW"

Enter fullscreen mode Exit fullscreen mode

10. Po zapisaniu konfiguracji w HA należy ją sprawdzić w Narzędziach developerskich i uruchomić ponownie.

Top comments (1)

Collapse
 
niebochod profile image
niebochod

Bardzo fajny opis! Z powodzeniem wykorzystałem dla openHAB-a na openhabian z modyfikacjami w punkcie 10 i 11. Dzięki!!

W "6. Tworzymy skrypt /usr/local/bin/wmbus-mqtt" można też dodać:

sudo chown a+x /usr/local/bin/wmbus-mqtt`
Enter fullscreen mode Exit fullscreen mode

i w punkcie "9. Możemy się połączyć przez MQTT, aby sprawdzić odczyty:" dodać ` na końcu polecenia.