PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Materialintegrierte Sensorische Systeme

Mit Labor @home

PD Stefan Bosse

Universität Bremen - FB Mathematik und Informatik

1 / 66

PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensornetzwerke

Wie können Sensorknoten vernetzt werden?

Welche Randbedingungen gelten in Kommunikationsnetzwerken?

Was ist besonders and materialintegrierten Netzwerken?

2 / 66

Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensoraggregation

In sensorischen Systemen werden Sensordaten in verschiedenen Ebenen verarbeitet:

Vertikale Ebenen

Perzeption (Erfassung)
Hier findet die Akquisition der rohen Sensordaten statt. Die Sensoren sind räumlich verteilt und werden lokal vorverarbeitet.
Aggregation
Einzelne Sensordaten werden zeitlich und räumlich zusammengeführt und gesammelt (Sensorfusion)
Applikation
Die gesammelten Daten werden nutzbar gemacht: Weitere Datenverarbeitung, Aufbereitung, Eigenschaftsselektion, Informationsgewinnung, Visualisierung
3 / 66

Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensoraggregation

Horizontale Ebenen

  • Die horizontalen Ebenen durchziehen alle vertikalen Ebenen:
    1. Sicherheit
    2. Datenverarbeitung
    3. Kommunikation
    4. Datenspeicherung
    5. Nachrichtenvermittlung
    6. Management
4 / 66

Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensoraggregation

Grundlegender Zusammenhang der horizontalen und vertikalen Ebenen in Sensorischen Systemen

5 / 66

Sensoraggregation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensoraggregation

Räumliche Abbildung der vertikalen Ebenen auf Cloud Computing

6 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensorfusion

Sensor Fusion: viele Sensoren helfen viel?

Sensorfusion bedeutet in verteilten Sensornetzwerken häufig Aggregation durch Kommunikation zwischen Sensorknoten

7 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensorfusion

  • 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.

8 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensorfusion

www.hbm.com Gleichzeitige Messung von Temperatur und Dehnung führt zu einer Korrekturfunktion

9 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

  • Relative Widerstandsänderung des Dehnungsmesstreifens mit Temperaturkorrektur:

ε=Δll0=ΔRkSR0,kS(T)k0+bT+cT2+dT3+.. 

10 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensorfusion

Multisensorfusion

11 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensorfusion

Klassifizierung Fusion

Redundanz
Mehrere Sensoren messen parallel die gleiche Messgröße (Eigenschaft), z. B. mehrere Temperatursensoren messen die Temperatur eines Körpers
Vielfältigkeit
Mehrere Sensoren messen verschiedene aber korrelierte Messgrößen, z. B. gleichzeitige Messung von Temperatur, Druck und Feuchtigkeit.
Bereich
Mehrere Sensoren messen die gleiche Meßgröße aber in verschiedenen Messbereichen, z. B. mehrer Temperatursensoren messen am gleichen Ort verschiedene Temperaturbereiche.
Zeit
Aktuelle Messungen von Signalen von Sensoren werden zeitlich mit historischen Informationen korreliert, z. B. von einer früheren Kalibration.
12 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensorfusion

Sensor System Konfigurationen

Komplementär
Die Sensoren sind unabhängig voneinander und vervollständigen Informationen
Konkurrierend
Jeder Sensor liefert unabhängig eine Messung der gleichen Messgröße
Kooperativ
Sensoren liefern zusammen Informationen die einzelnen nicht verfügbar wären
13 / 66

Sensorfusion PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Schätzung (Estimation)

  • Mit Schätzungstechniken lässt sich die Präzision von Messungen schlechter Qualität verbessern:
    • Mittelwertbildung (Minderung der statistischen Fluktuation)
    • Tiefpassfilter
    • Wiener Filter
    • Kalmann Filter
    • Modelbasierte Filter
14 / 66

Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Verteilte 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:

    • Einer Menge von Sensoren S={s1,s2,...}, wenigstens einem Sensor s (inkl. virtuellen),
    • Analoger Signalverarbeitung inkl. ADC A={a1,a2,...}
    • Digitale Signal- und Datenverarbeitungeinheiten P={p1,p2,..} und Speicher M={m1,..}
    • Kommunikationsmodule C={c1,c2,...},
    • Energieversorgung und Managementmodule E={e1,e2,..}
15 / 66

Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Verteilte Sensornetzwerke

Aufbau und Konnektivität eines Sensorknotens

