Skip to content
Snippets Groups Projects
Select Git revision
  • d587825d578867cf4699b38f7178c955bbd96740
  • main default protected
2 results

6-tervezes.tex

Blame
  • 6-tervezes.tex 33.28 KiB
    \chapter{Tervezés}
    
    \chapterintro{
    	Az előzetes kutatás szerint ismerkedem a projekthez illő technológiákkal,
    	megkeresem a megvalósításhoz használt eszközöket és megválasztom azokat az arra
    	vetett megkötéseinket figyelembe véve. Miután konkretizáltam a projekt kereteit,
    	a megvalósítandó rendszer tervezésével foglalkozom. A mikrokontroller az ESP32
    	hardver platfomon, Rust szoftveres környezetben valósul meg. Az okosotthon
    	integrációhoz a rendszer vezetékes hálózaton MQTT protokollon fog kommunikálni
    	a Home Assistant okosotthon szoftverrel. A választott technológiákkal ismerkedem
    	és megindoklom a választásaimat helyesség, biztonság, a fejlesztés kényelmessége
    	és a későbbi bővíthetőség szempontjai alapján.
    }
    \section{Döntések}
    \label{dontesek}
    
    \paragraph{} \Aref{feladat}. fejezetben definiáltuk a rendszer alapfeladatait.
    A megvalósításához meg kell választanom a megfelelő hardveres platformot és
    szoftveres környezetet, figyelve a megismert biztonságtechnikai kérdésekre. A
    döntéseknél figyelembe veszem a már létező kereskedelmi rendszerek sajátosságait
    és megoldásait; azok előnyei és hátrányai között keresem a kompromisszumot.
    
    A központi egységhez az Espressif ESP32 platformcsaládját választom, a
    szoftveres implementációt Rust programozási nyelven, a hivatalos Rust alapú
    framework használatával fogom megvalósítani. Az ESP32 viszonylag olcsó,
    általános célú mikrokontroller. Szoftveres támogatottsága az elmúlt néhány
    évben növekvő figyelmet élvez, különösen a Rust programozási nyelv körében.
    \cite{rust-iot} Ez a hardver és szoftver kombináció az iparágban meglehetősen
    újkeletűnek mondható például egy Arduino és a hozzá tartozó széleskörű hardveres
    és szoftveres támogatottsággal szemben. Vitatható, hogy egy biztonságkritikus
    rendszer megvalósításában ésszerű döntés lenne, ha a gyártó által ajánlott
    és szélesebb körben használatos C/C++ alapú ESP-IDF framework-öt használnám,
    a fiatalabb, kevésbé elterjedt változattal szemben. Azért nem így döntöttem,
    mert \aref{inf-bizt}. fejezetben a szoftverbiztonság fényében fontosnak
    tartom a memóriabiztonságot. Legalább olyan fontosnak, hogy az már a tervezés
    legelején kereteket szabjon. Ezért válaszottam a Rust-ot, ami fundamentálisan
    a memóriabiztonságra épülő rendszerek programozására akalmas alacsony szintű
    nyelv.
    
    A rendszerem kizárólag vezetékes kommunikációt fog alkalmazni. Ez
    \aref{kereskedelmi}. fejezetben megismert két kategória közül a hagyományos
    rendszerekre jellemző. Láttuk, hogy előny az egyszerűbb architektúra, de
    hátrány a rugalmatlanság. Célom, hogy ne adjunk esélyt a kommunikációs médiumon
    való információ kiszivárgására, ezért ez a fizikai biztonságon fog múlni.
    A rendszeren belül titkosításra emiatt nincs szükség, de a külső hálózaton
    mindenképpen kell, ezért erre alkalmas integrációs protokollt fogok választani.
    A külső hálózati interfész szerepében egy Ethernet vezérlőt választok,
    ami például egy WiFi rádió modulhoz képest kevesebb hibaforrást jelent az
    architektúra egyszerűsége miatt szoftver oldalon is. A látott rugalmatlanság itt
    nem lesz jellemző -- az okosotthon integráció fogja ellensúlyozni.
    
    Az okosotthon integrációhoz előszor meg kell választanom, milyen szoftverrel
    kell tudnia a rendszernek kommunikálnia. Ha ezt megtettem, ezután a
    kommunikációhoz használt protokollt pontosítom. Ahogy \aref{kereskedelmi}.
    fejezetben láttuk, hogy a DIY rendszerek mindegyike önmagában egy IoT platform
    is, a gyártó által kiadott zárt szoftverrel együtt. Illetve a nagy hátrányuk
    az volt, hogy a legtöbb esetben előfizetés keretében volt elérhető a teljes
    funkcionalitás, vagyis hosszútávú költségek magasak voltak. A mi rendszerünknek
    azt a célt tűzöm ki, hogy egy nyílt ökoszisztéma legyen, azaz a hardveres
    megoldások és a szoftver forrása nyílt és szabadon felhasználható legyen.
    Ne legyenek egyáltalán hosszútávú költségek, illetve a rövidtávú költségek
    keretében csak a rendszer anyagára legyen számottevő. Ezekkel a megkötésekkel
    a rendszer mechanikai telepítése és a szoftveres telepítés időköltsége
    kompromitál. A megkötést az integrációra is érvényesítem, ezért az okosotthon
    megoldások körében a helyileg futtatott, ``self-hosted'', nyílt forrású és
    szabadon felhasználható szoftverek körében szeretnék elsősorban integrációra
    lehetőséget keresni. Ezeknek a Home Assistant okosotthon felel meg, ezzel
    a szoftvercsomaggal fog integrációt élvezni a rendszerem, ami a feladatban
    megfogalmazott feltételeknek megfelel. Továbbá a feladatban említett értesítési
    módok mindegyikét lehetséges vele használni. \cite{hass-integrations} A