LOADING...

Posts Tagged "MODBUS"

20szept

Klíma rendszer okosítása MODBUS-szal, avagy buszos megoldás Home Assistant-tal

by Gyula Halmos

A feladat ...

A Yabune Home elsősorban vezetéknélküli rendszerek integrálásával foglalkozik. Legtöbb esetben WiFi, Zigbee és Z-wave protokollok valamelyikét szoktuk ajánlani ügyfeleinknek. Azonban vannak olyan esetek, amikor a vezeték nélküli rendszer nem megoldható egyszerűen, vagy mert az adott eszközök nem támogatják, vagy mert már létezik kiépített vezetékes infrastruktúra és a vezetéknélküli hálózat létrehozás szükségtelen többlet kiadást okozna.

Ebben a blog posztban, egy teljes iroda és telephely klíma rendszerének korszerűsítést mutatjuk be a Yabune Home rendszerrel. Ügyfelünk megkeresett minket, hogy szeretné iroda házukat és a hozzá tartozó egyéb épületek klímáit okosítani.

A következő klíma rendszer volt adott:

  •  2 db Daikin VRV hőszívattyú
  • 18 db beltéri plafonba süllyesztett egység
  • 16 db falra szerelt vezetékes kézi vezérlő

A Daikin rendszer körülbelül 10 éve lett telepítve, valamint a két hőszivattyú 1 évvel ezelőtt le lett cserélve újabb típusra. Első körben felmértük az igényeket a vevőtől, amik a következők voltak:

  • Jelenlegi klímák helységenkénti vezérlése távolról
  • Hőmérséklet értékek monitorozása
  • Később bővíthető központ

Első körben felmértük mik a lehetőségeink okosításra. Ehhez felvettük a kapcsolatot a Daikin Hungary Kft-vel, hiszen náluk jobban senki sem ért a Daikin hőszivattyúk vezérléséhez. Nem is kellett csalódnunk rendkívül segítőkészek voltak és gyorsan megfelelő szintre hoztak minket szakértőik segítségével. A megbeszélések során körvonalazódott, hogy az egyik lehetséges és gazdaságilag is rentábilis megoldás a ModBus-on keresztüli vezérlés.

Több érv is szólt a ModBus mellett, de a két legfontosabb, hogy a Home Assistant natívan támogatja mind a ModBus RTU-t és a ModBus TCP-t is valamint a Daikin EKMBDXA ModBus adapter beszerzése és vezérlése is reális feladatnak tűnt.

Ahogy korábban már említettem az ügyfelünknél kiépített rendszer ipari méretú (18 belső egység és 2 hőszivattyú) és a ModBus adaptert is be kellett szerezni, hiszen eredetileg nem rendelkeztek vele. Azonban ahhoz, hogy kitaláljuk az infrastruktúrát, meg kellett értenünk, hogy működik a vezérlés jelenleg. Minden helységben egy BRC1D52 -es vezetékes controller gondoskodott a szabályzásról. Sajnos ezek az eszközök nem nagyon okosíthatóak, de kapóra jöttek, hogy a manuális beavatkozás lehetősége az automatizálás után is megmaradjon.

Daikin távoli irányító központ
A jó öreg Daikin fali vezérlő

Fel kellett mérnünk a Daikin szakértő segítségével, hogy a jelenlegi megoldásban, hogyan működik a vezérlés. Mint megtudtuk, a Daikin Bus protokollja esetében a plafonon elhelyezett berendezések kommunikálnak a külső egységgel és 12 egység a nagyobb hőszivattyúra míg 6 a kisebbre van kötve.

Valahogy így:

Daikin okos hőszivattyú 1
Plafon egységek két külön körön, két hőszivattyúra kötve.

Az elmélet ...

