2015. szeptember 18., péntek

WiFi mindenhez #3 - HTTP Szerver

Nos, az idő nem állt meg. Folytatom a saját C programkönyvtáram fejlesztését az olcsó ESP8266 WiFi modulhoz. Jelenleg készen van egy jól működő HTTP kiszolgáló réteg, melynek most már egyre több hasznos képessége van. Lessük meg egy teszt alkalmazáson keresztül, hogy miről is van szó.


Ezt az egyszerű weblapot egy PIC32MX250F128B mikrovezérlő működteti (hosztolja), amely így egy átlagos böngészőből is elérhető. Viszont mielőtt a fent látható oldal megjelenne, szükség van egy felhasználónév és jelszó páros megadására. Ez az egyszerű HTTP Basic Authentication hitelesítés valósult meg most legutoljára a fejlesztés keretén belül.

Az oldalon látható táblázat cellái reprezentálják azokat a reléket, amelyek összeköttetésben állnak a mikrovezérlővel. A cellákra való kattintással kapcsolhatóak be ill. ki. Maga a működés AJAX hívással történik a háttérben, amire a válasz egy XML erőforrás/fájl formájában érkezik, tartalmazva a relék aktuális állapotát (színkódokat :D).

A HTTP szerver implementációm legfontosabb tulajdonsága a dinamikus erőforrások támogatása. Ebben a teszt alkalmazásban az index.html fájl egy statikus elem, amelynek tartalma állandó. Az állapotokat tartalmazó XML fájl ezzel szemben dinamikus, mivel egyes részeibe szöveges karaktersorozatok kerülnek beillesztésre futásidőben. Maga a mechanizmus hasonlít a Microchip HTTP2 szerver megoldásához, viszont nálam a programkönyvtár teljesen különkezeli a különálló elemeket/fájlokat.

A számítógépen létrehozott ill. onnan származó fájlok a projektbe egy saját dotNet-es program segítségével kerülnek - HttpContent2WifiServer.


Maga a program egy header fájlt hoz létre, amely a projekthez könnyen hozzáadható. Ez a header tartalmazza majd a kívánt fájlunkat egy karaktertömb formájában, és egy adatstruktúrát a fájlra vonatkozó fontos paraméterekkel ( név, méret, darabok/részek száma, tulajdonságok, dinamikusan generált szövegek pozíciói, szöveget generáló függvények nevei, stb.).


A következő header fájl a felül lévő states.xml fájlból készült. A "~{...}" jelölés tartalmazza azt a függvényt, amely visszaadja az adott helyre kerülő dinamikus karaktersorozatot (Http_Print_xxxxx). Ezek a jelölések/címkék végül nem kerülnek bele a fájl bájtjait tartalmazó karaktertömbbe, de a pozícióik, függvények paraméterei viszont eltárolásra kerülnek.


A statikus elemek header fájljai sokkal egyszerűbb felépítésűek:


A dotNet alapú programmal tehát kényelmesebbé és gyorsabbá válik a fejlesztés, így elég szinte csak a webes kliensoldalra koncentrálni.


"TCP Socket kapcsolódva" indikátor LED-ek a 0-4 socket-ekhez



A következő bejegyzésben megnézzük végre, hogy milyen "értelmes" célra is lehet ezt az egész Internet of Things-es dolgot felhasználni... :)

Nincsenek megjegyzések:

Megjegyzés küldése