16 / 66

Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Verteilte Sensornetzwerke

  • Verteilte Sensornetzwerke unterscheiden sich von klasschischer Datenverarbeitung
  • DSN können räumlich und zeitlich verteilt sein - ohne zentralen Rechner
  • Das Netzwerk selber ist der Rechner - eine virtuelle Maschine
17 / 66

Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

miss2k.G Von zentraler Nutzer-Applikations-orientierter (a) zu dezentraler Sensor-orientierter Datenverarbeitung (b)

18 / 66

Verteilte Sensornetzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Verteilte Sensornetzwerke

Anforderungen an und Fähigkeiten von DSN

  • niedrige Kosten
  • zuverlässig und robust gegen Störungen (Kommunikation, Energie, Ausfall von Knoten)
  • Autonomie eines Sensorknotens
  • schnelle Antwortzeit (Latenz)
  • Eignung für echtzeitfähige datenstrombasierte Verarbeitung
  • lange Betriebszeiträume
  • Kombination von verschiedenen senorischen Größen zu neuen Informationen, die durch einen einzlnen Sensor bzw. Sensorknoten nicht verfügbar wären → Daten- und Sensorfusion
  • Erhöhter Datendurchsatz durch nebenläufige Datenverarbeitung der einzelnen Sensorknoten
  • Redundanz und Fehlertoleranz durch komplimentäre Gruppenbildung und Wettbewerb sowie Kooperation von Sensorknoten
  • Zeitliche Synchronität → Synchronisation von Uhren
19 / 66

Kommunikation in DSN PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Kommunikation in DSN

Nachrichtenbasierte Vermittlungsnetzwerke

  • Ein Knoten eines Netzwerkes ist
    1. Quelle von Nachrichten, die Daten und somit Sensoren kapseln,
    2. Empfänger von Nachrichten, und
    3. Vermittler (Router) von Nachrichten (Zwischenknoten)
20 / 66

Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Ad-hoc Netzwerke

  • 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.

21 / 66

Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Sensorknoten (aka motes)

  • Übliches Designziel: klein und gunstig

  • Mikroprozessor

    • wenige MHz bis einige hundert MHz
    • energiesparende Zustande
  • Speicher

    • haufig nur wenige KB Arbeitsspeicher
    • teils zusatzlich Flashspeicher fur Code und Daten
22 / 66

Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Ad-hoc Netzwerke

  • Sensorik

    • Temperatur, Licht, Druck, Beschleunigung, Ultraschall uvm.
  • Drahtlose Kommunikation

    • Reichweiten von wenigen Metern bis einige hundert Meter
    • Erste Standards, z. B. IEEE 802.15.4 (WPAN) und ZigBee
  • Energieversorgung

    • heute meist Batterien
    • in Zukunft: Solarzellen und anderes Energy Harvesting
23 / 66

Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Ausbringung

  • Keine zentrale Infrastruktur

    • Initiale Position haufig unbekannt
    • Multihop-Kommunikation
  • Aufgaben

    • Erkennen / Melden von Ereignissen
    • Beantworten von Anfragen
24 / 66

Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Ad-hoc Netzwerke

KIT (Links) Technologien von Sensorknoten für Ad-hoc Netzwerk (Rechts) Dynamische Netzwerkstrukturen

25 / 66

Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Ad-hoc Netzwerke

Herausforderungen

  • Geringes Energiebudget
    • geringe Leistung ↔ (jahre-)lange Bereitschaft
    • Lastbalancierung, Aufteilung von Aufgaben
  • Geringer Speicher, geringe Rechenleistung
    • verteilte Losungen ↔ komplexe Selbstorganisation
  • Viele Sensorknoten
    • Algorithmen müssen gut mit Größe des Netzes skalieren
  • Geometrie
    • enger Zusammenhang zwischen Positionen und Daten/Aufgaben
    • gemeinsame Nutzung und Störung der Funkkanäle
  • Redundanz, Unzuverlässigkeit und Dynamik
    • Knoten können ausfallen, sich bewegen
    • viele Knoten können Aufgaben redundant ausführen
26 / 66

Ad-hoc Netzwerke PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Ad-hoc Netzwerke

Anwendungen

  • Umweltüberwachung
    • Waldbrände, Gletscherbewegungen
    • Bewässerung von Agrarflachen
    • Schadstoffe (chemisch, radioaktiv)
  • Beobachtung von Tieren
    • Überwachung von Brutstätten, Bewegungen
    • Intelligente Zäune
  • Internet of Things
    • Smart Cities, Smart Homes
    • Vernetzung alltäglicher Produkte
  • Medizinische Überwachung
    • Patienten im Krankenhaus
  • Sicherheit
    • Grenzüberwachung
    • Überwachung von Gebäuden
  • Verkehrsoptimierung
    • Stauwarnungen
  • Materialintegrierte Sensorsysteme
    • Strukturüberwachung
    • Smart Things
    • Artificial Skin
    • E-Textiles