Ahhoz, hogy Home Assistant-on keresztül vezérelni tudjuk a rendszert meg kellett oldanunk, hogy ModBus-on keresztül tudjuk megszólítani és szabályozni az eszközöket. Erre a Daikin-nál létezik több megoldás is az egyik a Daikin RTD-NET Control Interface, amelyet minden belső egység elé beszerelve lehetővé teszi, hogy ModBus-on keresztül vezéreljük őket. Ez 2-3 plafon kazetta esetén meg is éri, de 18-nál komoly többlet költséget jelent, így kénytelenek voltunk más opció után nézni. Köszönettel tartozunk a Daikin-os szakértőknek újfent, hiszen ők terelték a figyelmünket a Daikin EKMBDXA ModBus adapter irányába. Ez az eszköz közvetlen fordítja a ModBus protokollt a Daikin belső Bus protokolljára. Direkt BMS (épület menedzsment rendszer) rendszerekhez találták ki. Ára ennek megfelelően elég magas, de 18 belső egységnél már megéri. 

Ez alapján elkezdtük kitalálni az architektúrát, ami nagyjából így kell hogy kinézzen:

Daikin okos hőszivattyú
A két hőszivattyúhoz elég egy adapter és azt ModBus RTU-n, soros porton rátudunk kötni az okos központra

A ModBus regiszter alapon kommunikál, mint a legtöbb busz alapú megoldás. Minden eszköz rendelkezik egy vagy több input és state regiszterrel. Az előbbibe beírhatunk értéket a szabályzáshoz, míg az utóbbiakból kiolvashatunk értékeket, mint például állapot, vagy hőmérséklet. Ahhoz, hogy tudjuk vezérelni a plafonba szerelt egységeket, fel kell őket címezni. Ez közepesen érhetően le is van írva a Daikin kezelési utmutatóban, de nem lepődtünk meg az utasításokat elolvasva, hogy ezt a feladatot nyilván nem végfelhasználóknak találták ki. Ha felcímeztük az egységeket és a ModBus Adapter is rendesen funkcionál akkor a következő lépés a Home Assistant alá való integrálás. Létezik HA ModBus integráció, de korántsem fedi le az összes igényünket, de ellenben aránylag bővíthető scriptekkel, templatekkel. Innentől az hogy mit kell tennűnk egyértelművé vált.

Minden ModBus implementáció más, ezért a Daikin saját ModBus Design dokumentációját át kellett néznünk. Hiszen ott van leírva, hogy pontosan hogyan és milyen regiszter címeken lehet kiolvasni az eszközök értékeit, valamint szabályozni őket.

Ez a dokumentáció ITT elérhető.

A ModBus Adaptert sima kéteres 0.75 -ös vezetékkel össze kell kötni sorban a két hőszivattyúval. Ha ez megtörtént, akkor Soros porton keresztül (pl.: USB adapter) bekötni a Yabune Home-ot futtató szerverbe.

A ModBus Adapteren be kell állítani a kezdő regiszter címet, DIP Switchek segítségével. Ennek leírását az előző pontban megosztott dokumentáció segítségével lehet megoldani (1.3.2 Wiring Diagram).

A fali vezérlő segítségével minden panel címét be kell állítani. Az EKMBDXA Adapter összesen 4 zónában 16 eszközt támogat, jelen esetben 18 eszközt kellett felkonfigurálnunk, de ez is jelentős időt emésztett fel, hiszen a körülményes szekvenciát minden helységben meg kellett tenni.

A Home Assistant alapú Yabune Home rendszert az ügyfél kérésére saját szerverére telepítettük. A folyamatról pontos jegyzőkönyvet is készítettünk, hiszen ez elvárás volt az infrastruktúrát üzemeltető szakemberektől is. A ModBus integrációról bővebben a megvalósítás fejezetében térek ki.

Miután mindent beállítottunk és felkonfiguráltunk az átadás előtt természetesen végig kell néznünk, hogy minden úgy működik, ahogy elterveztük. Fontos megjegyezni, hogy a ModBus EPROM-ba ír , tehát nem lehet végtelenszer írni az input regisztereket, erre fail safe megoldásokat kelllett kitalálnunk és le is tesztelni őket.

