Internet-of-Things informatikus-mérnöki szemmel
GAMF, 2013 március 20.
Internet-of-Things: Bevezető ●
Internet hozzáférés: –
Fix: 2012Q3 – USA háztartások 90%-a rendelkezik szélessávú hozzáféréssel
–
Mobil: 2011 óta a világ lakosságának 90%-a 2G fedettségű, illetve 45%-a 3G fedettségű területen él. Iparági becslések alapján ez utóbbi 2017-re 85%-ra emelkedik.
Internet-of-Things: Jövőkép
Internet-of-Things: Bevezető ●
●
●
A csatlakoztatott eszközök számát 2020-ra 50 milliárdra becslik A létrehozható kollektív tudás felbecsülhetetlen Az egyes szakterületekhez kapcsolódó informatikai tudás, illetve szolgáltatások iránti igény megsokszorozódik
Internet-of-Things: Áttekintés
Internet-of-Things Tehát az Internet-of-Things ●
●
●
●
az Interneten keresztül központi rendszerrel kommunikáló szenzor/aktuátor végpontok, illetve a központi rendszerhez integrált alkalmazások, a szenzorok és aktuátorok által, illetve azokról gyűjtött valamint a központi és kiegészítő rendszer(ek) által feldolgozott, generált és eltárolt adatok, az egyes végpontok vagy végponthalmazok irányítását definiáló szabályok, logikák, mindezek elérését valamint az adatátvitelt biztosító elemek, felületek és protokollok
összessége.
Internet-of-Things
Hozzávalók
Internet-of-Things: Hozzávalók ●
Olcsó mikrokontrollerek 8-32bites rendszerek, alacsony áramfogyasztású, 3.3-5V rendszerek: Atmel, Microchip, ARM, ...
●
Olcsó prototípusozó rendszerek Arduino (Atmel/AVR, PIC: ChipKit MAX32), Raspberry Pi, Microchip Developer kit
●
Megfizethető szenzorok és aktuátorok Digitális és analóg szenzorok, aktuátorok
Internet-of-Things: Hozzávalók ●
Internet hozzáférés
●
Olcsó vezetéknélküli technológiák –
Internet-hozzáféréshez ● ●
–
Wi-Fi 2G, 3G, (4G)
Helyi vezetéknélküli szenzor/aktuátorhálózat kiépítéséhez ● ●
Bluetooth, Z-wave, ZigBee, MiWi RFID
Internet-of-Things: Hozzávalók ●
“Internet” - “web 2.0/3.0” –
Alkalmas hosting infrastruktúra ● ●
–
Alkalmas szoftver-környezet ●
–
Dedikált hardver vagy VPS/Cloud Megfelelő hálózati elemek és uplink Apache, Tomcat, Enterprise JavaBeans, Ruby-OnRails, PHP, ...
Adatbázis-környezet ●
Oracle, MySQL, Postgres, …
Internet-of-Things Főbb tervezendő, fejlesztendő elemek: –
Specifikáció: mit is szeretnénk?
–
Folyamatok, protokollok
–
Végpontok: hardver+szoftver
–
Központi rendszer(ek): szoftver
–
Felhasználói felületek
Internet-of-Things
Folyamatok, protokollok
Internet-of-Things Folyamatok, protokollok Eszközmenedzsment felület (WWW GUI) BOOT
REGISZTRÁCIÓ
LOOP CORE
NEM
Reg.üzenet
Konfiguráció Utasítások Periodikus bejelentkezés (+log), Valósidejű adattovábbítás
Platform: eszköznyilvántartás, konfiguráció, adatfeldolgozás, továbbítás
API hívások Konfigurált?
IGEN
LOOP OPs
Adattovábbítás, értesítések
IoT: Folyamatok, protokollok ●
Végpontok folyamatai –
Boot, konfiguráció → üzemi működés előkészítése
–
Üzemi működés (loop, vagy RTOS esetén a task-ok folyamatai) ● ●
szenzorok lekérdezése szabályzási program végrehajtása –
● ● ●
aktuátorok kezelése
adatnaplózás kommunikáció a központtal ...
IoT: Folyamatok, protokollok ●
A központi rendszer folyamatai, feladatai –
regisztráció, provizionálás → nyilvántartás ●
–
végpontok üzemi működés folyamatainak támogatása (adatnaplózás, utasítások küldése, nyugtázása, stb.) ● ● ● ●
–
felhasználók, végpontok nyilvántartása, felhasználókhoz történő rendelése, halmazképzés
adattovábbítás külső rendszereknek számított adatok generálása visszacsatolás a végpont irányításába más végpontok irányítása
megjelenítés, távoli kezelőfelület, adatfeldolgozás, adatbányászat – alkalmazási terület szerint
Internet-of-Things
Végpontok, végpontok fejlesztése
Internet-of-Things Rendszerek fejlesztése: Áttekintés WWW Végpont Felhasználói felület
Központ
Regisztráció, konfiguráció Szenzorok, aktuátorok (+vn) Szabályzási kör vh. Adatnaplózás Vezetéknélküli komm.
Vezetéknélküli szenzorok/aktuátorok Szenzorok, aktuátorok Vezetéknélküli komm.
Egyéb, külső rendszerek
Internet-of-Things: Végpontok Fő feladatok ●
Szenzorok lekérdezése, aktuátorok vezérlése
●
Kommunikáció a központtal
●
Feladatkritikus szabályzás, sziget-elvű működés támogatása
●
Üzemhibák automatikus hibafelismerése és javítása
●
Helyi adatnaplózás
●
Moduláris, bővíthető és skálázható felépítés
●
Kezelőfelület
●
Vezetéknélküli szenzor/aktuátor alhálózat kezelése
Internet-of-Things: Végpontok Főbb alkotóelemek ●
Mikrokontroller + szükséges hardver –
a végpont vezérlése, szabályzási kör,
–
perifériák kezelése, kommunikáció a szenzorokkal/aktuátorokkal és a központtal
●
Perifériák, vezetéknélküli hálózat vezérlője
●
Szenzorok
●
Aktuátorok
●
Kiegészítő elektronika
IoT: Végpontok fejlesztése Mikrokontroller alapú végpontok gyorsan: Arduino –
8-32 bites mikrokontrollerek széles skálája
–
Open Source hardver: nyílt kapcsolási rajz, szabadon felhasználható bármilyen célra
–
Számos szenzor, aktuátor illesztése megoldott, információval és kóddal támogatott
–
Open Source szoftver: nyílt forráskódú (jogállásfüggően felhasználható) programok, kódrészletek számos feladat támogatására (pl. RTC, SD, Ethernet...)
–
olcsó :)
IoT: Végpontok fejlesztése Egyéb lehetőségek: ●
●
PIC/Microchip –
PIC32-n van Arduino kompatibilis implementáció
–
Microchip Developer Kit
Raspberry Pi –
ARM 700MHz
–
letölthető linux disztribúciók
–
GPIO pinek az elektronikákhoz
IoT: Végpontok fejlesztése Arduino alapokon Kellékek az induláshoz: ●
●
●
●
Arduino (vagy mikrokontroller és szükséges komponensek) próbapanel, alkatrészek (szenzorok, aktuátorok, ellenállások, ledek, diódák, kábelek, stb.) multiméter forrasztó-felszerelés, egyéb elektrotechnikai szerszámok és műszerek
IoT: Végpontok fejlesztése Arduino alapokon Az Arduino programozása –
C/C++
–
AVR GCC toolchain backend ●
Arduino IDE frontend –
●
Eclipse IDE frontend –
●
– ●
Arduino boardok támogatása az Arduino library-kban (a mikrokontroller-specifikus direktívák, stb.) AVR plugin a mikrokontroller specifikus támogatáshoz, Arduino board támogatáshoz
...
Arduino library-k, AVR C library-k
Architektúra –
Egyszálú (setup + loop) vs. multitasking (FreeRTOS)
IoT: Végpontok fejlesztése Arduino alapokon
demo
Internet-of-Things
Központi kiszolgálók, fejlesztésük
Internet-of-Things Rendszerek fejlesztése: Áttekintés WWW Végpont Központ Felhasználói felület Végpontkezelés Regisztráció
Egyéb, külső rendszerek
Konfiguráció
Adatgyűjtés, feldolgozás
Adatnaplózás Irányítás Integrációs felület
Irányítás Megjelenítés ...
IoT: Központi kiszolgálók ●
Miért van rájuk szükség? –
erőforrás-gazdálkodás, feladatmegosztás
–
üzenetforgalmazás, komplex irányítás
–
adattárolás, adatbányászat, analízis
–
rendszerüzemeltetés, karbantartás, végpontok menedzsmentje
–
egységesített szolgáltatások
–
platform-szolgáltatások
IoT: Központi kiszolgálók Főbb jellemzői ●
Interneten elérhetőek –
●
●
●
Dedikált hardveren vagy virtuális szervereken, “felhőben”
Implementálnak valamilyen protokollt, amely segítségével kommunikálnak a kompatibilis végpontokkal Egyedileg azonosítják a végpontokat, azokat valamilyen rendszerbe szervezik Felületet biztosítanak ember és gép, illetve gép és gép között
IoT: Központi kiszolgálók ●
Központi kiszolgálók jellemző feladatai –
nyilvántartás, adattárolás
–
üzenetforgalmazás, folyamatirányítás
–
végpontok menedzsmentje
–
adatbányászat, analízis
–
felhasználói felületek
–
platform-szolgáltatások
IoT: Központi kiszolgálók ●
nyilvántartás, adattárolás –
felhasználók nyilvántartása ●
–
végpontok nyilvántartása ●
–
eszközök/végpontok tulajdonosai, szerepek és jogosultságok egyéb felhasználóknak szenzorok, aktuátorok
mérési / irányítási adatok feldolgozása, tárolása ●
számított értékek generálása
–
konfigurációs beállítások nyilvántartása
–
egyéb adatok tárolása
IoT: Központi kiszolgálók ●
folyamatirányítás, üzenetforgalmazás –
mérési / irányítási adatok feldolgozása ●
●
● ●
irányítási visszacsatolás a végpontnak a feldolgozott adatok alapján adatok vagy irányítási utasítások közvetítése más végpontok részére adattovábbítás / üzenetkézbesítés külső rendszereknek felhasználók értesítése/riasztása
IoT: Központi kiszolgálók ●
végpontok menedzsmentje –
eszközök online azonosítása
–
konfigurációs beállítások küldése / fogadása
–
mérési / irányítási adatok fogadása
–
irányítási utasítások küldése
IoT: Központi kiszolgálók ●
felhasználói felület –
felhasználási területre optimalizált megjelenítés, kezelőfelület
–
hozzáférés az eszközökhöz ● ● ●
beállítások, üzemi paraméterek hozzáférés a naplózott mérési adatokhoz lehetőség az eszközök távoli vezérlésére, illetve a szabályzási kör módosítására
IoT: Központi kiszolgálók ●
●
platform-szolgáltatások –
integrációs felület külső alkalmazások számára
–
végpontok csoportosítása
–
adat-aggregáció
–
távoli irányítási felület biztosítása
adatbányászat, analízis –
a naplózott mérési, irányítási adatok visszakeresése, feldolgozása, jellemzően valamilyen tudományos szakterület vonatkozó diszciplínái és képletei alapján
IoT: Központi kiszolgálók fejlesztése ●
kommunikáció –
szabványos TCP/IP, illetve HTTP (és HTTPS) alapokon
–
szükséges az eszköz feladataira szabott kommunikációs protokoll definíciója és implementációja
–
vezetéknélküli szenzor és aktuátor hálózatok tervezése esetén szabványos rádiós protokollok használhatók a kommunikáció alapjaként
IoT: Központi kiszolgálók fejlesztése ●
Biztonság –
Személyes adatok, kihatás a személyes környzetre – így gyakoriak lehetnek a biztonságkritikus alkalmazások ●
●
Kommunikáció biztonsága, illetéktelen behatolás, illetéktelen használat... Tárolt adatok, központi rendszerek biztonsága
–
Fizikai védekezés
–
Kódolás, azonosítás
IoT: Központi kiszolgálók fejlesztése Ajánlások ●
●
Architektúrák, logikák –
Service Oriented Architecture és Event Driven Architecture
–
Fuzzy logic
Protokollok –
TCP/IP, HTTP, HTTPS
–
SOAP vs. REST ●
●
●
XML, JSON, ...
eszközök / szoftverplatformok –
HTML5+CSS, JavaScript
–
Java, Ruby-on-Rails, PHP
–
MySQL, Postgres, Oracle
környezet –
Linux (+...) + Apache (+ …) + adatbázis (+ ...) ● ●
Open-source szoftverek, stabil, bizonyított, nagy felhasználói és fejlesztői tábor jól skálázhatóak, fürtözhetőek (cluster), professzionális felhasználásra is elterjedtek
Internet-of-Things Rendszerek fejlesztése: Áttekintés WWW Végpont Felhasználói felület
Központ
Regisztráció, konfiguráció
Felhasználói felület
Szenzorok, aktuátorok (+vn)
Végpontkezelés
Szabályzási kör vh.
Regisztráció
Egyéb, külső rendszerek
Adatnaplózás
Konfiguráció
Adatgyűjtés, feldolgozás
Vezetéknélküli komm.
Adatnaplózás Irányítás
Vezetéknélküli szenzorok/aktuátorok Szenzorok, aktuátorok Vezetéknélküli komm.
Integrációs felület
Irányítás Megjelenítés ...
Internet-of-Things Rendszerek fejlesztése – platform alapokon
Lássuk, mit spórolhatunk :)
IoT: Az APDuino koncepciórendszer End-to-End IoT alkalmazás-platform –
Hardver: ●
–
Arduino Mega 2560 + WizNet W5100 EtherShield + támogatott szenzorok, aktuátorok
Szoftver:
feltöltésre kész általános szenzor/aktuátorkezelő bináris, mely tartalmazza a következő alapfunkciókat: ● ●
●
–
SD-kezelés: teljes konfiguráció beolvasása SD-ről Hálózati kommunikáció: regisztráció szerveren, távoli menedzsment (beállítások, utasítások), adatnaplózás sziget-rendszerű működés (ha már van konfiguráció)
Központi rendszer: ● ● ● ●
eszköznyilvántartás, online konfiguráció (kapcsolás, sziget szabályzási program), eszközkezelés, távoli menedzsment, mérési / irányítási adatok naplózása, továbbítása külső rendszereknek, HTTP API külső rendszerek számára, visszacsatolás a végpontokhoz
Internet-of-Things Az APDuino koncepciórendszer ●
Mit jelent ez a gyakorlatban? –
Hardver: Az elérhető áron kapható alaplap és shield, illetve szenzorok és aktuátorok tárházának köszönhetően számos valós feladat automatizálásához adott az elektronikai háttér
–
Szoftver: Az alapfunkciókat és fő vázat megvalósító szoftver segítségével a végpontok fejlesztési ideje jelentősen lerövidíthető, illetve a beágyazott rendszer szoftverfejlesztése akár szükségtelen is.
–
Központi rendszer: A meglevő központi rendszerhez integrálva a központi rendszer fejlesztési ideje jelentősen csökkenthető.
Internet-of-Things Az APDuino koncepciórendszer Eszközmenedzsment felület (WWW GUI) BOOT
REGISZTRÁCIÓ
LOOP CORE
NEM
Reg.üzenet
Konfiguráció Utasítások Periodikus bejelentkezés (+log), Valósidejű adattovábbítás
Platform: eszköznyilvántartás, konfiguráció, adatfeldolgozás, továbbítás
API hívások Konfigurált?
IGEN
LOOP OPs
Adattovábbítás, értesítések
Internet-of-Things Az APDuino koncepciórendszer
Internet-of-Things Az APDuino koncepciórendszer ●
bootabot.com → 10 perc –
Mikro-oldal: Ruby-on-Rails+sqlite
–
Elektronika
–
Kapcsolási és szabályzási konfiguráció – 10 perc
–
Raspberry Pi + webkamera + szoftver konfiguráció
–
Szerver konfiguráció ●
apduino.org → 30 perc –
akva-/hidropóniás termőkabin mikrorendszer; szekrény, víztározó közeg, termőközeg, világítás, fűtés/hűtés/szellőztetés
–
elektronika, műszerdoboz, csatlakozók, forrasztások, kábelezés
–
Kapcsolási és szabályzási konfiguráció – 30 perc
Internet-of-Things Az APDuino koncepciórendszer
demo
Internet-of-Things informatikus mérnöki szemmel
Köszönöm a figyelmet! Schreiber György
[email protected]
Internet-of-Things informatikus mérnöki szemmel
Függelék – Források, hivatkozások, linkek
Internet-of-Things informatikus mérnöki szemmel http://en.wikipedia.org/wiki/Internet_of_Things Eszközök számának alakulása a Cisco szerint: CISCO, IBSG http://www.cisco.com/web/about/ac79/docs/innov/IoT_IBSG_041 1FINAL.pdf 2013 öt legjelentősebb technológiai trendje a Forbes magazin (prof. David Alan Grier írása szerint) http://www.forbes.com/sites/ericsavitz/2012/12/07/technologies-of -the-future-5-trends-to-watch-for-2013/
Internet-of-Things informatikus mérnöki szemmel REST – Representational State Transfer http://en.wikipedia.org/wiki/Representational_state_transfer SOAP – Simple Object Access Protocol http://en.wikipedia.org/wiki/SOAP Representational State Transfer - http://en.wikipedia.org/wiki/Representational_state_transfer Event Driven Architecture - http://en.wikipedia.org/wiki/Event-driven_architecture Service Oriented Architecture - http://en.wikipedia.org/wiki/Service-oriented_architecture Complex Event Processing - http://en.wikipedia.org/wiki/Complex_event_processing Fuzzy Logic - http://en.wikipedia.org/wiki/Fuzzy_logic
Internet-of-Things informatikus mérnöki szemmel Arduino : http://arduino.cc Arduino Library-k: http://playground.arduino.cc/Main/LibraryList Arduino Mega 2560 : http://www.arduino.cc/en/Main/arduinoBoardMega2560 Arduino EtherShield: http://www.arduino.cc/en/Main/ArduinoEthernetShield APDuino Project: http://apduino.com, http://apduino.org Raspberry Pi http://raspberrypi.org