ADA485 – RS485/Modbus IoT‑híd HMKE‑hez és ipari eszközökhöz
Az ADA485 egy könnyen telepíthető RS485→IP (Wi‑Fi/LAN) híd és edge‑gateway. Modbus RTU‑t olvas és ír, MQTT/HTTP/REST felé publikál, naplóz CSV/JSON‑ba, és Home Assistant/okosvillanyora.hu/hmke.app rendszerekkel azonnal használható. Ideális inverterekhez (Deye/Sunsynk, Fronius RS485), BMS‑ekhez (SEPLOS, Basen), PZEM‑ekhez, hőszivattyúkhoz, kazánokhoz, PLC‑khez.
Mi ez és mire jó?
Az ADA485 a GreenHESS ADA‑ökoszisztéma RS485/Modbus kapu eszköze. Feladata, hogy a szabványos Modbus RTU vonalon elérhető mérőket/vezérlőket felhő nélkül, helyben összekösse az otthoni vagy ipari IP‑hálózattal.
Fő felhasználások:
HMKE napenergia rendszerek: inverter, smart meter, BMS valós idejű felügyelete és vezérlése.
Fűtés‑hűtés: hőszivattyú, kazán, puffertartály, hőmennyiségmérő RS485‑ön.
Ipari/épületautomatika: PLC, frekvenciaváltó, hőmérséklet‑/nyomás‑távadó, PZEM, stb.
Nem csak inverterekhez

Az ADA485 általános illesztő: Modbus RTU/TCP, RS485‑ös ASCII (ascii/hex/hextoascii), és HTTP/REST alapú eszközökből is tud adatot olvasni, majd egységes JSON‑ba rendezi és publikálja. Így működik kazánokkal, PLC‑kkel, PZEM‑ekkel, BMS‑ekkel, hőmennyiségmérőkkel és bármi mással, ami Modbuson vagy API‑n kommunikál.
Miért fontos kifejezetten invertereknél?
A modern invertereknél az állapot‑adatok sokszor több „egyszerű” módon is elérhetők (felhő, helyi web, app), de a valódi beállítások és finomhangolás (paramétertábla) döntő többségben RS485‑ös Modbuson keresztül érhető el. Az ADA485 ezért kulcseszköz:
Beállítás írás (Modbus write): élőben vagy ütemezve módosítható az üzemmód, teljesítmény‑limitek, időablakok.
Fogyasztás / visszatáplálás szabályzás: export‑limit ("visszwatt") és grid‑prioritások kezelése.
Akkumulátor‑használat: töltés/kisütés teljesítmény és idősávok, SOC‑határok, védelmek.
Vételezési prioritások: PV → akkumulátor → hálózat sorrend, vagy épp hálózati kímélés.
Ütemezett profilok: nappali‑éjszakai, HUPX‑/árjelzős workflow‑khoz illeszthető kérésciklus.
Nagyon rövid write‑példák
Modbus RTU (HEX sablon) – export limit 1500 W írasa (cím példa):
{"requests":{"set_export":{"template":"01 06 90 10 05 DC","encode":"hex"}}}Modbus TCP – ugyanaz paraméterezve:
{"requests":{"set_export":{"modbus_tcp":{"host":"192.168.1.20","unit":1,"func":6,"start":0x9010,"value":1500}}}}A pontos címek/értékek gyártó‑/típusfüggők. A fenti minták a lehetőséget illusztrálják.
Fő funkciók (amitől szerethető)
Modbus RTU master: olvasás/írás, több slave egy buszon, ütemezett lekérdezések.
Modbus TCP kliens (LAN‑on): gyors polling RS485 nélkül.
HTTP/REST pull + JSON‑path: tetszőleges API mezők kinyerése és egységesítése.
RS485 ASCII keretek:
ascii/hex/hextoasciisablon + opcionális frame‑suffix.Valós idejű távoli elérés: MQTT publikálás és on‑demand lekérés a helyi API‑n.
MQTT és HTTP/REST kimenet: EMQX/Broker → dashboard (okosvillanyora.hu, hmke.app, Home Assistant, Grafana, Node‑RED).
JSON‑alapú „protokoll‑leíró”: több request–response összefűzése egy közös objektumba (pl. inverter + BMS → egy payload).
Edge számítások: skálázás, előjeles értelmezés, derived (pl.
batt_i_charge,batt_i_dis).Naplózás: CSV és JSON napló helyben; időszaki push a szerver felé.
Webes beállítás: captive portal + admin UI (Wi‑Fi, MQTT, lekérdezési profilok).
OTA: böngészőből frissíthető firmware.
Kompakt: sínre/elosztószekrénybe illő kialakítás, A/B/GND egyértelmű bekötés.
Megjegyzés: A cikk a funkciók és a szoftveres képességek bemutatására fókuszál. Pontos hardver‑spec (táp, izoláció, ház) gyártási széria szerint változhat; a dobozon/jelölésen mindig ellenőrizd a példányod paramétereit.
Gyors telepítés (5 lépés)
Bekötés: RS485 A/B/GND → a mérő/inverter buszára (A‑A, B‑B; polaritás számít). Buszvégen 120 Ω lezárás ajánlott.
Táp: csatlakoztasd az ADA485 tápját (a címkén jelölt tartomány szerint – tipikusan 5…24 V DC).
Wi‑Fi: telefonról/lapról csatlakozz az ADA485 AP‑hez → webes beállítás (SSID, jelszó).
MQTT/REST: add meg a broker címet vagy a helyi API‑célpontot.
Profil: válaszd ki / töltsd be a kész Modbus profilt (pl. Deye SUN‑xK‑SG04LP3‑EU), mentsd, START.
Bekötés
RS485 alapszabályok
Kétvezetékes, árnyékolt sodrott érpár ajánlott (pl. LiYY/UTP):
A(+) ↔ A(+),B(−) ↔ B(−).Egy közös GND referencia sok esetben növeli a zajtűrést (ha az eszköz engedi).
A busz mindkét végén 120 Ω lezárás legyen; a bias (fel/lehúzás) általában egyetlen ponton, a master közelében.

