Kakukkosóra multimédia alkalmazás rapid prototyping módszerrel történő összeállítása dataflow programozási architektúra alapokon, elosztott rendszerű heterogén kialakítású alacsony energiafelvételű nyílt forráskódú server környezetre, AJAX felhasználói felülettel
http://192.168.2.1:8080 access point: homeaut.com
AP: homeaut.com
http://192.168.2.1:8080
Dataflow alapok – definíció Applikáció: hálózat előgyártott komponensekből Programozás: komponensek kiválasztása, paraméterezése, hálózat kialakítása
AP: homeaut.com
http://192.168.2.1:8080
Dataflow alapok – komponens, portok • consumer (input) • property • producer (output) Komponens library: lehetőségek, “nyelv”
AP: homeaut.com
http://192.168.2.1:8080
Dataflow alapok – adattípusok • Trigger • Integer • Packet (pár byte) • kép • hang • szövegsorok (Unix pipe) • összetett packet
AP: homeaut.com
http://192.168.2.1:8080
Dataflow alapok – üzenettovábbítás Dispathcer típusok: szinkron, aszinkron... Párhuzamos futtatás: t öbbprocesszoros, többgépes rendszerek támogatása... Az üzenetek ténylegesen vagy kvázi egyszerre továbbítódnak...
AP: homeaut.com
http://192.168.2.1:8080
A fejlesztés szétválik • rendszer (dispatcher, fejlesztői környezet) adott, sok beleszólásunk nincs, hacsak nem magunk írjuk
• komponensfejlesztés nem mindig lehetséges, hagyományos programozás, kisebb feladatok, rendszerszemlélet szükségeltetik
• applikációfejlesztés “több mint konfigurálás, kevesebb mint programozás”, érettségi kell hozzá, no meg persze a domain ismerete
AP: homeaut.com
http://192.168.2.1:8080
Komponensfejlesztés 1. 2.
Natív komponens (homeaut.com: C++) Kompozit komponens – Blinker:
kompozit komponensek tetszőleges mélységig egymásba ágyazhatók
AP: homeaut.com
http://192.168.2.1:8080
Kakukkosóra specifikáció Master: • 6 kakukk dolgozik szakadatlan • heartbeat IP-n • lámpás játék • webes megjelenítés Slave: • elsődleges gép kiesésekor átveszi a fő funkciót
AP: homeaut.com
http://192.168.2.1:8080
Pulsar komponens Pulsar komponens: megadott időközönként (ms) Triggert küld ki. Egy ilyen komponens fogja megnoszogatni a kakukkokat 10 másodpercenként.
AP: homeaut.com
http://192.168.2.1:8080
Cuckoo komponens Cuckoo komponens: 6-ot rakunk le belőle. Paraméterei: • melyik webes widgethez van hozzárendelve, • melyik hangot játssza le.
AP: homeaut.com
http://192.168.2.1:8080
Összekötés fail Így minden kakukk egyszerre szólal meg. (Az üzenetek egyszerre továbbítódnak)
AP: homeaut.com
http://192.168.2.1:8080
Carousel komponens Carousel komponens: különleges message továbbítás az out producer porton, nem egyszerre küldi el, hanem egyesével, körbe-karikába
AP: homeaut.com
http://192.168.2.1:8080
Kakukkosóra kakukkoló kész A Pulsar 10 s időközönként triggereli a Carousel-t, aki egyesével továbbítja azt a cuckoo1..cuckoo6-nak.
AP: homeaut.com
http://192.168.2.1:8080
Kakukkosóra Master, Heartbeat I. Heartbeat küldése: egy másik Pulsar Blinker: olyan webes widget, amely Trigger érkezésekor felvillan
AP: homeaut.com
http://192.168.2.1:8080
Kakukkosóra Master, Heartbeat II.
Remote: bejövő értékek Packet-be csomagolása UdpSend: Packet küldése IP-n, másik gépre
AP: homeaut.com
http://192.168.2.1:8080
Kakukkosóra Master áttekintés heartbeat küldése
kakukkok sorban
AP: homeaut.com
http://192.168.2.1:8080
Ismertebb dataflow rendszerek I. Unix shell pipes • komponens: parancsok felparaméterezve • adattípus: csak egyféle, szöveg soronként • kapcsolat: korlátozott, 1 in (stdin), 2 out (stdout, stderr) • futás: párhuzamos (MS-DOS: egymás után, file) • érdekesség: minden cli program helyből komponens /usr/bin/tee
AP: homeaut.com
http://192.168.2.1:8080
Ismertebb dataflow rendszerek II. Spreadsheet (pl. Excel) • komponens: képlet (kár, hogy nincs library!) • adattípus: szám, szöveg • kapcsolat: hivatkozási hálózat • futás: csak komponens módosításkor • érdekesség: komponensekre hivatkozás címmel És most legalább megtudtuk azt is, hogy spreadsheetek készítése programozás-e vagy sem: határeset (Egy HTML oldal elkészítése viszont nem az, ha már itt tartunk.)
AP: homeaut.com
http://192.168.2.1:8080
Ismertebb dataflow rendszerek III. Make • komponens: egyes elemek fordítása (job) • adattípus: csak egyféle, “megváltozott” trigger • kapcsolat: dependency-tree • futás: kézi indításkor minden üzenet lefut • érdekesség: párhuzamos rendszer make -j
AP: homeaut.com
http://192.168.2.1:8080
Szép visual programming I. Quartz Composer Terület: grafika Mac-hez adják
AP: homeaut.com
http://192.168.2.1:8080
Szép visual programming II. Microsoft Robotics Studio
AP: homeaut.com
http://192.168.2.1:8080
Szép visual programming III. Rane Drag Net Terület: audio rendszer
AP: homeaut.com
http://192.168.2.1:8080
Szép visual programming IV. Blender Terület: video, img proc
opensource
AP: homeaut.com
http://192.168.2.1:8080
Szép visual programming V. Clavia Nord Modular
Win32 és Mac editor
AP: homeaut.com
http://192.168.2.1:8080
Köszönjük a figyelmet! Amíg a kérdezők felkészülnek, leállítjuk a master applikációt. Innentől a slave gép veszi át a feladatot, ha minden összejön.
AP: homeaut.com
http://192.168.2.1:8080
Kérdések I. Miért jó ez? • REUSE helyett USE, azonnal bevethető kódok • kétféle fejlesztő: komponens- és applikáció• gyorsan összedobáljuk a prototípust, gyorsan módosítunk • hirtelen lefejlesztjük a bétás komponenst, később ráérünk tökéletesíteni • többszálúság anélkül, hogy a komponensnek ezzel törődni kéne (make: a gcc nem többszálú)
AP: homeaut.com
http://192.168.2.1:8080
Kérdések II. Házautomatizáláshoz miért jó? • minden ház egyedi applikáció, egyedi logikák, egyedi felület • mindig vannak kivételek, fura kívánságok, nincs az a konfigurációs séma, ami ne dőlne be • driver architektúra: protocol és transport komponensek • nagyobb épületekhez többszerveres architektúra
AP: homeaut.com
http://192.168.2.1:8080
Néznivaló – Kakukkosóra Slave
Röviden: a blockert 7000 ms-onként áteresztőre állítja az enabler, 4444 ms-onként blokkolóra a heartbeat (udprecv, remote felől érkezik a master gépről). A heartbeat reseteli az enablert is, így amíg jön heartbeat, a blocker zárva marad. Ha nem jön, enabler kinyitja, és 10000 ms-onként kakukkoltat a cuckoo_clock Pulsar.