DBNet for HomeAssistant

Integrace AMIT regulátorů do systému HomeAssistant.

AMIT používá proprietární protokol pro komunikaci s PLC nazývaný DBNet. Ten je založený na UDP protokolu ve stylu client/server, kdy jednotlivá PLC jako klienti mají IP:port a přiřazenou DBNet adresu. Je tedy nutné implementovat knihovnu pro zpřístupnění proprietárního protokolu dalším aplikacím. To zajišťuje knihovna dbnet2 napsaná v C++ a obsahuje jednak command line dbnet2_client tak knihovnu libdbnet2, pomocí které lze implementovat obecné klienty i servery.

HomeAssistant (Hass) naprogramován v Pythonu a běžně běží např. na Raspberry PI (RPI) na ARM64 architektuře. Binární knihovny je tedy nutné zkompilovat pro tuto architekturu. Spolupracující zařízení musí být integrována a umístěna jako podadreář zdrojových kódů homeassistant/components.

Instalace

Nové verze HomeAssistant 0.116+ požadují Python 3.8 ale pokud je na RPI instalovaný Debian Buster, který používá standardně Python 3.7, je tedy nutné buď počkat na nový Debian Bulleys nebo vlastními silami nainstalovat novější Python. Existuje backport balíček https://community.home-assistant.io/t/home-assistant-core-python-3-8-backport-for-debian-buster/234859.

Do virtuálního prostředí Pythonu pro Hass nainstalovat Python knihovnu dbnet2 (viz. dbnet2*.whl)

sudo su homeassistant
cd /srv/homeassistant/homeassistant_venv
source bin/activate
pip3 install -v dbnet2-0.0.2-cp38-cp38-linux_armv7l.whl
sudo systemctl restart home-assistant.service

Rozbalit integraci hass-dbnetbus.zip do homeassistant/components. Zkoušeno s verzí Home Assistant 2021.3.3.

Proměnné a aliasy Amit regulátoru jsou definované typicky pro každý regulátor v DetStudiu a je možně je vyexportovat do CSV souboru. Tento soubor je pak uveden v definici stanic (stations.cfg). Názvy proměnných musí být jedinečně po agregaci všech stanic. To lze zjistit nastavení prefixování jednotlivých definičních souborů. Definiční soubor stanic pak uveden v konfiguraci hass configuration.yaml. Ovládací prvky, které se mají objevit v GUI se přidávají do tohoto souboru s odkazem na konkrétní proměnnou regulátoru. Příklad pro domácí řídící systém ADOREG je v dbnet2-hass-config.zip.

# configuration.yaml
dbnetbus:
  default:
    station_config: !secret station_config
    client_addr: 31
sensor:
  - platform: dbnetbus
    unit_of_measurement: °C
    precision: 1
    items:
      t_venk:
        name: Venkovní teplota (TV1)
        register: Ven_t
      podlaha_t_skutecna:
        name: "$Mis_Tab_text[16]: T.skutečná (TRTV1)"
        register: Mis_Tab_t[16,0]
      podlaha_t_zadana:
        name: "$Mis_Tab_text[16]: T.žádaná"
        register: Mis_Tab_t_Po[16,0]
binary_sensor:
  - platform: dbnetbus
    items:
      podlaha_cerp:
        name: "$Mis_Tab_text[16]: Čerpadlo"
        register: "DO0.5"
      radiator_cerp:
        name: "$Mis_Tab_text[17]: Čerpadlo"
        register: "DO0.6"
switch:
  - platform: dbnetbus
    items:
      an_rezim_tyce:
        name: "$Zdr_Tab_Text[5]: Režim Topné tyče AN"
        register: Zdr_Tab_Rez[5,0]
      rezim_obdobi:
        name: Období Zima/Léto
        register: "Stav.1"
climate:
  - platform: dbnetbus
    temp_unit: 'C'
    preset_modes:
      sleep:
        state: 0
      eco:
        state: 1
        read_only: True
      comfort:
        state: 2
      external:
        state: 3
        read_only: True
    hvac_modes:
      "off":
        state: 0
      heat:
        state: 1
    items:
      podlaha:
        name: "$Mis_Tab_text[16]"
        target_temp_register: Mis_Tab_t_Po[16,0]
        current_temp_register: Mis_Tab_t[16,0]
        preset_mode_register: Mis_Tab_Rez[16,0]
        heating_register: DO0.5
        preset_modes:
          sleep:
            target_temp_register: Mis_Tab_t_Ut[16,0]
          comfort:
            target_temp_register: Mis_Tab_t_Km[16,0]
....

Definice stanic:

var_files:
    - a311_vars.csv
    - file:
        name: test_vars.csv
        codepage: cp1250
    - file:
        name: test_vars2.csv
        prefix: dup_
alias_files:
    - a311_aliases.csv
    - test_aliases.csv
    - file:
        name: test_aliases2.csv
        prefix: dup_
stations:
    ADOREG:
        ip: 192.168.0.10
        port: 59
        addr: 4
        password: ~
        timeout: 1000
        timezone: 1

Definice exportované z programu DetStudio, kde jsou odkazy na konkrétní proměnné regulátoru.

AI_DIVal;4639;F;4;;Hodnota pro rozhodnuti log1/0 na analogovem vstupu
AI_Stav;4320;I;4;;Stavy vstupů
AI_Tab_Ftr;4309;MF[24,1];4;;Konstanty pro filt 1R
AI_Tab_Kor;4602;MF[24,2];4;;Analogové vstupy, korekční konstanty
AI0;4016;MF[12,1];4;;Analogové vstupy
AI0_R;4588;MF[12,1];4;;Vyčítané analogové hodnoty přímo ze vstupů

Balíček dbnet2-*-Linux.deb obsahuje binární command line utility a není pro funkci Hass nutno instalovat.

Amit Hass integration

Integrace AMIT DBNet protokolu do HomeAssistant AMIT DBNet protocol integration to HomeAssistant

FileVelikostLast modif
dbnet2-0.0.2-cp37-cp37m-linux_armv7l.whl95.35 KB2021-03-18 14:04
dbnet2-hass-config.zip19.41 KB2021-03-18 13:57
hass-dbnetbus.zip14.49 KB2021-03-18 14:35
dbnet2-0.1.1-Linux.deb145.01 KB2021-03-18 13:50
dbnet2-0.0.2-cp38-cp38-linux_armv7l.whl95.15 KB2021-03-18 13:50