27 / 66

IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

IP Kommunikation

  • Internet Kommunikation mit dem Internet Protocol (IP)
    • Netzwerkknoten benötigen eindeutige IP Adresse (nicht für MISS geeignet!)

IP-4

IP-6

28 / 66

IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Das Internet ist ein Netz aus Netzen (hierarchisch und verteilt)

  • Netzwerkadressen werden in räumlichen Domains zusammengefasst (IP4)
  • Geräte benötigen daher lokale IP Adressen (u.U. wechselnd)
  • IP6 ordnet Geräten eindeutige Adressen zu (mobil)
29 / 66

IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

IP Kommunikation

Domainen im Internet und Netze aus Netzen

30 / 66

IP Kommunikation PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

IP Kommunikation

  • Private Netzwerke und die immer größer werdende Anzahl von Geräten erfordern bei IP4 NAT (nicht bei IP6)
  • NAT: Netwrok Address Translation

Kommunikation zwichen privaten IP Netzwerken über NAT

31 / 66

Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Remote Procedure Call

  • 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:

Get Request (port)
Der Serverprozess gibt die Verarbeitung von RPC Anfragen auf einem bestimmten Port bekannt.
PutReply (client)
Der Serverprozess sendet eine Antwort auf eine RPC Anfrage
Transaction (port,data)
Der Klientenprozess sendet eine RPC Anfrage an einen Server (port) und wartet auf die Antwort
32 / 66

Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Remote Procedure Call

RPC ist Interprozesskommunikation!

Neben Datenübertragung dient RPC zur Ausführung von Prozeduren (Funktionen) mit Daten!

33 / 66

Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Remote Procedure Call

LUAOS

rpc = rpc:new()
rpc:getreq
function (host:string,port:number,handler: function (data:table) → table|nil)
Ein Server wird gestartet. Die benutzerdefinierte Handlerfunktion wird bei jedem Request aufgerufen und muss einen Datenrekord zurückgegben (oder nil)
rpc:putrep
function (client:userdata, data:table)
Der Server sendet die Rückantwort (implizit in rpc:getreq enthalten)
rpc:trans
function (host:string,port:number,data:table) → error:nil|string,table|nil
Ein Servertransktion durch einen Klienten.
34 / 66

Remote Procedure Call PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Remote Procedure Call

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 reply
end)

LUAOS Serverprozess

35 / 66

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

36 / 66

Konzept PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

LUAOS

Konzept

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

    • Skriptausführung über eine Shell mit Monitoring
  • LUAOS:

    • Ausführung von Skripten in einem Sandkasten
    • Scheduling und Multithreading
    • Einfache Sensor und Geräte API
37 / 66

Konzept PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Konzept

  • Ein Skript wird in einem eigenen gekapselten Thread ausgeführt (mit jeweils eigenen Ausführungszustand und VM)
    • Ein Skript kann weitere Fibers erzeugen
    • Ein Skript hat einem maximale durchgehende Laufzeit von einer Sekunde (danach wird das Skript abgebrochen)
    • Die Ausführung muss daher durch blockierende IO, der yield, oder der sleep Funktionen unterbrochen werden
38 / 66

WEB Interface PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

WEB Interface

  • Das LUAOS ist über ein WEB Interface erreichbar

Typische Schnappschuss der LUAOS WEBAPI mit Netzwerkübersicht (links oben) und verschiedenen Fenstern

39 / 66

LUAOS Architektur PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

LUAOS Architektur

Verteiltes LUAOS System mit WEB API

40 / 66

LUVM Architektur PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

LUVM Architektur

  • Die LUAOS VM (LUVM) besteht aus:
    • LUA Parser → Skripttext wird direkt in Bytecode Instruktionen übersetzt (kein Parserbaum und AST)
    • LUA Bytecode Interpreter (BC Loop ist in Assembler programmiert!)
    • LUA JIT Compiler der zur Laufzeit BC in nativen Maschinencode übersetzt
    • LUA-C API für native Erweiterungen
    • Automatisches Speichermanagement mit Garabage Collector (Nicht inkrementeller Mark & Sweep Algorithmus)
    • Asynchrone IO mit einer UV Loop (libuv, wird auch in node.js verwendet)
    • LUV: LUA-UV API Interface
    • LUV Module: Thread, Fiber, State, Filesystem (FS), Network (Net), Timer, Process, Pipe, Codec (Serialisierung)
41 / 66