A megvalósítás ...

A két hőszivattyút sorosan be lehet kötni az adapterbe, míg az adaptert, pedig ModBus RTU segítségével, soros porton keresztül betudtuk kötni a Yabune Home központnak helyet adó szerverbe a szerver szobában. A vezetékezés megoldása körülményes, volt hiszen a két hőszivattyú egymástól 30 méterre volt, szabad levegőn. A kábel elvezetésénél oda kellett figyelni a megfelelő időjárás elleni védelemre, valamint az esztétikailag igényes megoldásra is.

A távolság nem volt igazán probléma, hiszen a Daikin Bus protokollt, akár 1000 m távolságra is elvihetjük, mielőtt a kábelveszteség problémát okozna.

Miután sikerült a megfelelő vezetékezést megoldani jöhetett a következő lépés. A belső egységek felcímzése Modbus-on. Mivel a vezérlő most került be, ezért a plafonba szerelt esközök nem rendelkeztek semmilyen azonosítóval, amire a Home Assistant-ban hivatkozni tudnánk. Ez egy lépés, amit minden falivezérlőn keresztül be kell programozni. Szintenként külön Groupbra raktuk az eszközöket. Maxmum 4 csoportot lehet beállítani és azokon belül is 16 eszközt, vagyis összesen 64 beltéri egységet. Ez a vezérlő limitációja, de esetünkben bőven elégnek bizonyult. Itt szintén erősen hagyatkoztunk a Daikin Magyarország szakértőjére, hiszen a leírás részletes, azért nem mindenhol teljesen egyértelmű és jobb rá kérdezni. Miután sikerült mindent beállítani a vezérlőkön, haladhattunk tovább a Home Assistant konfigurációval.

Első körben a configuration.yaml -t kellett updatelni, hogy hozzáadjuk a modbus modult és annak eszközeit/szenzorait. A lentebbi kód ezt a részletet mutatja be. Első körben meg kell nevezni a Modbus master elérhetőségét, ami jelen esetben, soros porton lett a központhoz kötve (method: RTU és type: serial). A soros átvitelt, egy RS-485 to USB átalakítóval oldottuk meg így a port attribútumot az USB eszköz címére kell állítani. A további beállítások a Daikin központ adatlapja szerint történtek. A legújabb HA beállításoknak megfelelőena modbus komponens alá lettek besorolva a klímák, bináris és sima szenzorok.

És akkor itt a kódrészlet is:

modbus:
- name: daikin
  type: serial
  method: rtu
  port: /dev/ttyUSB0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: E
  climates: !include_dir_merge_list packages/daikin_climate_modbus/climates
  sensors: !include_dir_merge_list packages/daikin_climate_modbus/sensors

template: !include_dir_merge_list packages/daikin_climate_modbus/binary_sensors 

A szemfülesek gyorsan kiszúrhatják, hogy a bináris szenzorok, nem a modbus komponens alatt vannak. Ez nem hiba, hiszen ők nem mások mint template binary_sensor-ok. Erről bővebben kicsit lejjebb.

A koncepció rendkívül egyszerű, első körben hozzáadtuk a klímákat a Home Assistant dokumentációjának megfelelően. A megfelelő paramétereket és regiszter címeket a Daikin Modbus Interface Design Guide-ból néztük ki.

Valamint kérdéses esetekben, a Daikin-es szakértővel konzultáltunk.

A különböző helyiségekben található beltéri egységek üzemállapotának lekérdezéséhez binary_sensor entitásokat hoztunk létre, a különféle paraméterek lekérdezésére, mint például az egység által mért hőmérséklet, a felhasználók által, vagy automatizáció által beállított cél hőmérséklet valamint a központ által kiolvasott státusz szó tárolására.

A binary_sensor-ok igazából template-k, amelyek a státusz sensor értékét fordították megfelelő bináris értékre. dokumentáció alapján.

