O NasBlogKontakt

Dodawanie urządzenia Modbus

Ten przewodnik wyjaśnia, jak dodać obsługę nowego urządzenia Modbus (czujnika, licznika energii itp.) do boneIO Black. Definicja urządzenia jest przechowywana jako plik JSON, który opisuje jak odczytywać i interpretować rejestry Modbus.

Aplikacja webowa - Kreator urządzeń

Najłatwiejszym sposobem na utworzenie definicji urządzenia Modbus jest użycie wbudowanego Kreatora urządzeń Modbus w interfejsie webowym.

Dostęp do kreatora

  1. Otwórz interfejs webowy boneIO
  2. Przejdź do sekcji Modbus Helper
  3. Wybierz zakładkę Creator

Modbus Device Creator

Informacje o urządzeniu

OpcjaOpis
Nazwa modeluNazwa modelu urządzenia wyświetlana w Home Assistant (np. "SHT30 Czujnik temperatury i wilgotności")
Nazwa plikuNazwa pliku JSON (np. "sht30"). Jeśli pusta, zostanie wygenerowana z nazwy modelu
KategoriaKategoria urządzenia: sensors, energy_meters, hvac, inverters lub other
Adres urządzenia testowegoAdres Modbus podłączonego urządzenia do testowania rejestrów

Dodawanie rejestrów

Kliknij Dodaj rejestr, aby zdefiniować każdy punkt danych do odczytu z urządzenia.

OpcjaOpis
NazwaNazwa czujnika wyświetlana w Home Assistant
AdresAdres rejestru Modbus (sprawdź dokumentację urządzenia)
Typ rejestruRejestr holding lub input
JednostkaJednostka miary (np. °C, %, V, A, kWh)
Typ wartościTyp danych - zobacz tabelę poniżej
Klasa urządzeniaKlasa urządzenia Home Assistant (temperature, humidity, voltage, itp.)
Klasa stanumeasurement, total lub total_increasing

Typy wartości

TypOpisRozmiar
U_WORDLiczba całkowita 16-bit bez znaku1 rejestr
S_WORDLiczba całkowita 16-bit ze znakiem1 rejestr
U_DWORDLiczba całkowita 32-bit bez znaku (Big Endian)2 rejestry
S_DWORDLiczba całkowita 32-bit ze znakiem (Big Endian)2 rejestry
U_DWORD_RLiczba całkowita 32-bit bez znaku (Little Endian)2 rejestry
S_DWORD_RLiczba całkowita 32-bit ze znakiem (Little Endian)2 rejestry
FP32Liczba zmiennoprzecinkowa 32-bit (Big Endian)2 rejestry
FP32_RLiczba zmiennoprzecinkowa 32-bit (Little Endian)2 rejestry
U_QWORDLiczba całkowita 64-bit bez znaku4 rejestry
S_QWORDLiczba całkowita 64-bit ze znakiem4 rejestry

Filtry

Filtry pozwalają przekształcać surowe wartości rejestrów. Kliknij przycisk + obok "Filtry", aby dodać:

  • Multiply - Pomnóż wartość (np. 0.1 aby przekonwertować 245 → 24.5°C)
  • Offset - Dodaj/odejmij wartość

Testowanie rejestrów

Przed zapisaniem możesz przetestować każdy rejestr klikając przycisk . Odczytuje to rzeczywistą wartość z podłączonego urządzenia, aby zweryfikować poprawność konfiguracji.

Konfiguracja Set Base (opcjonalna)

Włącz te opcje, jeśli urządzenie obsługuje zmianę adresu Modbus lub prędkości transmisji:

OpcjaOpis
Włącz zmianę adresuUrządzenie obsługuje zmianę adresu Modbus
Rejestr adresuAdres rejestru do zapisu nowego adresu Modbus
Włącz zmianę baudrateUrządzenie obsługuje zmianę prędkości transmisji
Rejestr baudrateAdres rejestru do zapisu prędkości transmisji
Mapowania baudrateMapowanie prędkości na wartości rejestru (np. 9600 → 0, 19200 → 1)

Eksportowanie

  • Pokaż podgląd JSON - Podgląd wygenerowanej konfiguracji
  • Kopiuj JSON - Skopiuj do schowka
  • Pobierz JSON - Pobierz jako plik

Struktura pliku JSON

Definicje urządzeń są przechowywane w katalogu boneio/modbus/devices/<kategoria>/.

Przykładowa konfiguracja

sht30.json
{
  "model": "SHT30 Czujnik temperatury i wilgotności",
  "set_base": {
    "set_address_address": 256
  },
  "registers_base": [
    {
      "base": 1,
      "length": 2,
      "register_type": "holding",
      "registers": [
        {
          "name": "Temperatura",
          "address": 1,
          "unit_of_measurement": "°C",
          "state_class": "measurement",
          "device_class": "temperature",
          "value_type": "S_WORD",
          "filters": [
            { "multiply": 0.1 }
          ]
        },
        {
          "name": "Wilgotność",
          "address": 2,
          "unit_of_measurement": "%",
          "state_class": "measurement",
          "device_class": "humidity",
          "value_type": "S_WORD",
          "filters": [
            { "multiply": 0.1 }
          ]
        }
      ]
    }
  ]
}

Zmienne konfiguracyjne

Poziom główny

ZmiennaWymaganaOpis
modelTakNazwa modelu wyświetlana w Home Assistant
set_baseNieKonfiguracja zmiany adresu/baudrate urządzenia
registers_baseTakTablica bloków rejestrów

set_base

ZmiennaOpis
set_address_addressAdres rejestru do zapisu nowego adresu Modbus
set_baudrate.addressAdres rejestru do zapisu prędkości transmisji
set_baudrate.possible_baudratesMapowanie prędkości na wartość rejestru

registers_base (Blok)

ZmiennaOpis
basePoczątkowy adres rejestru dla tego bloku
lengthLiczba rejestrów do odczytu w jednym żądaniu
register_typeholding lub input
registersTablica definicji rejestrów

registers (Pojedynczy rejestr)

ZmiennaWymaganaOpis
nameTakNazwa czujnika w Home Assistant
addressTakAdres rejestru
unit_of_measurementTakJednostka (°C, %, V, A, itp.)
state_classTakmeasurement, total lub total_increasing
device_classNieKlasa urządzenia HA
value_typeTakTyp danych (zobacz tabelę Typy wartości)
filtersNieTablica filtrów do zastosowania

Udostępnianie swojego urządzenia

Po utworzeniu i przetestowaniu definicji urządzenia:

  1. Zrób fork repozytorium boneIO
  2. Dodaj swój plik JSON do odpowiedniego folderu:
    • boneio/modbus/devices/sensors/ - czujniki (temperatura, wilgotność, odległość)
    • boneio/modbus/devices/energy_meters/ - liczniki energii
    • boneio/modbus/devices/hvac/ - klimatyzacja, wentylacja
    • boneio/modbus/devices/inverters/ - falowniki
    • boneio/modbus/devices/other/ - inne urządzenia
  3. Utwórz Pull Request

Twój wkład pomoże innym użytkownikom z tym samym urządzeniem!