Kiosztás példa (sorkapocs):
RS485-A(jel +)RS485-B(jel −)GND(opcionális referencia)
RJ45 port esetén mindig a készülék feliratát kövesd; RS485‑re nincs univerzális RJ45‑szabvány.
Rövid példák
1) Modbus RTU – register mód (részlet)
{"requests":{"pack":{"template":"0103024B0006","encode":"hex"}},
"responses":{"pack":{"offset_base":"register","base_address":"0x024B","word_size":2,
"fields":[{"id":"batt_voltage","address":"0x024B","type":"U16","scale":100}]}}}2) RS485 ASCII keret
{"requests":{"status":{"template":"~READ
","encode":"ascii"}},
"responses":{"status":{"offset_base":"hex_chars","fields":[{"id":"state","offset":6,"length":2}]}}}3) HTTP/REST – JSON‑ból mező (json_path)
{"requests":{"api":{"http":{"host":"192.168.1.50","path":"/api/status"}}},
"responses":{"api":{"offset_base":"json","fields":[{"id":"pac","json_path":"Body.Data.PAC.Value"}]}}}4) Modbus TCP – holding regiszterek
{"requests":{"mbtcp":{"modbus_tcp":{"host":"192.168.1.20","unit":1,"func":3,"start":0x024B,"qty":6}}},
"responses":{"mbtcp":{"offset_base":"register","base_address":"0x024B",
"fields":[{"id":"soc","address":"0x024C","type":"U16"}]}}}Valós idejű távoli elérés
MQTT: a mért/egyesített JSON 1–5 mp‑es ciklusokban publikálható a brokerre.
On‑demand beavatkozás: név szerinti kérés futtatható (pl.
set_export), Modbus write azonnal.Távoli hozzáférés: helyi API elérhető VPN‑en át (vagy vállalati hálón), így a beállítások élőben módosíthatók.
Példakonfigurációk
1) Deye / Sunsynk SUN‑xK‑SG04LP3‑EU – akkumulátor blokk
Cél: SOC, feszültség, áram, teljesítmény kiolvasása. A gyakorlatban a következő holding regiszterek hasznosak:
0x024B→batt_voltage(×0.01 V)0x024C→batt_soc(×1 %)0x024E→batt_power_w(előjeles W)0x024F→batt_current(×0.01 A, előjeles)0x0250→batt_totcap(Ah)
ADA485 lekérdezési profil (részlet, JSON):
{
"bus": { "baud": 9600, "parity": "N", "stop": 1 },
"requests": [
{ "unit": 1, "fn": 3, "addr": 0x024B, "len": 6, "map": [
{ "name": "batt_voltage", "at": 0, "scale": 0.01, "type": "u16" },
{ "name": "batt_soc", "at": 1, "scale": 1, "type": "u16" },
{ "name": "_skip", "at": 2 },
{ "name": "batt_power_w", "at": 3, "type": "s16" },
{ "name": "batt_current", "at": 4, "scale": 0.01, "type": "s16" },
{ "name": "batt_totcap", "at": 5, "type": "u16" }
]}
],
"derived": {
"batt_i_charge": "max(batt_current,0)",
"batt_i_dis": "max(-batt_current,0)",
"batt_remcap": "batt_totcap * batt_soc / 100"
},
"publish": {
"mqtt": {
"topic": "hmke/ada485/${device}/battery",
"qos": 0, "retain": false
},
"http": {
"url": "http://okosvillanyora.local:8989/write",
"method": "POST",
"body": { "device": "${device}", "ts": "${time}", "data": "${json}" }
}
},
"interval_ms": 3000
}2) SEPLOS BMS – PIA/PIB/PIC többkörös profil (minta)
A SEPLOS adatkörei nem egy lekérdezésben érkeznek, ezért a profil több request eredményét fűzi össze:
{
"requests": [
{ "unit": 1, "fn": 3, "addr": 0x1000, "len": 16, "tag": "PIA" },
{ "unit": 1, "fn": 3, "addr": 0x1100, "len": 32, "tag": "PIB" },
{ "unit": 1, "fn": 3, "addr": 0x1200, "len": 16, "tag": "PIC" }
],
"merge": "{...PIA, ...PIB, ...PIC}"
}A fenti regisztercímek példák: a konkrét BMS‑ed dokumentációja az irányadó.
MQTT és Home Assistant
Példa MQTT payload (hmke/ada485/<serial>/battery):
{
"batt_voltage": 51.62,
"batt_soc": 74,
"batt_power_w": -820,
"batt_current": -15.9,
"batt_i_charge": 0,
"batt_i_dis": 15.9,
"batt_totcap": 200,
"batt_remcap": 148
}Home Assistant – configuration.yaml szenzorok
mqtt:
sensor:
- name: "Akkumulátor SOC"
state_topic: "hmke/ada485/+/battery"
unit_of_measurement: "%"
value_template: "{{ value_json.batt_soc }}"
- name: "Akkumulátor teljesítmény"
state_topic: "hmke/ada485/+/battery"
unit_of_measurement: "W"
value_template: "{{ value_json.batt_power_w }}"
- name: "Akkumulátor áram"
state_topic: "hmke/ada485/+/battery"
unit_of_measurement: "A"
value_template: "{{ (value_json.batt_current | float) }}"REST API (helyi)
GET /api/read?unit=1&fn=3&addr=0x024B&len=6→ nyers regiszterekGET /api/now→ az utolsó összeállított JSONPOST /api/profile→ teljes profil feltöltése (JSON)POST /api/publish→ azonnali publish a beállított célokra
Az endpointok név‑ és formátuma firmware‑verziónként változhat; a helyi /help oldalon találod az aktuális listát.
Teljesítmény és megbízhatóság
Buszsebesség: tipikusan 9600/19200/38400/115200 bps.
Tipikus ciklusidő: 4–10 lekérdezés/s (slave és válaszhossz függő).
Hibatűrés: retry, timeout, CRC ellenőrzés, zajszűrés.
Stabil busz: rövid leágazások, helyes árnyékolás, lezárás/bias – ezek többet számítanak, mint a bps.
Biztonság
Helyi‑first: minden működik internet nélkül is.
MQTT auth: user/pass, opcionális TLS a broker és az ADA485 között.
Jogosultság: admin jelszó a webes UI‑hoz; API kulcs a REST hívásokhoz (opció).
OTA: ellenőrzött (signed) firmware preferált.
Műszaki adatok (irányadó)
| Paraméter | Érték (tipikus) |
|---|---|
| Tápfeszültség | 5…24 V DC (szériafüggő) |
| Fogyasztás | < 2 W |
| RS485 | 2‑vezetékes, fél‑duplex, A/B + GND |
| Ház | sínre/elosztóba illeszkedő kompakt kivitel |
| Hálózat | Wi‑Fi 2.4 GHz (ESP32) / opcionális LAN |
| Üzemhőmérséklet | −10…+55 °C |
A pontos specifikációt a készülék címkéje és a gyártási adatlap tartalmazza.
Tipikus hibák és gyors megoldások (GYIK)
A/B felcserélve? – A mérés nem frissül; cseréld meg az A/B vezetékeket.
Zajos a busz? – Rövidíts a leágazásokon, tedd a 120 Ω lezárást a busz végére, ellenőrizd a közös GND‑t.
Ritkán frissül? – Csökkentsd a len‑t és/vagy az interval_ms‑t; több rövid request gyorsabb, mint egy óriási.
HA nem látja a szenzorokat – Ellenőrizd a slave ID‑t, a baud/parity/stop kombinációt.
MQTT nem megy – Broker cím/port/user/pass; ha TLS‑t használsz, győződj meg a tanúsítványról.
Záró gondolat
Az ADA485 lényege a megbízható, lokális, testreszabható adatkapcsolat az RS485 világ és a modern IP‑alapú rendszerek között. Ha kell, csak „áthidal”, ha kell, okosít is – pont annyira, amennyire a projekted igényli.