Itt egy példa két helyiség klíma entitására (ezekből volt összesen 16):

 

- name: Emelet_targyalo_klima
  slave: 15
  data_type: uint
  data_count: 1
  scale: 0.1
  offset: 0
  precision: 1
  max_temp: 30
  min_temp: 15
  temp_step: 1
  target_temp_register: 2053
  address: 2106
  input_type: input
- name: Emelet_sales_marketing_iroda_klima
  slave: 15
  data_type: uint
  data_count: 1
  scale: 0.1
  offset: 0
  precision: 1
  max_temp: 30
  min_temp: 15
  temp_step: 1
  target_temp_register: 2056
  input: 2112
  input_type: input
 

Minden klíma entitáshoz kellettek bináris szenzorok és szenzorok, a különböző az eszközök által lejelentett értékekről és állapotokról. Ilyenek voltak például a következők:

 

  • Beállított hőmérséklet értéke
  • Aktuálisan mért hőmérséklet
  • Klíma státusza (ebből bit műveletekkel kinyertük az On-Off állapotot)
  • Klíma aktuálisan beállított módja

Itt is egy példa, hogyan olvastuk ki a szenzor értékéből a pontos üzemállapotot templatesített bináris szenzorral:

# sensor example:
    - name: Emelet_targyalo_status
      hub: daikin
      slave: 15
      register: 2102
      register_type: input
      
# binary sensor template
- binary_sensor:
  - name: "Emelet Tárgyaló Klíma Üzemállapot"
      state: >-
        {{ states('sensor.emelet_targyalo_status')|int|bitwise_and(1) > 0 }}

 

Miután az összes entitást sikerült beállítanunk, az auto entities segítségével szintenként meg is jelenítettük a felületen az iroda helyiségek vezérlő csempéit.

Az auto-entities kártya nagyon hasznos ennyi entitásnál.

Amikor nagy mennyiségű hasonló szenzort, kapcsolót, eszközt kell megjeleníteni ez a legjobb megoldás. A filter mező segítségével többféle kritérium alapján is tudunk szűrni, mint például a device_class vagy az eszköz friendly_name-e. A style mezőn keresztül, pedig egyedi színezéseket is be tudunk vezetni, mint jelen esetben, ha 26 fok feletti az érték akkor piros legyen a hőmérő. 

Az auto-entities, nem csak eszközök ömlesztett felsorolására jó, de például összesített graph kártyákra is. Lásd a lentebbi képet.

Itt nyilván kihasználtuk a graph-card nyújtotta lehetőséget a hőmérséklet függő színezéssel. Minden szintnek, külön kártyát csináltunk, amin a helyiségek hőmérsékletének alakulását lehet vizuálisan is nyomon követni.

A belső egységek megjelenítésénél, az alábbi megoldásra esett a választás. Ez a mini-climat kártya. Sokat gondolkodtunk a simple-thermostat kártyán is, de végül ez tűnt legelegánsabbnak. 

A rendszer sajátossága miatt volt szükség a külön kapcsoló panelre, mert habár a klímák automatikusan működnek a beállított cél hőmérsékletnek megfelelően, a falon elhelyezett panel lekapcsolásával ezt ki lehet küszöbölni. Ebből az okból kifolyólag kivezettük a fali panel távolról való kapcsolását is és annak állapot visszajelzését.

A szenzoroktól jövő adatokat az általunk szolgáltatott Influx DB és Grafana felületen tudja az ügyfél részletekbe menően tanulmányozni. Jelenleg együtt dolgozunk egy energetikus kollégával, hogy a felgyülemlett adatokból minél több hasznos információt tudjunk kiszűrni és energetikai tanácsokkal ellátni ügyfeleinket, valamint intelligensebb vezérlést fejleszthessünk.

Tartalmazott rengeteg kihívást a megoldás, de jelenleg több mint 9 hónapja üzemel, és egyelőre súlyosabb malőrök nélkül 🙂

hu_HUMagyar