LUVM Architektur PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

LUVM Architektur

Aufbau der LUAOS VM

42 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

function clock() → number
Gibt die aktuelle Systemzeit in Millisekunden zurück
function print(...)
Ausgabe von Text oder Werten auf der virtuellen Konsole
function sleep(millisec)
Der aufrufende Prozess wird für die angegebene Zeit blockiert
function yield()
Blockierender Aufruf des Schedulers und Abgabe der Ausführung (an andere Prozesse) mit späterer Fortführung
43 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Fiber (koroutinen)

  • Leichtgewichtige Tasks (werden geschachtelt sequenziell ausgeführt)
function fiber.create (function(args...), args...) → fiber
Erzeugt einen neuen leichtgewichtigen Prozess. Der Prozess ist sofort ausführungsbereit.
function fiber:join()
Der aufrufende Prozess wird blockiert bis der Subprozess terminiert ist
44 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

HTTP

  • HTTP Server und Klienten
function http:new() → http
Erzeugt eine neue HTTP Instanz
function http:get(url, function (data,error))
Ausführung einer HTTP GET Anfrage. Das Ergebnis (Fehler oder Daten) wird durch eine asynchrone Rückruffunktion bearbeitet.
function http:put(url, data, function (data,error))
Ausführung einer HTTP OUT Anfrage. Das Ergebnis (Fehler oder Daten) wird durch eine asynchrone Rückruffunktion bearbeitet.
function http:service(ipport, function (url,address,params,body) → string)
Installation eines HTTP Service (IP Port ipport). Eingehende GET/PUT Anfragen werden durch eine Rückruffunktion bearbeitet. Das Ergebnis der Anfrage wird von dieser Funktion als Text zurück gegeben.
45 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

HTML

  • Ein HTML Text Formattierer
function html:new() → html
Erzeugt eine neue HTML Formattierungssnstanz
function html:html(head:html string,body: html string) → string
Erzeugt den Rahmen einer HTML Seite
function html:head() → string
Erzeugt den Kopf einer HTML Seite
function html:body(html string table) → string
Erzeugt den Inhalt einer HTML Seite

function html:table(head table, body table table) → string

Weitere Funktionen: h1, h2, h3, ol, ul, li, dl, dt, dd

46 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

Timer

  • Intervalltimer die in Fibers und Skripten benutzt werden können um periodisch Tasks auszuführen
function timer:new() → timer
Erzeugt einen neuen Timer.
function timer:start(interval:number,period:number)
Startet den Timer mit dem angegebenen Intervall und der Periodenzeit (oder 0). Nach Ablauf des Intervalls wird ein Ereignis signalisiert, auf welches mit der await Operation gewartet werden kann.
function timer:stop()
Stoppt den Timer. Es werden keine weiteren Ereignisse mehr signalisiert.
function timer:wait()
Auf ein Timerereignis warten. Der aufrufende Prozess wird blockiert.
47 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

Sensor

  • Zugriff auf und Implementierung von Sensoren
function sensor:all() → table
Gibt eine Liste alle verfügbaren Sensoren zurück (Liste der Namen)
function sensor:new(sensorclass:string,...) → sensor
Erzeugt eine neue Sensorinstanz vom Typ sensorclass. Mögliche Klassen sind: "temperature", "cpu".
function sensor:read() → number|string|table|nil
Gibt den aktuellen Sensorwert zurück.
function sensor:calibrate?(...)
Kalibriert den Sensor oder die Sensorfunktion.
48 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

Actor

function actor:all() → table
Gibt eine Liste alle verfügbaren Aktuatoren zurück (Liste der Namen)
function actor:new(actorclass:string,...) → actor
Erzeugt eine neue Aktuatorinstanz vom Typ actorclass. Mögliche Klassen sind: "dotdisp"".
function actor:reset(...)
Setzt den Aktuator in einen definierten Anfangszustanf.
function actor:set(...)
Setzt eine Steuervariable mit einem neuen Aktuatorwert.
function actor:get?(string) → number|string|table|nil
Gibt den Wert einer Aktuatorvariable zurück.
function actor:control?(...)
Ausführung eines Steuerkommandos.
49 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

Punktmatrix Ausgabegerät

  • 8 rows and 8 cols LED matrix
  • Driven by HT16K33 chip
  • Access to I2C communication pins

50 / 66

Skript API PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Skript API

Beispiele

-- Actor DOTS Matrix
local 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 Temperatur
local s = sensor:new('temperature')
print(s:read())
51 / 66

Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Asynchrone Ereignisverarbeitung

