Zdalny odczyt licznika AMIplus z HANplus (m-bus)
Tags: tauron, amiplus, hanplus, licznik
Published: 2022-06-02 15:41:15

**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:

```bash
$ sudo apt install rtl-sdr libncurses-dev librtlsdr-dev mosquitto-clients mosquitto
```

### 2. Pobieramy i instalujemy pakiety i repozytorium GIT:

```bash
$ 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
```
```bash
$ 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`:

```bash
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`:

```bash
$ sudo mkdir -p /var/log/wmbusmeters/meter_readings
```

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

```bash
name=amiplusNUMERLICZNIKA
type=amiplus
id=ADRES_PORTU_KOMUNIKACYJNEGO_Z_APLIKACJI_ELICZNIK
key=KLUCZ_Z_APLIKACJI_ELICZNIK
```

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

```bash
#!/bin/sh
/usr/bin/mosquitto_pub -h localhost -t home/tauron/state -m "$METER_JSON"
```

### 7. Uruchamiamy serwer MQTT:

```bash
$ sudo systemctl enable mosquitto
$ sudo systemctl start mosquitto
```

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

```bash
$ 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:

```ini
#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:

```bash
$ 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:

```yaml
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"

```

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