... | @@ -15,8 +15,8 @@ |
... | @@ -15,8 +15,8 @@ |
|
6.3 [Betriebssystem](#betriebssystem)
|
|
6.3 [Betriebssystem](#betriebssystem)
|
|
6.4 [Hardware](#hardware)
|
|
6.4 [Hardware](#hardware)
|
|
7. [Schnittstellen](#schnittstellen)
|
|
7. [Schnittstellen](#schnittstellen)
|
|
7.1 [Socketverbindung](#socketverbindung)
|
|
7.1 [Initialisierung der Backend-Verbindung](#initialisierung-der-backend-verbindung)
|
|
7.2 [WebRTC](#webrtc)
|
|
7.2 [Frontend](#frontend)
|
|
8. [Usertests](#usertests)
|
|
8. [Usertests](#usertests)
|
|
8.1 [Vorgehen](#vorgehen)
|
|
8.1 [Vorgehen](#vorgehen)
|
|
8.2 [Ergebnisse](#ergebnisse)
|
|
8.2 [Ergebnisse](#ergebnisse)
|
... | @@ -52,12 +52,65 @@ |
... | @@ -52,12 +52,65 @@ |
|
|
|
|
|
Die Kommunikation zwischen der AmbientBox und dem Accelerator erfolgt ebenso wie die interne AmbientBox-Kommunikation über Websockets. Dafür wird Socket.io Version 2.4.0 verwendet. Aufteilen lässt sich die Kommunikation zwischen den beiden Systemen in Frontend- und Backend-Kommunikation.
|
|
Die Kommunikation zwischen der AmbientBox und dem Accelerator erfolgt ebenso wie die interne AmbientBox-Kommunikation über Websockets. Dafür wird Socket.io Version 2.4.0 verwendet. Aufteilen lässt sich die Kommunikation zwischen den beiden Systemen in Frontend- und Backend-Kommunikation.
|
|
|
|
|
|
### Backend
|
|
### Initialisierung der Backend-Verbindung
|
|
|
|
|
|
Das Backend der AmbientBox setzt sowhl einen Socket.io-Client als auch -Server um. Der Server dient zur Kommunikation zwischen dem AmbientBox Backend und Frontend. Die hauptsächliche Aufgabe besteht dabei bei der Weiterleitung von Verbindungsinformationen und Nutzerevents von Seiten des Accelerator und der AmbientBox.
|
|
Das Backend der AmbientBox setzt sowhl einen Socket.io-Client als auch -Server um. Der Server dient zur Kommunikation zwischen dem AmbientBox Backend und Frontend. Die hauptsächliche Aufgabe besteht dabei bei der Weiterleitung von Verbindungsinformationen und Nutzerevents von Seiten des Accelerator und der AmbientBox.
|
|
Die Client-Verbindung ziehlt auf die Anbindung zwischen den beiden Systemen ab. In der nachfolgenden Abbildung ist der Ablauf eines Verbindungsaufbaus zwischen den beiden Systemen zu sehen.
|
|
Die Client-Verbindung ziehlt auf die Anbindung zwischen den beiden Systemen ab. In der nachfolgenden Abbildung ist der Ablauf eines Verbindungsaufbaus zwischen den beiden Systemen zu sehen.
|
|
|
|
|
|
### Frontend
|
|

|
|
|
|
Abbildung X: Verbindungsabufbau zwischen der AmbientBox und dem Accelerator
|
|
|
|
|
|
|
|
Wenn die AmbientBox angeschaltet wird, wird nach der Initialisierung von unterschiedlichen Socket-Listenern eine Verbndungsanfrage an den Accelerator gesendet. Der Accelerator initialisiert ebenfalls zu Beginn derLaufzeit Socket-Listener. Nachfolgend sind die relevanten Listener-Events der AmbientBox und des Accelerators aufgelistet aufgelistet:
|
|
|
|
|
|
|
|
| Event | Funktionalität |
|
|
|
|
| --------------- | -------------------------------------------------------------------------------------------------------- |
|
|
|
|
| connect | Erfasst den erfolgreichen Verbindungsaufbau und sendet die Aktivierung der AmbientBox an den Accelerator |
|
|
|
|
| disconnect | Erfasst einen Verbindungsabbruch und aktualisiert die LED-Leiste |
|
|
|
|
| reconnect | Erfasst ein Reconnect nach einem Verbindungsabbruch und setzt den Error-Zähler zurück |
|
|
|
|
| joinRoom | Leitet Informationen über den Nutzer, den aktuellen Raum und den Nutzerstatus an das Frontend weiter |
|
|
|
|
| userStatus | Erfasst einen neuen Nutzerstatus und leitet diesen weiter |
|
|
|
|
| leaveRoom | Leitet an das Frontend weiter, dass der Nutzer sich von der AmbientBox disconnected hat |
|
|
|
|
| connect_error | Erfasst Verbindungsfehler |
|
|
|
|
| connect_timeout | Erfasst Verbindungsüberschreitungen |
|
|
|
|
| error | Erfasst undefinierte Fehler |
|
|
|
|
|
|
|
|
Tabelle X: Event-Listener auf der Seite der AmbientBox
|
|
|
|
|
|
|
|
| Event | Funktionalität |
|
|
|
|
| --------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
|
|
| connection | Erfasst alle Verbindungsanfragen und sendet bei Erfolg das "connect"-Event |
|
|
|
|
| disconnect | Erfasst alle Verbindungsabbrüche und aktualisiert die Liste der AmbientBoxen |
|
|
|
|
| activateAmbientBox | Erfasst die ID einer AmbientBox und aktiviert diese in der Liste aller AmbientBoxe |
|
|
|
|
| join | Erfasst alle Nutzer, welche in einen Raum joinen und erstellt weitere Event-Listener |
|
|
|
|
| AmbientBoxConnectionRefused | Erfasst eine Verbindungsablehnung und leitet diese an das Forntend weiter |
|
|
|
|
| setWebRTCID | Speichert die WebRTCID einer AmbientBox zu ihrer Repräsentation in der Liste aller AmbientBoxen |
|
|
|
|
| stopWebRTCConnection | Ruft das "detachAmbientBoxFromUser"-Event auf und aktualisiert die Liste aller AmbientBoxen |
|
|
|
|
| addAmbientBoxToRoom | Fügt eine AmbientBox zu einem Raum hinzu |
|
|
|
|
| removeAmbientBoxFromRoom | Entfernt eine AmbientBox vom aktuellen Raum |
|
|
|
|
| attachAmbientBoxToUser | Startet eine Verbindungsanfrage für eine AmbientBox zu einem Nutzer mit dem "joinRoom"-Event |
|
|
|
|
| detachAmbientBoxFromUser | Entfernt eine AmbientBox vom aktuellen Nutzer mit dem "leaveRoom"-Event |
|
|
|
|
| setStatus | Leitet den aktuellen Status des Nutzers an die verknüpfte AmbientBox weiter |
|
|
|
|
|
|
|
|
Tabelle X: Event-Listener auf der Seite des Accelerators
|
|
|
|
|
|
|
|
Nachdem die Verbindung zwischen den Systemen aufgebaut wurde, sendet die AmbientBox ihre UUID mit dem "activateAmbientBox"-Event an den Accelerator. Dieser pflegt eine Laufzeit-Array, in welchem die folgenden Eigenschaften für jede AmbientBox gespeichert werden:
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"id": STRING,
|
|
|
|
"name": STRING,
|
|
|
|
"color": STRING,
|
|
|
|
"status" : NUMBER,
|
|
|
|
"room" : STRING,
|
|
|
|
"user" : OBJECT,
|
|
|
|
"socket" : OBJECT,
|
|
|
|
"webRTCID" : STRING
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Das Objekt enthält die ID der Box, ihren Namen und die Farbe für die Anzeige im Accelerator. Der Status kann 0 (offline), 1 (online) oder 2 (in use) annehmen. Bei der Aktivierung der AmbientBox wird dieser Status auf 1, sobald die AmbientBox einem Nutzer zugeordnet wird auf 2, wenn eine AmbientBox von einem Nutzer entfernt wird wieder auf 1 und wenn eine AmbientBox vom Accelerator disconnected auf 0 gesetzt. Zusätzlich speichert die Liste den aktuellen Raum und den verbundenen Nutzer. Der gespeicherte Socket ist der Socket, über welchen die AmbientBox sich mit dem Accelerator verbunden hat. Über diesen Socket werden alle Events an die AmbientBox gesendet. Die webRTCID dient der Zuordnung zwischen der AmbientBox und der eingehenden WebRTC-Verbindung. Mehr hierzu im [nächsten Kapitel](#frontend).
|
|
|
|
|
|
|
|
### frontend
|
|
|
|
|
|
## Usertests
|
|
## Usertests
|
|
|
|
|
... | | ... | |