Synchrone Verarbeitung
Die aufrufende Operation, z.B. das Lesen aus einer Datei, wird solange "blockiert"/wartet (genauer die Prozessausführung), bis das Ereignis eingetreten ist, d.h. im Beispiel die Daten gelesen wurde.
  • Eine synchrone Operation (Prozedur) gibt das Ergebnis der Operation direkt zurück
52 / 66

Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Asynchrone Verarbeitung
Die aufrufende Operation wartet nicht auf das Eintreten des Ereignisses (keine Blockierung), und der Prozesse fährt unmittelbar danach in der Ausführung folgender Operationen fort.
  • Jetzt wird eine Rückruffunktion verwendet, um beim Eintreten des Ereignisses die Daten (oder das Ereignis) verarbeiten zu können.
  • In JavaScript werden i.A. alle Ein- und Ausgabeoperation asynchron ausgeführt. In Lua gibt es eine ausgewogene Mischung, bzw. die synchrone Variante ist vorherrschend.
53 / 66

Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Asynchrone Ereignisverarbeitung

result = ioop1synchron(arg1,arg2,..)
result = ioop2synchron(arg1,arg2,..)
..

Process=ioop1synchronioop2synchronnext Synchrone Ereignisverabeitung

54 / 66

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=ioop1asynchronioop2asynchronnext..→function1function2 |
ioop1asynchronioop2asynchronnext..→function2function1 |
ioop1asynchronfunction1ioop2synchronnext.. | .. Asynchrone Ereignisverabeitung

55 / 66

Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Asynchrone Ereignisverarbeitung

Beispiele in Lua

  • Die sleep Operation kann verwendet um den aktuellen Programmfluss für eine bestimmte Zeit (Millisekunden) anzuhalten
local s = sensor:new('temperature')
local doit = true
while doit do
local v = s:read()
print ('The current temperature is '..v)
sleep (1000)
end

Synchrone Verzögerung einer Serviceschleife

56 / 66

Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Asynchrone Ereignisverarbeitung

  • Alternativ kann auch ein Timer erzeugt werden. Nach dem Start des Timers (mittels der start Methode und der Angabe des Zeitintervalls bis ein Timerereignis ausgelöst wird und dem Zeitintervall zwischen zwei Ereignissen) kann mittels der wait Methode der Prozessfluss angehalten werden bis ein Timerereignis eintritt
local s = sensor:new('temperature')
local t = timer:new()
local doit = true
t: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

57 / 66

Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Asynchrone Ereignisverarbeitung

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

58 / 66

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

59 / 66

Asynchrone Ereignisverarbeitung PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Asynchrone Ereignisverarbeitung

Ereignisbasierte Verarbeitung von asynchronen Operationen in lvm: Ein Lua Thread verbunden über die Eventloop mit N IO Threads

60 / 66

Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Lua - Ausführungsmodelle

Threads

  • 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:

    • Channel
    • Semaphore, Mutex
    • Event, Timer
    • Shared Memory Store
  • 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)!

61 / 66

Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Lua - Ausführungsmodelle

Fibers und Koroutinen

  • 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:

    • Channel
    • Semaphore
    • Event, Barriere, Timer
  • 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)

62 / 66

Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Lua - Ausführungsmodelle

Threadmodell und Kommunikation der Prozesse mit geteilten Objekten

63 / 66

Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Lua - Ausführungsmodelle

IO Paralellisierung

  • Neben Threads, Fibers, und Prozessen kann auch die Parallelisierung von Ein- und Ausgabeoperation genutzt werden → Kontrollpfadparallelität
  • Asynchrone IO wird sowohl in nodejs (JavaScript) als auch in Lua (lvm) mittels der libuv Bibliothek implementiert

    • Verwendung von Callback Funktionen für die Daten- und Ereignisverarbeitung
    • Anders als in JavaScript (nodejs) wird asynchrone IO in Lua eher seltener verwendet
  • Fibers (Koroutinen) werden in Lua direkt durch die Lua VM verarbeitet

  • Threads werden über die libuv einzelnen VM Instanzen zugeordnet

    • Verbindung der Instanzen über libuv
    • Jede VM Instanz hat ihre eigene Event Loop!
64 / 66

Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Lua - Ausführungsmodelle

docs.libuv.org/en/v1.x/design.html Asynchrone IO mit der libuv Architektur

65 / 66

Lua - Ausführungsmodelle PD Stefan Bosse - MISS - Modul C: Sensornetzwerke

Aufgabe

  1. 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?

  2. Was sind Vorteile und Nachteile der synchronen gegenüber der asynchronen Ereignis- und Datenverarbeitung?

66 / 66