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
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
$ 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
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
4. Tworzymy katalogi dla wmbusmeters
:
$ sudo mkdir -p /var/log/wmbusmeters/meter_readings
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
6. Tworzymy skrypt /usr/local/bin/wmbus-mqtt
:
#!/bin/sh
/usr/bin/mosquitto_pub -h localhost -t home/tauron/state -m "$METER_JSON"
7. Uruchamiamy serwer MQTT:
$ sudo systemctl enable mosquitto
$ sudo systemctl start mosquitto
8. Uruchamiamy odczyty i sprawdzamy, czy nie ma żadnych błędów:
$ sudo systemctl restart wmbusmeters
$ sudo systemctl status wmbusmeters
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
9. Możemy się połączyć przez MQTT, aby sprawdzić odczyty:
$ mosquitto_sub -h localhost -F "%J"--pretty -t 'home/tauron/state
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"
Top comments (1)
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ć:
i w punkcie "9. Możemy się połączyć przez MQTT, aby sprawdzić odczyty:" dodać ` na końcu polecenia.