PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Mit Labor @home
PD Stefan Bosse
Universität Bremen - FB Mathematik und Informatik
PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Wie können Sensorknoten vernetzt werden?
Welche Randbedingungen gelten in Kommunikationsnetzwerken?
Was ist besonders and materialintegrierten Netzwerken?
Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
In sensorischen Systemen werden Sensordaten in verschiedenen Ebenen verarbeitet:
Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Grundlegender Zusammenhang der horizontalen und vertikalen Ebenen in Sensorischen Systemen
Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Räumliche Abbildung der vertikalen Ebenen auf Cloud Computing
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Sensor Fusion: viele Sensoren helfen viel?
Sensorfusion bedeutet in verteilten Sensornetzwerken häufig Aggregation durch Kommunikation zwischen Sensorknoten
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Die Genauigkeit einer Messung bzw. das Vertrauen in einen Messwert lässt sich durch Zusammenschluss und Korrelation mehrerer verschiedener Sensoren R1,R2, ... und Sensorsignale erhöhen sr1,sr2,.. ⇒ Sensordatenfusion
So kann z.B. gleichzeitig die Dehnung mit einem Dehnungssensor (Wandlung in elektrische Widerstandsänderung) und die Temperatur mit einem Temperaturssensor gemessen werden, um auch systematischer Fehler durch Temperaturdrift der Übertragungsfunktion kompensieren zu können.
Durch die Spannungsversorgung und ein Stromfluss I=U/R erwärmt sich ein Dehnungsmessstreifen gegenüber dem Messkörper. Je nach Wärmeleitfähigkeit des Messkörpers wird die Wärmeleistung mehr oder weniger an den Messkörper abgegeben. Bei schlecht wärmeleitenden Messkörpern kann es somit zu einem Temperaturunterschied zwischen Messkörper und Dehnungsmessstreifen kommen.
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
www.hbm.com Gleichzeitige Messung von Temperatur und Dehnung führt zu einer Korrekturfunktion
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
ε=Δll0=ΔRkSR0,kS(T)≈k0+bT+cT2+dT3+..
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Multisensorfusion
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
(Distributed Sensor Networks DSN)
Ein verteiltes Sensornetzwerk besteht aus einer Menge von Sensor Knoten N={n1,n2,...}, die in einem Kommunikationsnetzwerk miteinander verbunden sind.
Ein Sensorknoten besteht aus:
Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Aufbau und Konnektivität eines Sensorknotens
Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
miss2k.G Von zentraler Nutzer-Applikations-orientierter (a) zu dezentraler Sensor-orientierter Datenverarbeitung (b)
Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Kommunikation in DSN PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Ad-hoc Netzwerke deren Struktur und Verbindungen sich erst zur Laufzeit bilden.
Dabei kann sich die Struktur (Netzwerktopologie) dynamisch ändern.
Es können Knoten und Verbindungen zwischen Knoten hinzukommen und verschwinden.
Selbstorganisation und Selbstkonfiguration können wesentliche Prinzipien wärend der Bildung und danach sein.
Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Übliches Designziel: klein und gunstig
Mikroprozessor
Speicher
Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Sensorik
Drahtlose Kommunikation
Energieversorgung
Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Keine zentrale Infrastruktur
Aufgaben
Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
KIT (Links) Technologien von Sensorknoten für Ad-hoc Netzwerk (Rechts) Dynamische Netzwerkstrukturen
Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
IP-4
IP-6
IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Das Internet ist ein Netz aus Netzen (hierarchisch und verteilt)
IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Domainen im Internet und Netze aus Netzen
IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Kommunikation zwichen privaten IP Netzwerken über NAT
Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Der RPC dient der Klienten-Server Kommunikation, wobei anders als bei HTTP Servern die Rolle von Klient und Server beliebig getauscht werden kann
Es gibt drei Operationen:
Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
RPC ist Interprozesskommunikation!
Neben Datenübertragung dient RPC zur Ausführung von Prozeduren (Funktionen) mit Daten!
Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
rpc = rpc:new()
function (host:string,port:number,handler: function (data:table) → table|nil)
function (client:userdata, data:table)
function (host:string,port:number,data:table) → error:nil|string,table|nil
Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
local rpc = rpc:new()rpc:getreq('127.0.0.1',12345, function (request) local reply = {} print(request) case request.cmd of "square" => y=request.x*request.x; reply = { status = "OK", y = y } end "sqrt" => y=math.sqrt(request.x); reply = { status = "OK", y = y } end else reply = {status = "EINVALIDMCD" } end end return replyend)
LUAOS Serverprozess
Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
local rpc = rpc:new()local err,reply = rpc:trans('127.0.0.1',12345, { cmd='square', x=math.random() })if err then print(err) else print(reply) end
LUAOS Klientenanfrage
Konzept PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
LUAOS: Lua Operating System
LUAOS wird auf einem Rechner (Netzwerkknoten) durch eine Lua VM ausgeführt (lvm)
LUAOS bietet einen WEB basierten Zugriff auf Rechnerknoten
LUAOS:
Konzept PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
WEB Interface PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Typische Schnappschuss der LUAOS WEBAPI mit Netzwerkübersicht (links oben) und verschiedenen Fenstern
LUAOS Architektur PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Verteiltes LUAOS System mit WEB API
LUVM Architektur PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
LUVM Architektur PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Aufbau der LUAOS VM
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
function html:table(head table, body table table) → string
Weitere Funktionen: h1, h2, h3, ol, ul, li, dl, dt, dd
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
-- Actor DOTS Matrixlocal dot = actor:new('dots')dot:reset()-- dot:set(on,row,col)dot:set(1,4,4)sleep(1000)dot:set(0,4,4)-- Sensor CPU Temperaturlocal s = sensor:new('temperature')print(s:read())
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
result = ioop1synchron(arg1,arg2,..)result = ioop2synchron(arg1,arg2,..)..
Process=ioop1synchron→ioop2synchron→next Synchrone Ereignisverabeitung
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
ioop1asynchron(arg1,arg2,..,function1 (p1,p2,..) processing end)ioop2asynchron(arg1,arg2,..,function2 (p1,p2,..) processing end)..
Process=ioop1asynchron→ioop2asynchron→next..→function1→function2 |
ioop1asynchron→ioop2asynchron→next..→function2→function1 |
ioop1asynchron→function1→ioop2synchron→next.. | ..
Asynchrone Ereignisverabeitung
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
local s = sensor:new('temperature')local doit = truewhile doit do local v = s:read() print ('The current temperature is '..v) sleep (1000)end
Synchrone Verzögerung einer Serviceschleife
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
local s = sensor:new('temperature')local t = timer:new()local doit = truet:start(1000,1000)while doit @do local v = s:read() print ('The current temperature is '..v) t:wait()end
Synchrone Verzögerung einer Serviceschleife mit einem Timer
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
local s = sensor:new('temperature')setInterval(1000, function () local v = s:read() print ('The current temperature is '..v)end)
Periodische asynchrone Ausführung einer Serviceschleife
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
local H = html:new({})local s = sensor:new("temperature")http:service(8080,function (req,url,remote,params) return H:html(H:head(),H:body({ H:h1("Temperature"), H:p(s:read()) }))end)
Asynchrone Implementierung eines HTTP WEB Servers
Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Ereignisbasierte Verarbeitung von asynchronen Operationen in lvm: Ein Lua Thread verbunden über die Eventloop mit N IO Threads
Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Es werden parallele Prozesse auf Threads abgebildet die bestenfalls 1:1 auf den CPUs / Cores ausgeführt werden, ansonsten durch einen Scheduler im Zeitmultiplexverfahren ausgeführt werden → Kontrollpfadparallelität
Prozesse können synchronisiert auf geteilte Objekte (konkurrierend) zugreifen:
Prozessblockierung blockiert den gesamten Thread (somit auch alle Fibers)
Jeder parallele Prozess in einem Thread läuft in eigener VM Instanz
Daten können nicht zwischen VMs ausgetauscht werden (Automatsisches Speichermanagement und GC) → nur Austausch über Serialisierung und Kopie von Daten oder geteilte Byte Datenspeicher (Shared Buffer)!
Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Es werden konkurrierende (aber nicht notwendig nebenläufige) Prozesse (Koroutinen) auf Fibers abgebildet die grundsätzlich in Lua nur sequenziell durch einen Scheduler im Zeitmultiplexverfahren ausgeführt werden.
Diese Prozesse können synchronisiert auf geteilte Objekte (nicht nebeläufig) zugreifen:
Prozessblockierung blockiert nur eine Koroutine
Alle quasi-parallelen Prozesse mit Fibers laufen in einer VM Instanz und teilen sich den VM Datenkontext sowie besitzen den gleichen Programmkontext (direkte Teilung von Variablen und Funktionen)
Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Threadmodell und Kommunikation der Prozesse mit geteilten Objekten
Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Asynchrone IO wird sowohl in nodejs (JavaScript) als auch in Lua (lvm) mittels der libuv Bibliothek implementiert
Fibers (Koroutinen) werden in Lua direkt durch die Lua VM verarbeitet
Threads werden über die libuv einzelnen VM Instanzen zugeordnet
Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
docs.libuv.org/en/v1.x/design.html Asynchrone IO mit der libuv Architektur
Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke
Was ist der Nachteil bei der Verwendung eines Timers mit explizitem Warten auf das Ereignis im Vergleich zur sleep Operation oder der asynchronen Ausführung mittels setInterval?
Was sind Vorteile und Nachteile der synchronen gegenüber der asynchronen Ereignis- und Datenverarbeitung?