... | ... | @@ -2,8 +2,8 @@ |
|
|
|
|
|
1. [Projektziel](#projektziel)
|
|
|
2. [Projektplanung](#projektplanung)\
|
|
|
2\.1 [Projektstruktur & Ablauf](#projektstruktur--ablauf)\
|
|
|
2\.2 [Use Cases](#usecases)
|
|
|
2\.1 [Projektstruktur und Ablauf](#projektstruktur-und-ablauf)\
|
|
|
2\.2 [Use Cases](#use-cases)
|
|
|
3. [Mockups und Systemskizzen](#mockups-und-systemskizzen)
|
|
|
4. [Verwendete Hardware](#verwendete-hardware)
|
|
|
5. [AmbientBox](#ambientbox)\
|
... | ... | @@ -16,13 +16,14 @@ |
|
|
6\.2 [Verbindung einer AmbientBox mit einem Nutzer](#verbindung-einer-ambientbox-mit-einem-nutzer)\
|
|
|
6\.3 [Event-Weiterleitung](#event-weiterleitung)\
|
|
|
6\.4 [WebRTC](#webrtc)\
|
|
|
6\.5 [Sonstige Events](#sonstige-events)
|
|
|
7. [Usertests](#usertests)\
|
|
|
6\.5 [Sonstige Events](#sonstige-events)
|
|
|
7. [Nutzertests](#nutzertests)\
|
|
|
7\.1 [Vorgehen](#vorgehen)\
|
|
|
7\.2 [Ergebnisse](#ergebnisse)
|
|
|
8. [Anleitung](#anleitung)\
|
|
|
8\.1 [Vorbereitung](#vorbereitung)\
|
|
|
8\.2 [Bedienung](#bedienung)
|
|
|
8\.2 [Bedienung](#bedienung)\
|
|
|
8\.3 [Zugänge](#zugänge)
|
|
|
9. [Lizenzen der verwendeten Software](#lizenzen-der-verwendeten-software)
|
|
|
10. [Fazit und Ausblick](#fazit-und-ausblick)
|
|
|
|
... | ... | @@ -30,62 +31,62 @@ |
|
|
|
|
|
Sollten bei einem Meeting nicht alle Personen in der Lage sein, in Person zu erscheinen, jedoch online verfügbar sein, so können diese Personen über Accelerator zu den Meetings dazu gerufen werden. Leider fühlt sich diese Art von Kommunikation weniger persönlich und vertraulich als die Kommunikation in Person an.\
|
|
|
Unser Projekt, welches wir AmbientBox genannt haben, soll hier Abhilfe verschaffen. Mittels Ambient Awareness-Methoden soll das Gerät in der Lage sein, Personen auf den Status und das Verhalten von remote-zugeschalteten Teilnehmern aufmerksam zu machen. LEDs, welche eine hohe Anzahl verschiedener Farben darstellen können, geben direkt an, ob die zugeschaltete Person einen Daumen hoch oder runter gibt, ob er/sie momentan abwesend ist und mehr.\
|
|
|
Durch eingebaute Mikrofone und Lautsprecher soll die nutzende Person der AmbientBox in der Lage sein, die Meeting-Teilnehmer gut zu verstehen und mit Ihnen direkt zu kommunizieren. Ein eingebauter Touchscreen erlaubt es, Einstellungen an der Box vorzunehmen und das Profilbild des Verwenders anzuzeigen (später eventuell Kameraaufnahme) und eine eingebaute Kamera erlaubt es der nutzenden Person, welcher remote über Accelerator dem Meeting beigetreten ist, die restlichen Meeting Teilnehmer zu sehen.
|
|
|
Durch eingebaute Mikrofone und Lautsprecher soll die nutzende Person der AmbientBox in der Lage sein, die Meeting-Teilnehmer gut zu verstehen und mit Ihnen direkt zu kommunizieren. Ein eingebauter Touchscreen erlaubt es, Einstellungen an der Box vorzunehmen und das Profilbild sowie das Kamerabild des verbundenen Nutzers anzusehen. Eine eingebaute Kamera erlaubt es der nutzenden Person, welcher remote über Accelerator dem Meeting beigetreten ist, die restlichen Meeting Teilnehmer zu sehen.
|
|
|
|
|
|
# Projektplanung
|
|
|
|
|
|
Zur Projektplanung gehörten zum einen die Erfassung der Arbeitspakete in einem Projektstrukturplan und die Darstellung des zeitlichen Ablaufs des Projekts in einem Ganttdiagramm, zum anderen die Formulierung und Gewichtung projektrelevanter Use Cases.
|
|
|
Zur Projektplanung gehörten zum einen die Erfassung der Arbeitspakete in einem Projektstrukturplan und die Darstellung des zeitlichen Ablaufs des Projekts in einem Gantt-Diagramm, zum anderen die Formulierung und Gewichtung relevanter Use Cases.
|
|
|
|
|
|
## Projektstruktur & Ablauf
|
|
|
## Projektstruktur und Ablauf
|
|
|
|
|
|
Der Projektstrukturplan des AmbientBox Projekts umfasst 4 Hauptarbeitspakete.\
|
|
|
Die **Recherche** bestand aus Grundlagenrecherche zu vergleichbaren Systemen, um den Stand der Technik in diesem Bereich zu ermitteln, die Suche nach den passendsten Hardwarekomponenten und Sensoren, und die Untersuchung der Schnittstellen des Accelerators, um eine Kommunikation mit der AmbientBox möglichst reibungslos zu gestalten.\
|
|
|
Beim **Design** war es wichtig im Projektentwurf den Informationsaustausch und die Kommunikationswege zwischen AmbientBox und Accelerator abzubilden, um die Schnittstellen deutlich herauszustellen. Die Mockups haben die Designidee für das Frontend unseres Systems geliefert und die erweiterte Designphase lief Entwicklungsbegleitend ab, sodass das ursprüngliche Design während der Entwicklung bei Bedarf angepasst werden konnte.\
|
|
|
Beim Arbeitspaket der **Entwicklung** wurde verdeutlicht aus welchen Komponenten die Umsetzung der Ambient Box besteht. Sowohl für der AmbientBox als auch für den Accelerator bedarf es sowohl die Entwicklung geeigneter Schnittstellen als auch die Gestaltung einer neuen bzw. die Anpassung einer bestehenden GUI, um die Kommunikation zwischen den beiden Bestandteilen zu ermöglichen. Die AmbientBox benötigte zudem die Gestaltung eines Gehäuses mit integrierten Sensoren ehe abschließende Systemtests durchgeführt werden konnten.\
|
|
|
Die **Dokumentation** besteht aus der anfänglichen Projektplanung, die Projektdokumentation im Wiki des Accelertors und die Vorbereitung und Durchführung der Abschlusspräsentation.
|
|
|
Der Projektstrukturplan des AmbientBox-Projekts umfasst 4 Hauptarbeitspakete.\
|
|
|
Die **Recherche** bestand aus Grundlagenrecherche zu vergleichbaren Systemen, um den Stand der Technik in diesem Bereich zu ermitteln, die Suche nach den passendsten Hardwarekomponenten und Sensoren und die Untersuchung der Schnittstellen des Accelerators, um eine Kommunikation mit der AmbientBox möglichst reibungslos zu gestalten.\
|
|
|
Beim **Design** war es wichtig im Projektentwurf den Informationsaustausch und die Kommunikationswege zwischen AmbientBox und Accelerator abzubilden, um die Schnittstellen deutlich herauszustellen. Die Mockups haben die Designidee für das Frontend unseres Systems geliefert und die erweiterte Designphase lief begleitend zur Entwicklung ab, sodass das ursprüngliche Design während der Entwicklung bei Bedarf angepasst werden konnte.\
|
|
|
Beim Arbeitspaket der **Entwicklung** wurde verdeutlicht aus welchen Komponenten die Umsetzung der AmbientBox besteht. Sowohl für die AmbientBox als auch für den Accelerator bedarf es sowohl die Entwicklung geeigneter Schnittstellen als auch die Gestaltung einer neuen bzw. die Anpassung einer bestehenden GUI, um die Kommunikation zwischen den beiden Bestandteilen zu ermöglichen. Die AmbientBox benötigte zudem die Gestaltung eines Gehäuses mit integrierten Sensoren, welche durch abschließende Systemtests getestet werden.\
|
|
|
Die **Dokumentation** besteht aus der anfänglichen Projektplanung, die Projektdokumentation im Wiki des Accelerators und die Vorbereitung und Durchführung der Abschlusspräsentation.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Projektstrukturplan
|
|
|
|
|
|
Im unten zu sehenden Ganttdiagramm wird dargestellt, wie der zeitliche Ablauf unseres Projekts geplant war, in welchem Zeitraum die aufgeführten Arbeitspakete abzuarbeiten waren und zu welchen Zeitpunkten die aufgestellten Meilensteine erreicht werden sollten. Der Zeitplan konnte bei der Durchführung des Projekts größtenteils eingehalten werden. Lediglich die Entwicklungsphase hat etwas mehr Zeit in Anspruch genommen als geplant, das konnte jedoch kompensiert werden, da weniger Zeit für Systemtests benötigt wurde als geplant und der Projektabschluss um eine Woche nachhinten verlegt wurde.
|
|
|
Im unten zu sehenden Gantt-Diagramm wird dargestellt, wie der zeitliche Ablauf unseres Projekts geplant war, in welchem Zeitraum die aufgeführten Arbeitspakete abzuarbeiten waren und zu welchen Zeitpunkten die aufgestellten Meilensteine erreicht werden sollten. Der Zeitplan konnte bei der Durchführung des Projekts größtenteils eingehalten werden. Lediglich die Entwicklungsphase hat etwas mehr Zeit in Anspruch genommen als geplant, das konnte jedoch kompensiert werden, da weniger Zeit für Systemtests benötigt wurde als geplant und der Projektabschluss um eine Woche nach hinten verlegt wurde.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Ganttdiagramm
|
|
|
Abbildung XX: Gantt-Diagramm
|
|
|
|
|
|
## Use Cases
|
|
|
|
|
|
Die Use Cases für dieses Projekt wurden wie in Tablle XX zu sehen, in zwei Kategorien unterteilt. Die Use Cases beim Accelerator beschreiben die Use Cases die aus Sicht des Remote Nutzers, welcher über dem Accelerator mit der AmbientBox verbunden ist, erfüllt werden müssen, während die Use Cases bei der AmbientBox solche Use Cases beschreiben, die aus Sicht der lokalen Nutzer, die durch Interaktion mit der AmbientBox mit dem remote Nutzer kommunizieren, realisiert werden müssen.\
|
|
|
Die Use Cases für dieses Projekt wurden, wie in Tabelle XX zu sehen, in zwei Kategorien unterteilt. Die Use Cases beim Accelerator beschreiben die Use Cases die aus Sicht des/der remote-zugeschalteten NutzerIn, welcher/welche über dem Accelerator mit der AmbientBox verbunden ist, erfüllt werden müssen, während die Use Cases bei der AmbientBox solche Use Cases beschreiben, die aus Sicht der lokalen NutzerInnen, die durch Interaktion mit der AmbientBox mit dem/der remote-zugeschalteten NutzerIn kommunizieren, realisiert werden müssen.\
|
|
|
Die Priorität der Use Cases (1 – hohe Priorität bis 4 – niedrige Priorität) hat festgelegt in welche Reihenfolge die Use Cases abzuarbeiten sind, sollten nicht alle Use Cases erfüllt werden können. Nach Projektabschluss waren jedoch alle Use Cases umgesetzt.
|
|
|
|
|
|
| Bezeichnung | Use Case | Priorität |
|
|
|
|-------------|----------|-----------|
|
|
|
| | _Use Cases beim Accelerator_ | |
|
|
|
| **UC1** | Der remote-zugeschaltete Nutzer möchte eine verfügbare AmbientBox auswählen, um sich mit einer lokalen Sitzung zu vernetzen. | 1 |
|
|
|
| **UC2** | Der remote-zugeschaltete Nutzer möchte eine ausgewählte AmbientBox entfernen, um diese für andere Nutzer freizugeben. | 1 |
|
|
|
| **UC3** | Der remote-zugeschaltete Nutzer möchte einen Button drücken, um über die AmbientBox seine Zustimmung mitzuteilen. | 2 |
|
|
|
| **UC4** | Der remote-zugeschaltete Nutzer möchte die anderen Gesprächsteilnehmer auf sich aufmerksam machen, falls er abwesend ist. | 2 |
|
|
|
| **UC5** | Der remote-zugeschaltete Nutzer möchte die anderen Gesprächsteilnehmer auf sich aufmerksam machen, falls er etwas sagen möchte. | 2 |
|
|
|
| **UC6** | Der remote-zugeschaltete Nutzer möchte einen Button drücken, um über die AmbientBox zu applaudieren. | 2 |
|
|
|
| **UC7** | Der remote-zugeschaltete Nutzer möchte einen Button drücken, um mit den lokalen Nutzern kommunizieren zu können. | 3 |
|
|
|
| **UC8** | Der remote-zugeschaltete Nutzer möchte einen Button drücken, um seine Videoübertragung mit den anderen Nutzern zu teilen. | 4 |
|
|
|
| **UC1** | Der/Die remote-zugeschaltete NutzerIn möchte eine verfügbare AmbientBox auswählen, um sich mit einer lokalen Sitzung zu vernetzen. | 1 |
|
|
|
| **UC2** | Der/Die remote-zugeschaltete NutzerIn möchte eine ausgewählte AmbientBox entfernen, um diese für andere Nutzer freizugeben. | 1 |
|
|
|
| **UC3** | Der/Die remote-zugeschaltete NutzerIn möchte einen Button drücken, um über die AmbientBox seine Zustimmung oder Ablehnung mitzuteilen. | 2 |
|
|
|
| **UC4** | Der/Die remote-zugeschaltete NutzerIn möchte die anderen GesprächsteilnehmerInnen auf sich aufmerksam machen, falls er abwesend ist. | 2 |
|
|
|
| **UC5** | Der/Die remote-zugeschaltete NutzerIn möchte die anderen GesprächsteilnehmerInnen auf sich aufmerksam machen, falls er etwas sagen möchte. | 2 |
|
|
|
| **UC6** | Der/Die remote-zugeschaltete NutzerIn möchte einen Button drücken, um über die AmbientBox zu applaudieren. | 2 |
|
|
|
| **UC7** | Der/Die remote-zugeschaltete NutzerIn möchte einen Button drücken, um mit den lokalen Nutzern kommunizieren zu können. | 3 |
|
|
|
| **UC8** | Der/Die remote-zugeschaltete NutzerIn möchte einen Button drücken, um seine Videoübertragung mit den anderen Nutzern zu teilen. | 4 |
|
|
|
| | _Use Cases bei der AmbientBox_ | |
|
|
|
| **UC9** | Der lokale Nutzer möchte eine WLAN-Verbindung einrichten, um die AmbientBox mit Accelerator verbinden zu können. | 1 |
|
|
|
| **UC10** | Die Gesprächsteilnehmer wollen über den Status des remote-zugeschalteten Nutzers informiert werden. | 2 |
|
|
|
| **UC11** | Der lokale Nutzer möchte Einstellungen vornehmen, um die Helligkeit der AmbientBox anzupassen. | 3 |
|
|
|
| **UC12** | Der lokale Nutzer möchte Einstellungen vornehmen, um die Lautstärke der AmbientBox anzupassen. | 3 |
|
|
|
| **UC13** | Der lokale Nutzer möchte Einstellungen vornehmen, um das Mikrofon der AmbientBox umzuschalten. | 3 |
|
|
|
| **UC14** | Der lokale Nutzer möchte Einstellungen vornehmen, um die Kamera der AmbientBox umzuschalten. | 3 |
|
|
|
| **UC9** | Der/Die lokale NutzerIn möchte eine WLAN-Verbindung einrichten, um die AmbientBox mit dem Accelerator verbinden zu können. | 1 |
|
|
|
| **UC10** | Die GesprächsteilnehmerInnen wollen über den Status des/der remote-zugeschalteten NutzerIn informiert werden. | 2 |
|
|
|
| **UC11** | Der/Die lokale NutzerIn möchte Einstellungen vornehmen, um die Helligkeit der AmbientBox anzupassen. | 3 |
|
|
|
| **UC12** | Der/Die lokale NutzerIn möchte Einstellungen vornehmen, um die Lautstärke der AmbientBox anzupassen. | 3 |
|
|
|
| **UC13** | Der/Die lokale NutzerIn möchte Einstellungen vornehmen, um das Mikrofon der AmbientBox umzuschalten. | 3 |
|
|
|
| **UC14** | Der/Die lokale NutzerIn möchte Einstellungen vornehmen, um die Kamera der AmbientBox umzuschalten. | 3 |
|
|
|
|
|
|
Tabelle XX: Use Cases
|
|
|
|
|
|
# Mockups und Systemskizzen
|
|
|
|
|
|
In den folgenden Mockups wird die geplante Benutzerschnittstelle der AmbientBox dargestellt. Das Design ist sehr einfach gehalten, um die Bedienung der Ambientbox möglichst intuitiv zu gestalten. Die Schnittstelle besteht aus zwei Oberflächen; die Home-Seite und die Einstellungsseite. Auf der Home-Seite wird Nutzerbild und Nutzername der verbundenen Person abgebildet, zudem werden hier sämtliche im Accelerator durchführbare Nutzeraktionen mithilfe von Icons und Farben dargestellt, die die jeweilige Nutzeraktion widerspiegeln. Durch Klicken auf das im oberen Eck befindliche Zahnrädchen gelangt man auf die Einstellungsseite. Hier ist es den Nutzern unter anderem möglich unterschiedliche Konfigurationen an den Sensoren der Box vorzunehmen und die Box mit verfügbaren WLAN-Netzwerken zu verbinden.
|
|
|
In den folgenden Mockups wird die geplante Benutzerschnittstelle der AmbientBox dargestellt. Das Design ist sehr einfach gehalten, um die Bedienung der AmbientBox möglichst intuitiv zu gestalten. Die Schnittstelle besteht aus zwei Oberflächen; die Home-Seite und die Einstellungsseite. Auf der Home-Seite wird das Nutzerbild und der Nutzername der verbundenen Person abgebildet, zudem werden hier sämtliche im Accelerator durchführbare Nutzeraktionen mithilfe von Icons und Farben dargestellt, welche die jeweilige Nutzeraktion widerspiegeln. Durch Klicken auf das im oberen Eck befindliche Zahnrädchen gelangt man auf die Einstellungsseite. Hier ist es den NutzernInnen unter anderem möglich unterschiedliche Konfigurationen an den Sensoren der Box vorzunehmen und die Box mit verfügbaren WLAN-Netzwerken zu verbinden.
|
|
|
|
|
|
  \
|
|
|
Abbildungen XX, XX, XX: Mockups des Startbildschirms, der Einstellungsseite und eines Angezeigten Nutzerstatus
|
|
|
|
|
|
Neben der Gestlatung der Oberfläche der Ambientbox bedarf es auch eine Anpassung der GUI des Accelerators. In den unten eingefügten Mockups ist zu sehen, dass in der unteren rechten Ecke ein zusätzlicher Button eingefügt wird, um den Raum mit einer aktiven AmbientBox zu verbinden. Wird eine Verknüpfung zu einer AmbientBox hergestellt, kann sich ein beliebiger Nutzer im Raum, wie abgebildet, mit der Box verbinden.
|
|
|
Neben der Gestaltung der Oberfläche der AmbientBox bedarf es auch eine Anpassung der GUI des Accelerators. In den unten eingefügten Mockups ist zu sehen, dass in der unteren rechten Ecke ein zusätzlicher Button eingefügt wird, um den Raum mit einer aktiven AmbientBox zu verbinden. Wird eine Verknüpfung zu einer AmbientBox hergestellt, kann sich ein beliebiger Nutzer im Raum, wie abgebildet, mit der Box verbinden.
|
|
|
|
|
|
 Abbildung XX: Auswahl einer verfügbaren AmbientBox (1)
|
|
|
|
... | ... | @@ -97,30 +98,32 @@ Neben der Gestlatung der Oberfläche der Ambientbox bedarf es auch eine Anpassun |
|
|
|
|
|
 Abbildung XX: Interaktion mit der AmbientBox
|
|
|
|
|
|
Da auch ein Hardwareprototyp entwickelt werden muss, wurden hierfür auch Systemskizzen angefertigt. Hierbei haben sich zwei Möglichkeiten herauskristallisiert, die in den folgenden Abbildungen zu sehen sind. Beide Systemskizzen besitzen Bildschirm, Mikrofon, Kamera, Lautsprecher und LEDs welche die Schnittstellen bilden, anhand dessen die Nutzer mit der AmbientBox interagieren können. Unterschieden werden die Systemskizzen durch die Positionierung des Bildschirms und des Lautsprechers. Bei der späteren Umsetzung haben wir uns für die Variante entschieden, bei der sich der Bildschirm auf der Oberseite der Box befindet, da hierdurch die Bedienung des Touchdisplays erleichtert wird.
|
|
|
Da auch ein Hardwareprototyp entwickelt werden muss, wurden hierfür auch Systemskizzen angefertigt. Hierbei haben sich zwei Möglichkeiten herauskristallisiert, die in den folgenden Abbildungen zu sehen sind. Beide Systemskizzen besitzen Bildschirm, Mikrofon, Kamera, Lautsprecher und LEDs, welche die Schnittstellen bilden, anhand dessen die Nutzer mit der AmbientBox interagieren können. Unterschieden werden die Systemskizzen durch die Positionierung des Bildschirms und des Lautsprechers. Bei der späteren Umsetzung haben wir uns für die Variante entschieden, bei der sich der Bildschirm auf der Oberseite der Box befindet, da hierdurch die Bedienung des Bildschirms mit Touch-Funktionalität erleichtert wird.
|
|
|
|
|
|
 \
|
|
|
Abbildung XX, XX: Variante 1 und 2 der Systemskizze des Hardwareprototyps
|
|
|
|
|
|
# Verwendete Hardware
|
|
|
|
|
|
Nachfolgend ist die gesamte Hardware aufgelistet, welche für das Projekt verwendet wurde.
|
|
|
|
|
|
| Bild | Teil | Funktion | Link |
|
|
|
| ------ | ------ | ------ | ------ |
|
|
|
|  | Powerbank | Kabelloses Betreiben der AmbientBox | [Amazon ](https://www.amazon.de/Intenso-Powerbank-Ladeger%C3%A4t-Smartphone-Digitalkamera-schwarz/dp/B07Z8DF4DG/ref=sr_1_3?adgrpid=71776869780&gclid=Cj0KCQjwhqaVBhCxARIsAHK1tiMxxdRo-tlhkHoChQZyhYtthafzQICoDHvBHFPRumV1NOHzQQ_G0W8aApgGEALw_wcB&hvadid=352805799758&hvdev=c&hvlocphy=9042255&hvnetw=g&hvqmt=e&hvrand=14916314900801430281&hvtargid=kwd-300699482045&hydadcr=19826_1788583&keywords=intenso%2Bpowerbank%2B10000&qid=1655307935&sr=8-3&th=1)|
|
|
|
|  | USB-C Verlängerungskabel | Anschluss zum Aufladen der AmbientBox | [Amazon ](https://www.amazon.de/Verl%C3%A4ngerungskabel-Thunderbolt-Compatible-Extension-Microsoft/dp/B088NMGX4M/ref=sr_1_3?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2TJTFWPYYI03I&keywords=usb+c+verl%C3%A4ngerungskabel+kurz&qid=1655308381&sprefix=usb+c+verl%C3%A4ngerungskabel+kurz%2Caps%2C84&sr=8-3)|
|
|
|
|  | Stromschalter | Verbindet Pi mit Powerbank und lässt den Strom manuell ab- und wieder anschalten | [Reichelt ](https://www.reichelt.de/raspberry-pi-kabel-mit-schalter-100-cm-schwarz-rpi-cable-sw-100-p242762.html?PROVID=2788&gclid=Cj0KCQjwhqaVBhCxARIsAHK1tiOwyJ73cqOu5L4eFa_UUA0z09DPA_nO3vKbzEAs9dq1TxaMSP-aZa0aAtPiEALw_wcB)|
|
|
|
|  | USB-A Verlängerungskabel | Port zum Anschließen einer Tastatur | [Amazon ](https://www.amazon.de/KabelDirekt-Verl%C3%A4ngerungskabel-Stecker-geeignet-Anschl%C3%BCsse-Schwarz-Space-Grey/dp/B083Y2DR9Z/ref=sr_1_4?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2AIBJZG5AW89N&keywords=usb%2Bverl%C3%A4ngerung%2Bkurz&qid=1655300086&sprefix=usb%2Bverl%C3%A4ngerung%2Bkurz%2Caps%2C96&sr=8-4&th=1) |
|
|
|
|  | LED-Strifen | Anzeigen des Nutzerstatus | [Amazon](https://www.amazon.de/-/en/WS2812B1M60LB30E-WS2812B-Eco-All-LED/dp/B088BRY2SH/ref=sr_1_5?adgrpid=79509414868&gclid=CjwKCAjwo8-SBhAlEiwAopc9W5Bw1y-AwcBqO6jVPA8LKOuRY8JLpdDSRqz3ztWccGJagXYKOmNoyhoCjoUQAvD_BwE&hvadid=352784706883&hvdev=c&hvlocphy=9042262&hvnetw=g&hvqmt=e&hvrand=12279209566090651273&hvtargid=kwd-300684716062&hydadcr=8204_1722825&keywords=arduino%2Brgb%2Bstrip&qid=1649693230&sr=8-5&th=1) |
|
|
|
|  | USB-C Verlängerungskabel | Anschluss zum Aufladen der Powerbank | [Amazon ](https://www.amazon.de/Verl%C3%A4ngerungskabel-Thunderbolt-Compatible-Extension-Microsoft/dp/B088NMGX4M/ref=sr_1_3?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2TJTFWPYYI03I&keywords=usb+c+verl%C3%A4ngerungskabel+kurz&qid=1655308381&sprefix=usb+c+verl%C3%A4ngerungskabel+kurz%2Caps%2C84&sr=8-3)|
|
|
|
|  | Stromschalter | Verbindet den Raspberry Pi mit der Powerbank und lässt den Strom manuell ab- und wieder anschalten | [Reichelt ](https://www.reichelt.de/raspberry-pi-kabel-mit-schalter-100-cm-schwarz-rpi-cable-sw-100-p242762.html?PROVID=2788&gclid=Cj0KCQjwhqaVBhCxARIsAHK1tiOwyJ73cqOu5L4eFa_UUA0z09DPA_nO3vKbzEAs9dq1TxaMSP-aZa0aAtPiEALw_wcB)|
|
|
|
|  | USB-A Verlängerungskabel | Port zum Anschließen von externen USB-Geräten (Bsp. Tastatur) | [Amazon ](https://www.amazon.de/KabelDirekt-Verl%C3%A4ngerungskabel-Stecker-geeignet-Anschl%C3%BCsse-Schwarz-Space-Grey/dp/B083Y2DR9Z/ref=sr_1_4?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2AIBJZG5AW89N&keywords=usb%2Bverl%C3%A4ngerung%2Bkurz&qid=1655300086&sprefix=usb%2Bverl%C3%A4ngerung%2Bkurz%2Caps%2C96&sr=8-4&th=1) |
|
|
|
|  | LED-Streifen | Anzeigen des Nutzerstatus | [Amazon](https://www.amazon.de/-/en/WS2812B1M60LB30E-WS2812B-Eco-All-LED/dp/B088BRY2SH/ref=sr_1_5?adgrpid=79509414868&gclid=CjwKCAjwo8-SBhAlEiwAopc9W5Bw1y-AwcBqO6jVPA8LKOuRY8JLpdDSRqz3ztWccGJagXYKOmNoyhoCjoUQAvD_BwE&hvadid=352784706883&hvdev=c&hvlocphy=9042262&hvnetw=g&hvqmt=e&hvrand=12279209566090651273&hvtargid=kwd-300684716062&hydadcr=8204_1722825&keywords=arduino%2Brgb%2Bstrip&qid=1649693230&sr=8-5&th=1) |
|
|
|
|  | Bildschirm | Anzeigen und Bedienen der AmbientBox | [Amazon](https://www.amazon.de/-/en/ELEGOO-Display-Monitor-Raspberry-Interface/dp/B01JRUH0CY/ref=sr_1_2?crid=2VEMW01VZCJNX&keywords=elegoo+3%2C5+zoll&qid=1657206973&sprefix=elegoo+3.5+inch%2Caps%2C69&sr=8-2) |
|
|
|
|  | Raspberry Pi 3B+ | Kern der AmbientBox | [Amazon](https://www.amazon.de/-/en/Raspberry-1373331-Pi-Model-Motherboard/dp/B07BDR5PDW) |
|
|
|
|  | Jumper Käbel | Verbinden des Pis mit dem LED-Streifen und dem Bildschirm | [Amazon](https://www.amazon.de/-/en/Elegoo-Jumper-Bridges-Arduino-Raspberry/dp/B01EV70C78/ref=sr_1_6?crid=7PEESEYVBD4W&keywords=pin%2Bkabel&qid=1657207195&s=computers&sprefix=pi%2Bk%C3%A4bel%2Ccomputers%2C60&sr=1-6&th=1) |
|
|
|
|  | Mini Breadboard | Verbinden des Pis mit dem LED-Streifen und dem Bildschirm | [Amazon](https://www.amazon.de/-/en/ELEGOO-Points-Mini-Breadboard-Arduino/dp/B01M9CHKO4/ref=sr_1_10?crid=2D2066MXXESIT&keywords=mini+breadboard&qid=1657207288&s=computers&sprefix=mini+breadboard%2Ccomputers%2C58&sr=1-10) |
|
|
|
|  | Jumper Kabel | Verbinden des Raspberry Pis mit dem LED-Streifen und dem Bildschirm | [Amazon](https://www.amazon.de/-/en/Elegoo-Jumper-Bridges-Arduino-Raspberry/dp/B01EV70C78/ref=sr_1_6?crid=7PEESEYVBD4W&keywords=pin%2Bkabel&qid=1657207195&s=computers&sprefix=pi%2Bk%C3%A4bel%2Ccomputers%2C60&sr=1-6&th=1) |
|
|
|
|  | Mini Breadboard | Verbinden des Raspberry Pis mit dem LED-Streifen und dem Bildschirm | [Amazon](https://www.amazon.de/-/en/ELEGOO-Points-Mini-Breadboard-Arduino/dp/B01M9CHKO4/ref=sr_1_10?crid=2D2066MXXESIT&keywords=mini+breadboard&qid=1657207288&s=computers&sprefix=mini+breadboard%2Ccomputers%2C58&sr=1-10) |
|
|
|
|  | USB-Soundkarte | Ausgabe von Geräuschen (Ersatz für on-board Soundkarte) | [Amazon](https://www.amazon.de/-/en/Vention-External-Microphone-Computer-Headphone/dp/B07MNRRT84/ref=sr_1_10?crid=11PDGUNZG354L&keywords=kleine+usb+soundkarte&qid=1657207470&sprefix=small+usb+sound+card%2Caps%2C68&sr=8-10) |
|
|
|
|  | Lautsprecher | Ausgabe von Ton des Nutzers | [Amazon](https://www.amazon.de/-/en/VBESTLIFE-Speaker-Outdoor-Cushion-Android/dp/B07D3RP3KL/ref=sr_1_3?crid=1WT0NFQJST2UU&keywords=mini+lautsprecher+flach&qid=1657207531&sprefix=mini+flat+speaker%2Caps%2C74&sr=8-3) |
|
|
|
|  | USB-Kamera | Aufnahme der Gesprächsteilnehmer | [Amazon](https://www.amazon.de/-/en/dp/B07DKLZSZV/ref=sr_1_3?crid=3TY553BI87U24&keywords=egalbest+Mini+USB&qid=1657207620&sprefix=egalbest+mini+usb%2Caps%2C56&sr=8-3) |
|
|
|
|  | USB-Mikrofon | Aufnahme des Tons der Gesprächsteilnehmer | [Amazon](https://www.amazon.de/-/en/Microphone-Omnidirectional-Capacitor-Interviews-Recording/dp/B071171DBP/ref=psdc_430209031_t3_B08XQ4XKWF) |
|
|
|
|  | Lautsprecher | Ausgabe des Tons des/der NutzerIn | [Amazon](https://www.amazon.de/-/en/VBESTLIFE-Speaker-Outdoor-Cushion-Android/dp/B07D3RP3KL/ref=sr_1_3?crid=1WT0NFQJST2UU&keywords=mini+lautsprecher+flach&qid=1657207531&sprefix=mini+flat+speaker%2Caps%2C74&sr=8-3) |
|
|
|
|  | USB-Kamera | Aufnahme der GesprächsteilnehmerInnen | [Amazon](https://www.amazon.de/-/en/dp/B07DKLZSZV/ref=sr_1_3?crid=3TY553BI87U24&keywords=egalbest+Mini+USB&qid=1657207620&sprefix=egalbest+mini+usb%2Caps%2C56&sr=8-3) |
|
|
|
|  | USB-Mikrofon | Aufnahme des Tons der GesprächsteilnehmerInnen | [Amazon](https://www.amazon.de/-/en/Microphone-Omnidirectional-Capacitor-Interviews-Recording/dp/B071171DBP/ref=psdc_430209031_t3_B08XQ4XKWF) |
|
|
|
|
|
|
Tabelle XX: Im Hardware-Prototypen verwendete Teile
|
|
|
Tabelle XX: Im Hardware-Prototypen verwendete Hardware-Komponenten
|
|
|
|
|
|
# AmbientBox
|
|
|
|
... | ... | @@ -128,7 +131,7 @@ In den nachfolgenden Kapiteln wird die Umsetzung der AmbientBox genauer beschrie |
|
|
|
|
|
## Architektur
|
|
|
|
|
|
Das Kernstück der AmbientBox bildet ein Raspberry Pi. Auf diesem werden die Software-Komponenten der AmbientBox ausgeführt. Dies umfasst einen Backend-Server, Python Childprozesse und eine Webapplikation.Der Backend-Server ist über eine Socket-Verbindung mit dem Accelerator verbunden. Über einen Middleware-Router und einen Socket-Server kommuniziert dieser ebenfalls mit der Webapplikaton, welche das UI der AmbientBox bildet. Über die Webapplikation findet die WebRTC-Kommunikation, sowie die Konfiguration der Hardware statt. Dafür werden eine Kamera, ein Mikrofon und ein Lautsprecher angesprochen. Das Backend verwendet zudem zur Darstellung von unterschiedlichen Stadien der AmbientBox eine LED-Anzeige. Diese wird mit Python-Childprozessen angesprochen. Zusätzliche Komponenten des Systems sind eine Powerbank, mit welcher der Raspberry Pi betrieben wird und ein Bildschirm, über welchen die Ausgabe des Frontends visualisiert wird. In Abbildung X ist diese Architektur zu sehen.
|
|
|
Das Kernstück der AmbientBox bildet ein Raspberry Pi. Auf diesem werden die Software-Komponenten der AmbientBox ausgeführt. Dies umfasst einen Backend-Server, Python-Childprozesse und eine Webapplikation. Der Backend-Server ist über eine Socket-Verbindung mit dem Accelerator verbunden. Über einen Middleware-Router und einen Socket-Server kommuniziert dieser ebenfalls mit der Webapplikaton, welche das UI der AmbientBox bildet. Über die Webapplikation findet die WebRTC-Kommunikation, sowie die Konfiguration der Hardware statt. Dafür werden eine Kamera, ein Mikrofon und ein Lautsprecher angesprochen. Das Backend verwendet zudem zur Darstellung von unterschiedlichem Status der AmbientBox eine LED-Anzeige. Diese wird mit Python-Childprozessen angesprochen. Zusätzliche Komponenten des Systems sind eine Powerbank, mit welcher der Raspberry Pi betrieben wird und ein Bildschirm, über welchen die Ausgabe des Frontends visualisiert wird. In Abbildung X ist diese Architektur zu sehen.
|
|
|
|
|
|
 Abbildung X: Systemübersicht der AmbientBox
|
|
|
|
... | ... | @@ -137,75 +140,113 @@ Das Kernstück der AmbientBox bildet ein Raspberry Pi. Auf diesem werden die Sof |
|
|
 \
|
|
|
Abbildung XX, XX: Home-Seite und Einstellungsseite der AmbientBox
|
|
|
|
|
|
Das Frontend der AmbientBox wurde mithilfe des Frameworks Vue.js gestaltet und auf einem Node.js Server aufgesetzt. Bei der Umsetzung des Frontends, bestehend aus Home- und Einstellungsseite, wurde darauf Wert gelegt die Aufteilung und das Design der Mockups zu übernehmen, um eine intuitive Bedienung zu gewährleisten. Für die eingesetzten Icons wurde, wie beim Accelerator, die Bilbliothek von Font Awesome verwendet.\
|
|
|
Die Home-Seite der AmbientBox dient der aktiven Nutzung und Interaktion mit der AmbientBox. Neben Nutzerbild und Nutzername des verbundenen Nutzers werden, wie in den Mockups vorgesehen, die Nutzerstatus durch farbliche Icons abgebildet. Diese sind priorisiert, sodass bei Aktivierung mehrerer Status, der Status mit der höchsten Priorität zentral angezeigt wird und die weiteren in der linken Leiste, wie in Abbildung XX zu sehen. Ausnahme zu den anderen Nutzerstatus bilden das Mikrofon- und das Abwesenheitssymbol die gesondert und farblos in der rechten Leiste angezeigt werden. Aktiviert der Remote Nutzer seine Videoübertragung, wird diese anstelle des Nutzerbildes angezeigt.\
|
|
|
Mithilfe der Schalter und Regler auf der Einstellungsseite können die diversen Sensoren der AmbientBox aktiviert und deaktiviert werden, zudem können die Helligkeit bzw. die Lautstärke der LEDs und des Lautsprechers angepasst werden. Zusätzlich ist es den Nutzern möglich die AmbientBox mittels der dafür gekennzeichneten Schaltfläche mit einem verfügbaren WLAN-Netzwerk zu verbinden. Die Eingabe eines geforderten Passworts erfolgt mithilfe der eingebundenen virtuellen Tastatur. Neben den bereits genannten Funktionen haben die lokalen Nutzer zudem die Möglichkeit über die dafür vorgesehenen Schaltflächen den verbundenen remote Nutzer von der AmbientBox zu trennen und die AmbientBox herunterzufahren.\
|
|
|
Über den Node.js Server der AmbientBox findet der Informationsaustausch mit dem Accelerator und die Weiterleitung besagter Information an das VueJS-Frontend statt. Hierzu gehören Nutzerbild, Nutzername und Nutzerstatus die mittels socket.io kommuniziert werden, sowie Audio- und Video-Streams die mithilfe von WebRTC übertragen werden. Neben der Informationsbeschaffung und -weitergabe, wird im Server ein Python-Prozess wiederholt gespawnt, welcher die LED-Leiste entsprechend der Situation und Anforderungen zum Leuchten bringt.\
|
|
|
Der Python-Prozess zur Steuerung der LEDs benutzt hauptsächlich die rpi-ws281x Bibliothek. Durch diese lässt sich jede LED einzeln ansprechen und ein RGB-Wert übergeben werden. Die Helligkeit aller LEDs lässt sich bei der Ausführung des Skriptes setzen, allerdings lässt sich nicht die Helligkeit jeder LED einzeln ansprechen. Die beim Ausführen des Skriptes übergebenen Parameter geben zum einen den Farbton und falls zusprechend das auszuführende Muster an. Der zweite Parameter gibt die Helligkeit in Form einer Zahl von 1-100 an, welche vom Skript in eine Zahl zwischen null und 255, der Maximalhelligkeit der LEDs, umgerechnet wird.
|
|
|
Das Frontend der AmbientBox wurde mithilfe des Frameworks Vue.js gestaltet und auf einem Node.js Server aufgesetzt. Bei der Umsetzung des Frontends, bestehend aus Home- und Einstellungsseite, wurde darauf Wert gelegt die Aufteilung und das Design der Mockups zu übernehmen, um eine intuitive Bedienung zu gewährleisten. Für die eingesetzten Icons wurde, wie beim Accelerator, die Bibliothek von Font Awesome verwendet.\
|
|
|
Die Home-Seite dient der aktiven Nutzung und Interaktion mit der AmbientBox. Neben Nutzerbild und Nutzername des/der verbundenen NutzerIn werden, wie in den Mockups vorgesehen, die Nutzerstatus durch farbliche Icons abgebildet. Diese sind priorisiert, sodass bei Aktivierung mehrerer Status, der Status mit der höchsten Priorität zentral angezeigt wird und die weiteren in der linken Leiste, wie in Abbildung XX zu sehen. Ausnahme zu den anderen Nutzerstatus bilden das Mikrofon- und das Abwesenheitssymbol, welche gesondert und farblos in der rechten Leiste angezeigt werden. Aktiviert der/die remote-zugeschaltete NutzerIn seine Videoübertragung, wird diese anstelle des Nutzerbildes angezeigt.\
|
|
|
Mithilfe der Schalter und Regler auf der Einstellungsseite können die diversen Sensoren der AmbientBox aktiviert und deaktiviert werden, zudem können die Helligkeit bzw. die Lautstärke der LEDs und des Lautsprechers angepasst werden. Zusätzlich ist es den NutzerInnen möglich die AmbientBox mittels der dafür gekennzeichneten Schaltfläche mit einem verfügbaren WLAN-Netzwerk zu verbinden. Die Eingabe eines geforderten Passworts erfolgt mithilfe der eingebundenen virtuellen Tastatur. Neben den bereits genannten Funktionen haben die lokalen NutzerInnen zudem die Möglichkeit über die dafür vorgesehenen Schaltflächen den/die remote-zugeschaltete NutzerIn von der AmbientBox zu trennen und die AmbientBox herunterzufahren.\
|
|
|
Über den Node.js Server der AmbientBox findet der Informationsaustausch mit dem Accelerator und die Weiterleitung besagter Information an das Vue.js-Frontend statt. Hierzu gehören Nutzerbild, Nutzername, Nutzerstatus und Raumname die mittels Socket.io kommuniziert werden. Audio- und Video-Streams werden mithilfe von WebRTC direkt im Frontend übertragen. Neben der Informationsbeschaffung und -weitergabe wird im Server ein Python-Prozess wiederholt erstellt, welcher die LED-Leiste entsprechend der Situation und Anforderungen zum Leuchten bringt.\
|
|
|
Der Python-Prozess zur Steuerung der LEDs benutzt hauptsächlich die rpi-ws281x Bibliothek. Durch diese lässt sich jede LED einzeln ansprechen und ein RGB-Wert übergeben werden. Die Helligkeit aller LEDs lässt sich bei der Ausführung des Skriptes setzen, allerdings lässt sich nicht die Helligkeit jeder LED einzeln ansprechen. Die beim Ausführen des Skriptes übergebenen Parameter geben zum einen den Farbton und falls zusprechend das auszuführende Muster an. Der zweite Parameter gibt die Helligkeit in Form einer Zahl von 1-100 an, welche vom Skript in eine Zahl zwischen null und 255 (Maximalhelligkeit der LEDs) umgerechnet wird. Die Berechnung der verwendeten Helligkeit und die Statusauflösung sind auf die folgenden Codeabschnitte zurückzuführen:
|
|
|
|
|
|
```js
|
|
|
function displayLEDs(status, brightness) {
|
|
|
let usedStatus = status ? status : setLEDs();
|
|
|
let usedBrightness = brightness ? brightness : currentSettings ? currentSettings.brightness : 0.5;
|
|
|
let brightnessModificator = 0;
|
|
|
|
|
|
if (userStatus.horn) brightnessModificator = 0.5;
|
|
|
else if (userStatus.silence) brightnessModificator = -0.25;
|
|
|
|
|
|
usedBrightness = usedBrightness + brightnessModificator > 1 ? 1 : usedBrightness + brightnessModificator;
|
|
|
```
|
|
|
|
|
|
```js
|
|
|
function setLEDs() {
|
|
|
let status = null;
|
|
|
if (userStatus.coffee) status = 'Coffee';
|
|
|
else if (userStatus.handup) status = 'HandUp';
|
|
|
else if (userStatus.thumbdown) status = 'ThumbDown';
|
|
|
else if (userStatus.thumbup) status = 'ThumbUp';
|
|
|
else if (userStatus.applause) status = 'Applause';
|
|
|
else status = boxStatus;
|
|
|
|
|
|
return status;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Der displayLEDs-Funktion kann ein Status und eine Helligkeit übergeben werden. Wenn ein Status vorhanden ist, wird dieser verwendet, ansonsten wird die setLEDs-Funktion aufgerufen, welche aus dem aktiven Nutzerstatus den aktuellen LED-Status bestimmt. Hier wird auch die Priorität des Nutzerstatus festgelegt.
|
|
|
Die Helligkeit hat einen Standardwert von 50%. Wenn ein Wert übergeben wird, oder ein Wert in den Nutzereinstellungen vorhanden ist, wird dieser anstelle des Standards verwendet. Zusätzlich wird ein Modifikator für die Helligkeit berechnet. Dieser wird durch ein aktives Mikrofon oder dem Silence-Status beeinflusst. Die Helligkeit wird daraufhin mit dem Modifikator verrechnet, wobei diese auf maximal 100% gesetzt werden kann. In Tabelle X werden die Möglichen Darstellung der LED gezeigt.
|
|
|
|
|
|
| Status | Standardhelligkeit | RGB-Werte | Muster |
|
|
|
| ------ | ------ | ------ | ------ |
|
|
|
| Verbinduungsaufbau | 50% | 255, 69, 0 | abwechselndes Blinken |
|
|
|
| Verbunden | 50% | 0, 0, 50 | konstantes Leuchten |
|
|
|
| Pause | 50% | 255, 255, 0 | konstantes Leuchten |
|
|
|
| Handheben | 50% | 107, 1, 125 | im Kreis laufendes Leuchten |
|
|
|
| Daumen hoch | 50% | 0, 255, 0 | konstantes Leuchten |
|
|
|
| Daumen runter | 50% | 255, 0, 0 | konstantes Leuchten |
|
|
|
| Klatschen | 50% | 0, 0, 255 | Blinken aller LEDs |
|
|
|
| Lautsprecher | 100% | 0, 0, 50 | konstantes Leuchten |
|
|
|
| Abwesend | 25% | 0, 0, 50 | konstantes Leuchten |
|
|
|
|
|
|
Tabelle XX: LED-Reaktionen auf Accelerator-Statuse
|
|
|
| ------ | ------------------ | --------- | ------ |
|
|
|
| Start der Box (BoxOn) | 50% | 50, 50, 50 | konstantes Leuchten |
|
|
|
| Verbindungsaufbau (BoxParing) | 50% | 255, 69, 0 | abwechselndes Blinken |
|
|
|
| Verbunden (BoxConnected) | 50% | 0, 0, 50 | konstantes Leuchten |
|
|
|
| Pause (Coffee) | 50% | 255, 255, 0 | konstantes Leuchten |
|
|
|
| Handheben (HandUp) | 50% | 107, 1, 125 | im Kreis laufendes Leuchten |
|
|
|
| Daumen hoch (ThumbUp) | 50% | 0, 255, 0 | konstantes Leuchten |
|
|
|
| Daumen runter (ThumpDown) | 50% | 255, 0, 0 | konstantes Leuchten |
|
|
|
| Klatschen (Applause) | 50% | 0, 0, 255 | blinken aller LEDs |
|
|
|
| Lautsprecher (-) | 100% | 0, 0, 50 | konstantes Leuchten |
|
|
|
| Abwesend (-) | 25% | 0, 0, 50 | konstantes Leuchten |
|
|
|
| Ausschalten (Shutdown) | 0% | 0, 0, 0 | kein Leuchten |
|
|
|
|
|
|
|
|
|
Tabelle XX: LED-Reaktionen auf unterschiedliche Statusmeldungen
|
|
|
|
|
|
## Betriebssystem
|
|
|
|
|
|
Auf dem Raspberry Pi in der AmbientBox läuft die sogenannte Legacy-Version des Raspberry Pi OS Betriebssystems. Es handelt sich um eine ältere Revision des Betriebssystems, welche allerdings noch offiziell unterstützt wird und Sicherheitsupdates bekommt. Diese wurde gewählt, da bei der aktuellen Version Probleme beim Ausführen von Skripten beim Hochfahren des Systems entstehen.\
|
|
|
Beim Start führt das Betriebssystem das autorun Skript in dem Ordner `/etc/xdg/lxsession/LXDE-pi/autostart` aus. Zu diesem Skript wurden Anweisungen hinzugefügt, damit das Frontend der AmbientBox automatisch gestartet wird. Zunächst wird dafür Node.js gestartet und damit das ambientbox-Projekt, dass mittels der Git-Seite zu finden ist, lokal gehostet. Dann wird der Chromium-Browser im sogenannten Kiosk-Modus, bei dem der Browser alle anderen Fenster überdeckt und im Vollbildmodus angezeigt wird, gestartet. Der Browser navigiert automatisch zur Seite http://localhost:3000, auf welcher das ambientbox-Projekt gehostet wird.
|
|
|
Beim Start führt das Betriebssystem das autorun-Skript in dem Ordner `/etc/xdg/lxsession/LXDE-pi/autostart` aus. Zu diesem Skript wurden Anweisungen hinzugefügt, damit das Frontend der AmbientBox automatisch gestartet wird. Zunächst wird dafür der Node.js-Server der AmbientBox gestartet. Dann wird der Chromium-Browser im Kiosk-Modus gestartet, in welchem der Browser alle anderen Fenster überdeckt und im Vollbildmodus angezeigt wird. Der Browser navigiert automatisch zur Seite http://localhost:3000, auf welcher das AmbientBox-Projekt gehostet wird.
|
|
|
|
|
|
## Hardware
|
|
|
|
|
|
In der initialen Planung der AmbientBox wurde für die Hardware ein Arduino Mikrokontroller verwendet. Es zeigte sich allerdings im Laufe des Projektes, dass dessen Leistung und Funktionen für das Projekt nicht passend waren. Stattdessen wurde sich für einen Raspberry Pi Mini-Computer entschieden. Dieser unterscheidet sich vom Arduino durch deutlich höhere Rechenkapazität, erweiterten Kommunikationsmöglichkeiten wie einem eingebauten WLAN-Modul und mehrere USB-Anschlüsse und durch ein vollständiges Betriebssystem, dem Raspbian OS.\
|
|
|
Für die Visualisierung wird ein 3,5 Zoll TFT Touchscreen-Bildschirm verwendet. Dieser kann über Pins direkt mit dem Pi verbunden werden, in diesem Fall wurde sich aber dafür entschieden, den Pi mit einem kleinen Breadboard zur Weiterleitung der Signale zu verbinden und dann entsprechend den Bildschirm mit dem Breadboard zu verbinden. Der Bildschirm ist für das Projekt ausreichend, besitzt jedoch mehrere Schwachstellen:
|
|
|
|
|
|
- Der Bildschirm ist ziemlich klein, was die Eingabe von beispielsweise dem Passwort einer WLAN-Verknüpfung erschwert
|
|
|
- Die Bildwiederholrate sehr niedrig, was zu einem ruckeligen Bild und entsprechend einer negativeren Nutzererfahrung führt
|
|
|
- Ein großer Kritikpunkt ist ebenfalls der Blickwinkel – schon bei einer leichten Neigung werden die Farben auf dem Bildschirm stark verzerrt angezeigt.
|
|
|
|
|
|
Aufgrund der im Raspberry Pi eingebauten 3,5mm-Klinke zur Audioein- und -ausgabe wurde ein kleiner Lautsprecher mit entsprechendem Anschluss ausgewählt. Dieser ist für das Projekt ausreichend, sollte allerdings im Optimalfall durch einen stärkeren Lautsprecher ersetzt werden, da er auch bei maximaler Lautstärke zu leise für ein weites Hörverständnis ist. Im Endeffekt wurde allerdings doch nicht die 3,5mm-Klinke des Pis verwendet, da es zu einem Softwareproblem kam, welches durch die LED-Leiste ausgelöst wird. Diese verwendet ebenfalls den internen Audio-Kanal des Raspberry Pis, weshalb der Audio-Treiber der internen Soundkarte des Pis deaktiviert werden muss. Aus diesem Grund wird einer der vier USB-Ports des Raspberry Pis für eine externe Soundkarte verwendet. Diese ist klein und leistungsstark genug, um für das Projekt gut verwendbar zu sein.\
|
|
|
Zur Aufnahme der Stimmen der Personen, die sich mit der AmbientBox im Raum befinden, wurde ein USB-Mikrofon verwendet. Dieses ist für das Projekt passend, da es ein langes Kabel hat sowie klein und unscheinbar ist. Es stellte sich allerdings heraus, dass das Kabel an dem USB-Anschluss einen langen Plastiktrichter hat, der nicht verbogen werden kann und deshalb die Größe der AmbientBox radikal erhöhen würde. Aus diesem Grund wurde ein biegbares Verlängerungskabel besorgt. \
|
|
|
Ein weiteres Verlängerungskabel wurde vom Raspberry Pi nach außen zum unteren Rand der AmbientBox gelegt. Dadurch wird ein USB-A Anschluss geboten, an dem beispielsweise eine USB-Tastatur oder eine Maus zur einfacheren Navigation angeschlossen werden kann. Neben diesem Anschluss befindet sich ein zweiter USB-C Anschluss. Dieses Kabel ist intern direkt mit einer Powerbank verbunden, die es der AmbientBox erlaubt, ohne direkten Stromanschluss betrieben zu werden. Über den USB-C Anschluss lässt sich die Powerbank und somit die gesamte AmbientBox laden. Die Powerbank stammt von der Marke Intenso und verfügt über eine Kapazität von 10.000 Milliamperestunden, was zu einer langen Batterielaufzeit der AmbientBox führt.\
|
|
|
Die AmbientBox ist mit der Powerbank über ein Kabel verbunden, welches einen physischen An- und Ausschalter besitzt. Dieser Schalter wurde zur Außenseite der Box gelegt und schaltet entsprechend den Stromfluss zwischen dem Raspberry Pi und der Powerbank ab oder an.\
|
|
|
Zuletzt verfügt die AmbientBox noch über eine portable USB-Kamera. Diese verfügt über ein einfahrbares Kabel, welche gut zu dem Projekt gepasst hat. Sie nimmt mit einer Auflösung von 640x480 Pixeln auf und erlaubt es der nutzenden Person der AmbientBox die anderen GesprächsteilnehmerInnen gut zu sehen. Nachfolgend sind ein paar Bilder der Hardware im Entstehungsprozess und als finaler Prototyp zu sehen.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Der AmbientBox Hardware-Prototyp während der Konstruktion
|
|
|
|
|
|
Die initiale Idee war es, für das System einen Arduino Microkontroller zu verwenden. Es zeigte sich allerdings schon bald, dass dessen Leistung und Funktionen für das Projekt nicht passend war. Stattdessen wurde sich also für einen Raspberry Pi Mini-Computer entschieden. Dieser unterscheidet sich vom Arduino durch deutlich höhere Rechenkapazität, erweiterten Kommunikationsmöglichkeiten wie einem eingebauten WLAN-Modul und mehrere Anschlüsse und durch ein vollständiges Betriebssystem, dem Raspbian OS.\
|
|
|
Es wird ein 3,5 Zoll TFT Touchscreen-Bildschirm verwendet. Dieser kann über Pins direkt mit dem Pi verbunden werden, in diesem Fall haben wurde sich aber dafür entschieden, den Pi mit einem kleinen Breadboard zur Weiterleitung der Signale zu verbinden und dann entsprechend den Bildschirm mit dem Breadboard zu verbinden. Der Bildschirm ist für das Projekt ausreichend, zeichnet sich allerdings durch mehrere Schwachstellen aus: Der Bildschirm ist ziemlich klein, was die Eingabe von beispielsweise dem Passwort einer WLAN-Verknüpfung erschwert. Zudem ist die Bildwiederholrate sehr niedrig, was zu einem ruckeligen Bild und entsprechend einer negativeren Nutzererfahrung führt. Ein großer Kritikpunkt ist ebenfalls der Blickwinkel – schon bei einer leichten Neigung werden die Farben auf dem Bildschirm stark verzerrt angezeigt.\
|
|
|
Aufgrund der beim Pi eingebauten 3,5mm-Klinke zur Audioausgabe/-eingabe wurde ein kleiner Lautsprecher mit entsprechendem Anschluss ausgewählt. Dieser ist für das Projekt ausreichend, sollte allerdings im Optimalfall durch einen stärkeren Lautsprecher ersetzt werden, da er auch bei maximaler Lautstärke recht leise ist. Im Endeffekt wurde allerdings doch nicht die 3,5mm-Klinke des Pis verwendet, da es zu einem Softwareproblem kam, welches durch die LED-Leiste ausgelöst wird. Diese verwendet ebenfalls den internen Audio-Kanal des Pis, weshalb der Audio-Treiber der internen Soundkarte des Pis deaktiviert werden muss. Aus diesem Grund wird einer der vier USB-Ports des Pis für eine externe Soundkarte verwendet. Diese ist klein und leistungsstark genug, um für das Projekt gut verwendbar zu sein. Zur Aufnahme der Stimmen der Personen, die sich mit der AmbientBox im Raum befinden, wurde ein USB-Mikrofon verwendet. Dieses ist für das Projekt passend, da es ein langes Kabel hat und klein und unaufmerksam ist. Es stellte sich allerdings heraus, dass das Kabel an dem USB-Anschluss einen langen Plastiktrichter hat, der nicht verbogen werden kann und deshalb die Größe der AmbientBox radikal erhöhen würde. Aus diesem Grund wurde ein Verlängerungskabel besorgt.
|
|
|
|
|
|

|
|
|
Abbildung XX: Das Innenleben des AmbientBox Hardware-Prototypen
|
|
|
|
|
|
Ein weiteres Verlängerungskabel wurde vom Pi nach außen zum unteren Rand der AmbientBox gelegt. Dadurch wird ein USB-A Anschluss geboten, an dem beispielsweise eine USB-Tastatur oder eine Maus zur einfacheren Navigation angeschlossen werden kann. Neben diesem Anschluss befindet sich ein zweiter USB-C Anschluss. Dieses Kabel ist intern direkt mit einer Powerbank verbunden, die es der AmbientBox erlaubt, ohne direkten Stromanschluss betrieben zu werden. Über den USB-C Anschluss lässt sich die Powerbank und somit die gesamte AmbientBox laden. Die Powerbank stammt von der Marke Intenso und verfügt über eine Kapazität von 10.000 Milliamperestunden, was zu einer langen Batterielaufzeit der AmbientBox führt.\
|
|
|
Die AmbientBox ist mit der Powerbank über ein Kabel verbunden, welches einen physischen An- und Ausschalter besitzt. Dieser Schalter wurde zur Außenseite der Box gelegt und schaltet entsprechend den Stromfluss zwischen dem Raspberry Pi und der Powerbank ab oder an.\
|
|
|
Zuletzt verfügt die AmbientBox noch über eine portable USB-Kamera. Diese verfügt über ein einfahrbares Kabel, welche gut zu dem Projekt gepasst hat. Sie nimmt mit einer Auflösung von 640x480 Pixeln auf und erlaubt es der nutzenden Person der AmbientBox die anderen Gesprächsteilnehmer gut zu sehen.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Der AmbientBox Hardware-Prototyp im Betrieb
|
|
|
|
|
|
In Abbildung XX ist zu sehen, wie die Verkabelung der Komponente innerhalb der Box aussieht. Der Bildschirm benutzt von oben bis unten die ersten 13 Pins auf beiden Seiten des Pis. Die LED-Leiste benötigt einen fünf Volt Pin, einen GPIO Pin (standardmäßig 18) und einen Ground Pin.
|
|
|
In Abbildung XX ist zu sehen, wie die Verkabelung der Komponente innerhalb der Box aussieht. Der Bildschirm benutzt von oben bis unten die ersten 13 Pins auf beiden Seiten des Pis. Die LED-Leiste benötigt einen fünf Volt Pin, einen GPIO Pin (standardmäßig 18) und einen Ground Pin. Zusätzlich sind über die USB-Anschlüsse das Mikrofon, der Lautsprecher, die Kamera und das USB-Verlängerungskabel angeschlossen. Der Mikro-USB-Anschluss wird für die Stromzufuhr des Raspberry Pis genutzt.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Die Verkabelung des Pis mit dem Bildschirm und der LED-Leiste
|
|
|
|
|
|
# Schnittstellen
|
|
|
|
|
|
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. Nachfolgend wird in [Kapitel 6.1](#initialisierung-der-backend-verbindung) dargestellt, wie die AmbientBox eine Verbindung mit dem Accelerator-Backend aufbaut. Die Verknüpfung eines/einer NutzerIn mit der AmbientBox ([Kapitel 6.2](#verbindung-einer-ambientbox-mit-einem-nutzer)), die Weiterleitung von Nutzerevents ([Kapitel 6.3](#event-weiterleitung)) und die WebRTC-Verbindung ([Kapitel 6.4](#webrtc)) werden in den darauffolgenden Kapiteln erklärt. Zum Schluss wird in [Kapitel 6.5](#sonstige-events) auf weitere Events eingegangen.
|
|
|
|
|
|
## 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.\
|
|
|
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.
|
|
|
Das Backend der AmbientBox setzt sowohl 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 zielt auf die Anbindung zwischen den beiden Systemen ab. In der nachfolgenden Abbildung ist der Ablauf eines Verbindungsaufbaus zwischen den beiden Systemen zu sehen.
|
|
|
|
|
|
 Abbildung X: Verbindungsaufbau zwischen der AmbientBox und dem Accelerator
|
|
|
|
|
|
 Abbildung X: Verbindungsabufbau zwischen der AmbientBox und dem Accelerator
|
|
|
Wenn die AmbientBox angeschaltet wird, wird nach der Initialisierung von unterschiedlichen Socket-Listenern eine Verbindungsanfrage an den Accelerator gesendet. Der Accelerator initialisiert ebenfalls zu Beginn der Laufzeit Socket-Listener. Nachfolgend sind die relevanten Listener-Events der AmbientBox und des Accelerators aufgelistet:
|
|
|
|
|
|
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 |
|
|
|
| joinRoom | Leitet Informationen über den/die NutzerIn, 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 |
|
|
|
| leaveRoom | Leitet an das Frontend weiter, dass der/die NutzerIn sich von der AmbientBox disconnected hat |
|
|
|
| connect_error | Erfasst Verbindungsfehler |
|
|
|
| connect_timeout | Erfasst Verbindungsüberschreitungen |
|
|
|
| error | Erfasst undefinierte Fehler |
|
... | ... | @@ -215,16 +256,16 @@ Tabelle X: Event-Listener auf der Seite der AmbientBox |
|
|
|-------|----------------|
|
|
|
| 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 |
|
|
|
| activateAmbientBox | Erfasst die ID einer AmbientBox und aktiviert diese in der Liste aller AmbientBoxen |
|
|
|
| join | Erfasst alle NutzerInnen, welche in einen Raum joinen und erstellt weitere Event-Listener |
|
|
|
| AmbientBoxConnectionRefused | Erfasst eine Verbindungsablehnung und leitet diese an das Frontend 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 |
|
|
|
| attachAmbientBoxToUser | Startet eine Verbindungsanfrage für eine AmbientBox zu einem/einer NutzerIn mit dem "joinRoom"-Event |
|
|
|
| detachAmbientBoxFromUser | Entfernt eine AmbientBox von dem/der aktuellen NutzerIn mit dem "leaveRoom"-Event |
|
|
|
| setStatus | Leitet den aktuellen Status des/der NutzerIn an die verknüpfte AmbientBox weiter |
|
|
|
|
|
|
Tabelle X: Event-Listener auf der Seite des Accelerators
|
|
|
|
... | ... | @@ -243,37 +284,37 @@ Nachdem die Verbindung zwischen den Systemen aufgebaut wurde, sendet die Ambient |
|
|
}
|
|
|
```
|
|
|
|
|
|
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 [Kapitel WebRTC](#webrtc).
|
|
|
Das Objekt enthält die UUID 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/einer NutzerIn zugeordnet wird auf 2, wenn eine AmbientBox von einem/einer NutzerIn 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/die verbundenen NutzerIn. 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 [Kapitel 6.4](#webrtc).
|
|
|
|
|
|
## Verbindung einer AmbientBox mit einem Nutzer
|
|
|
|
|
|
Sobald eine initiale Verbindung der beiden Systeme erstellt ist, kann ein Nutzer im Accelerator sich mit einer AmbientBox verbinden. Der Nutzer kann aus einer Liste von verfügbaren AmbientBoxen eine AmbientBox auswählen und sie dem aktuellen Raum hinzufügen. Dadurch wird diese für alle anderen Räume blockiert. Jeder Nutzer im Raum kann daraufhin sich mit der AmbientBox verknüpfen. Dafür wird vom Accelerator das "attachAmbientBoxToUser"-Event gesendet an das Backend gesendet, welches das "joinRoom"-Event an die AmbientBox sendet. Zusätzlich zu dem Event werden der aktuelle Raum und der Nutzer mitgesendet. Im Frontend der AmbientBox wird daraufhin eine Verbindungsanfrage angezeigt. Wenn der Nutzer die Verbindung akzeptiert, wird der Nutzer und der Raum in das Frontend geladen und eine WebRTC-Verbindung erstellt ([siehe Kapitel WebRTC](#webrtc)). Wenn der Nutzer die Verbindung ablehnt, wird das "AmbientBoxConnectionRefused"-Event an den Accelerator zurückgesendet. Dieses Event wird ebenfalls gesendet, wenn eine Anfrage bei der AmbientBox ankommt, jedoch das Forntend nicht geladen ist. In der nachfolgenden Abbildung ist diese Kommunikation visualisiert.
|
|
|
Sobald eine initiale Verbindung der beiden Systeme erstellt ist, kann ein/eine NutzerIn im Accelerator sich mit einer AmbientBox verbinden. Der/Die NutzerIn kann aus einer Liste von verfügbaren AmbientBoxen eine AmbientBox auswählen und sie dem aktuellen Raum hinzufügen. Dadurch wird diese für alle anderen Räume blockiert. Jeder/Jede NutzerIn im Raum kann daraufhin sich mit der AmbientBox verknüpfen. Dafür wird vom Accelerator das "attachAmbientBoxToUser"-Event gesendet an das Backend gesendet, welches das "joinRoom"-Event an die AmbientBox sendet. Zusätzlich zu dem Event werden der aktuelle Raum und der/die NutzerIn mitgesendet. Im Frontend der AmbientBox wird daraufhin eine Verbindungsanfrage angezeigt. Wenn der/die NutzerIn die Verbindung akzeptiert, wird der/die NutzerIn und der Raum in das Frontend geladen und eine WebRTC-Verbindung erstellt ([siehe Kapitel WebRTC](#webrtc)). Wenn der/die NutzerIn die Verbindung ablehnt, wird das "AmbientBoxConnectionRefused"-Event an den Accelerator zurückgesendet. Dieses Event wird ebenfalls gesendet, wenn eine Anfrage bei der AmbientBox ankommt, jedoch das Frontend dieser nicht geladen ist. In der nachfolgenden Abbildung ist diese Kommunikation visualisiert.
|
|
|
|
|
|
 Abbildung X: Verbindung einer AmbientBox mit einem Nutzer
|
|
|
 Abbildung X: Verbindung einer AmbientBox mit einem/einer NutzerIn
|
|
|
|
|
|
## Event-Weiterleitung
|
|
|
|
|
|
Die Event-Weiterleitung geht einseitig von der Seite des Accelerators aus. Der Listener für das "setStatus"-Event im Accelerator wird jedes Mal aufgerufen, wenn ein Nutzer seinen Status ändert. Ein Nutzerevent wird durch die Auswahl der unten im Accelerator angezeigten Buttons ausgelöst. Zu den übertragenen Events gehören die nachfolgend aufgelisteten:
|
|
|
Die Event-Weiterleitung geht einseitig von der Seite des Accelerators aus. Der Listener für das "setStatus"-Event im Accelerator wird jedes Mal aufgerufen, wenn ein/eine NutzerIn seinen Status ändert. Ein Nutzerevent wird durch die Auswahl der unten im Accelerator angezeigten Buttons ausgelöst. Zu den übertragenen Events gehören die nachfolgend aufgelisteten:
|
|
|
|
|
|
- ThumbUp: Der Nutzer hat den ThumbUp-Button gedrückt
|
|
|
- ThumbDown: Der Nutzer hat den ThumbDown-Button gedrückt
|
|
|
- HandUp: Der Nutzer hat den HandUp-Button gedrückt
|
|
|
- Horn: Der Nutzer hat sein Microfon aktiviert
|
|
|
- Camera: Der Nutzer hat seine Kamera aktiviert
|
|
|
- Coffee: Der Nutzer hat signalisiert, dass er nicht an der Tastatur ist
|
|
|
- Scilence: Der Nutzer hat seine Audioausgabe deaktiviert
|
|
|
- Applause: Der Nutzer hat einen Applause-Button gedrückt
|
|
|
- Onscreen: Der Nutzer hat das aktuelle Accelerator-Fenster fokussiert
|
|
|
- ThumbUp: Der/Die NutzerIn hat den ThumbUp-Button gedrückt
|
|
|
- ThumbDown: Der/Die NutzerIn hat den ThumbDown-Button gedrückt
|
|
|
- HandUp: Der/Die NutzerIn hat den HandUp-Button gedrückt
|
|
|
- Horn: Der/Die NutzerIn hat sein Mikrofon aktiviert
|
|
|
- Camera: Der/Die NutzerIn hat seine Kamera aktiviert
|
|
|
- Coffee: Der/Die NutzerIn hat signalisiert, dass er nicht an der Tastatur ist
|
|
|
- Silence: Der/Die NutzerIn hat seine Audioausgabe deaktiviert
|
|
|
- Applause: Der/Die NutzerIn hat einen Applause-Button gedrückt
|
|
|
- Onscreen: Der/Die NutzerIn hat das aktuelle Accelerator-Fenster fokussiert
|
|
|
|
|
|
Für jedes der Events gibt es ebenfalls ein negiertes Event. Wenn eines dieser Events im Accelerator-Backend ankommt, wird überprüft, ob es eine verknüpfte AmbientBox gibt. Wenn ja, dann wird das Events an den Socket dieser AmbientBox gesendet. Im AmbientBox-Backend wird das Event in ein Laufzeit-Objekt gespeichert und eventuelle Widersprüche von einzelnen Events behoben. Dieses Objekt wird dann im Frontend geladen und visualisiert angezeigt. Nachfolgend ist die Event-Weiterleitung visualisiert:
|
|
|
Für jedes der Events gibt es ebenfalls ein negiertes Event. Wenn eines dieser Events im Accelerator-Backend ankommt, wird überprüft, ob es eine verknüpfte AmbientBox gibt. Wenn ja, dann wird das Event an den Socket dieser AmbientBox gesendet. Im AmbientBox-Backend wird das Event in ein Laufzeit-Objekt gespeichert und eventuelle Widersprüche von einzelnen Events behoben. Dieses Objekt wird dann im Frontend geladen und visualisiert angezeigt. Nachfolgend ist die Event-Weiterleitung visualisiert:
|
|
|
|
|
|
 Abbildung X: Event-Weiterleitung
|
|
|
|
|
|
## WebRTC
|
|
|
|
|
|
Für die Kommunikation mit Audio und Video verwendet der Acelerator den WebRTC-Standard. Dieser ist ein Protokoll, das die Kommunikation zwischen Browser- und Server-Seiten ermöglicht. Die Kommunikation erfolgt hierbei ebenfalls über Websockets. Der WebRTC-Standard ist in den [WebRTC-Dokumentationen](https://www.w3.org/TR/webrtc/) zu finden.
|
|
|
Für die Kommunikation mit Audio und Video verwendet der Accelerator den WebRTC-Standard. Dieser ist ein Protokoll, das die Kommunikation zwischen Browser- und Server-Seiten ermöglicht. Die Kommunikation erfolgt hierbei ebenfalls über Websockets. Der WebRTC-Standard ist in den [WebRTC-Dokumentationen](https://www.w3.org/TR/webrtc/) zu finden.
|
|
|
|
|
|
Die WebRTC-Verbindung wird von der Seite der AmbientBox initialisiert, wenn der Nutzer die Verbindungsanfrage angenommen hat. Dafür wird eine neune Client-to-Server-Connection aus dem Browser mit dem Accelerator-Backend initialisiert. Hierbei werden ebenfalls die Event-Listener für "connect", "connect_error", "connect_timeout" und "error" registriert. Für die Umsetzung der WebRTC-Verbindung nutzt die AmbientBox bestehende Funktionalitäten des Accelerators, welche im Frontend eingebunden sind. Zu den eingebundenen Dateien gehören:
|
|
|
Die WebRTC-Verbindung wird von der Seite der AmbientBox initialisiert, wenn der/die NutzerIn die Verbindungsanfrage angenommen hat. Dafür wird eine neue Client-to-Server-Connection aus dem Browser mit dem Accelerator-Backend initialisiert. Hierbei werden ebenfalls die Event-Listener für "connect", "connect_error", "connect_timeout" und "error" registriert. Für die Umsetzung der WebRTC-Verbindung nutzt die AmbientBox bestehende Funktionalitäten des Accelerators, welche im Frontend eingebunden sind. Zu den eingebundenen Dateien gehören:
|
|
|
|
|
|
- connect.js
|
|
|
- ezMCU.js
|
... | ... | @@ -283,6 +324,7 @@ Die WebRTC-Verbindung wird von der Seite der AmbientBox initialisiert, wenn der |
|
|
- vpx-worker.js
|
|
|
|
|
|
Diese Dateien setzten ebenfalls Event-Listener um, welche wichtig für die WebRTC-Verbindung sind. In der nachfolgenden Tabelle sind die wichtigsten Listener aufgelistet, welche hauptsächlich für den Verbindungsaufbau verantwortlich ist.
|
|
|
|
|
|
| Datei | Event | Funktionalität |
|
|
|
|-------|-------|----------------|
|
|
|
| ezMCU.js | mcu_registerStream | Veröffentlicht einen eigenen Audio- oder Videostream |
|
... | ... | @@ -292,32 +334,35 @@ Diese Dateien setzten ebenfalls Event-Listener um, welche wichtig für die WebRT |
|
|
|
|
|
Tabelle X: Event-Listener für den WebRTC-Verbindungsaufbau
|
|
|
|
|
|
Bei einem Verbindungsaufbau wird die ezMCU-Klasse initialisiert und auf das "connect"-Event der neu erstellten Socket-Verbindung gewartet. Sobald das Event ausgelöst wird, startet die Erfassung der lokalen Audio- und Videostreams. Abhängig von den konfigurierten Einstellungen werden die Berechtigunegn für die Audio- und Videostreams der Kamera und des Mikrofons der AmbientBox angefragt und als neuer Stream an den Accelerator gepublisht. Sobald alle benötigten Streams vorhanden sind, wird das "join"-Event an den Accelerator gesendet. Dieses fügt die AmbientBox als Teilnehmer in einen Raum hinzu. Danach erhält die AmbientBox alle Streams aus diesem Raum und kann sich die Streams des verknüpften Nutzers auswählen. Ebenfalls wird während des Verbindungsaufbaus die ID des WebRTC-Sockets der AmbientBox an das Accelerator-Backend über das "setWebRTCID"-Event gesendet. Dadurch kann der Accelerator die ausgewählte AmbientBox der WebRTC-Verbindung zuordnen und entsprechend die Streams verwalten. In Abbildung X ist der Ablauf des WebRTC-Verbindungsaufbaus visualisiert.
|
|
|
Bei einem Verbindungsaufbau wird die ezMCU-Klasse initialisiert und auf das "connect"-Event der neu erstellten Socket-Verbindung gewartet. Sobald das Event ausgelöst wird, startet die Erfassung der lokalen Audio- und Videostreams. Abhängig von den konfigurierten Einstellungen werden die Berechtigungen für die Audio- und Videostreams der Kamera und des Mikrofons der AmbientBox angefragt und als neuer Stream an den Accelerator veröffentlicht. Sobald alle benötigten Streams vorhanden sind, wird das "join"-Event an den Accelerator gesendet. Dieses fügt die AmbientBox als Teilnehmer in einen Raum hinzu. Danach erhält die AmbientBox alle Streams aus diesem Raum und kann sich die Streams des/der verknüpften NutzerIn auswählen. Ebenfalls wird während des Verbindungsaufbaus die ID des WebRTC-Sockets der AmbientBox an das Accelerator-Backend über das "setWebRTCID"-Event gesendet. Dadurch kann der Accelerator die ausgewählte AmbientBox der WebRTC-Verbindung zuordnen und entsprechend die Streams verwalten. In Abbildung X ist der Ablauf des WebRTC-Verbindungsaufbaus visualisiert.
|
|
|
|
|
|
 Abbildung X: WebRTC-Verbindungsaufbau
|
|
|
|
|
|
## Sonstige Events
|
|
|
|
|
|
Es gibt noch einige weitere Socket-Events, welche wichtig für die Kommunikation zwischen den beiden Systemen und intern in der AmbientBox sind. In der Tabelle X sind diese Events aufgelistet.
|
|
|
Es gibt noch einige weitere Socket-Events, welche wichtig für die Kommunikation zwischen den beiden Systemen und innerhalb der AmbientBox sind. In der Tabelle X sind diese Events aufgelistet.
|
|
|
|
|
|
| Event | System | Funktionalität |
|
|
|
|-------|--------|----------------|
|
|
|
| ambientBoxes | Accelerator | Schickt Updates des AmbientBox-Arrays an alle Clients |
|
|
|
| assignAmbientBoxes | Accelerator | Führt die Zuteilung der AmbientBoxen durch, wenn ein Nutzer in einen Raum beitritt, in welchem bereits eine AmbientBox in Anwendung ist |
|
|
|
| assignAmbientBoxes | Accelerator | Führt die Zuteilung der AmbientBoxen durch, wenn ein/eine NutzerIn in einen Raum beitritt, in welchem bereits eine AmbientBox in Anwendung ist |
|
|
|
| stopWebRTCConnection | AmbientBox / Accelerator | Teilt dem Accelerator mit, dass die AmbientBox ihre WebRTC-Verbindung beendet hat |
|
|
|
| reloadFrontend | AmbientBox | Teilt dem AmbientBox-Frontend mit, dass es neu geladen werden soll. Dies passiert bei zu häufigem Verbindungsabbruch oder einem Crash des Backend-Servers, um die WebRTC-Verbindung gesteuert zu beenden |
|
|
|
| shutdown | AmbientBox | Schält die LED-Leiste aus und fährt die AmbientBox herunter |
|
|
|
|
|
|
Tabelle X: Weitere Socket-Events
|
|
|
|
|
|
# Usertests
|
|
|
# Nutzertests
|
|
|
|
|
|
Zur Evalutaion der Usability der AmbientBox wurde das System mehreren Personen vorgeführt und ein SUS(System Usability Scale)-Fragebogen erfasst.
|
|
|
Zur Evaluation der Usability der AmbientBox wurde das System mehreren Personen vorgeführt und ein SUS(System Usability Scale)-Fragebogen erfasst.
|
|
|
|
|
|
## Vorgehen
|
|
|
|
|
|
Der Fragebogen wurde nach dem originalen SUS-Fragebogen designt und ins Deutsche übersetzt. Zudem wurden einzelne Anpassungen der Formulierungen der Fragen umgesetzt. Als Zusatz wurde am Ende des Fragebogens ein Freitext-Feld für weitere Anmerkungen hinzugefügt. Durch den Fragebogen wird nur die Usability der AmbientBox abgefragt. Eine Evaluation des Accelerators und der dort umgesetzten Funktionalitäten wird nicht durchgeführt. Nachfolgend ist der Fragebogen zu sehen.  Abbildung X: SUS-Fragebogen zur Erfassung der Usability der AmbientBox
|
|
|
Der Fragebogen wurde nach dem originalen SUS-Fragebogen designt und ins Deutsche übersetzt. Zudem wurden einzelne Anpassungen der Formulierungen der Fragen umgesetzt. Als Zusatz wurde am Ende des Fragebogens ein Freitext-Feld für weitere Anmerkungen hinzugefügt. Durch den Fragebogen wird nur die Usability der AmbientBox abgefragt. Eine Evaluation des Accelerators und der dort umgesetzten Funktionalitäten wird nicht durchgeführt. Nachfolgend ist der Fragebogen zu sehen.
|
|
|
|
|
|
 Abbildung X: SUS-Fragebogen zur Erfassung der Usability der AmbientBox
|
|
|
|
|
|
Die Teilnehmer wurde alle an der Hochschule Reutlingen befragt und alle Fragebögen wurden anonymisiert erfasst. Zu Beginn wird das System und das Ziel dieses erklärt, woraufhin dem Nutzer neun Aufgaben gestellt werden. Jede der Aufgaben ziehlt darauf ab, dass die Funktionalitäten der AmbientBox durch den Nutzer ausgeführt werden. Dabei werden dem Nutzer keine Tipps gegeben. Die neun Aufgaben sind nachfolgend aufgelistet:
|
|
|
Die TeilnehmerInnen wurden alle an der Hochschule Reutlingen befragt und alle Fragebögen wurden anonymisiert erfasst. Zu Beginn wird das System und das Ziel dieses erklärt, woraufhin dem/der NutzerIn neun Aufgaben gestellt werden. Jede der Aufgaben zielt darauf ab, dass die Funktionalitäten der AmbientBox durch den/die NutzerIn ausgeführt werden. Dabei werden dem/der NutzerIn keine Tipps gegeben. Die neun Aufgaben sind nachfolgend aufgelistet:
|
|
|
|
|
|
- Aufgabe 1: Anschalten der AmbientBox
|
|
|
- Aufgabe 2: Verbinden mit einem vorgegebenen WLAN-Netzwerk
|
... | ... | @@ -329,48 +374,52 @@ Die Teilnehmer wurde alle an der Hochschule Reutlingen befragt und alle Fragebö |
|
|
- Aufgabe 8: Beenden der WebRTC-Verbindung
|
|
|
- Aufgabe 9: Ausschalten der AmbientBox
|
|
|
|
|
|
Nachdem alle Aufgaben ausgeführt wurden, wird dem Nutzer der Fragebogen zur Bewertung der Usability ausgehändigt.
|
|
|
Nachdem alle Aufgaben ausgeführt wurden, wird dem/der NutzerIn der Fragebogen zur Bewertung der Usability ausgehändigt.
|
|
|
|
|
|
## Ergebnisse
|
|
|
|
|
|
Nachfolgend sind die Ergebnisse der SUS-Fragebögen aufgelistet:
|
|
|
| Teilnehmer | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Score | Anmerkungen |
|
|
|
|
|
|
| # | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Score | Anmerkungen |
|
|
|
|------------|----|----|----|----|----|----|----|----|----|-----|-------|-------------|
|
|
|
| 1 | 3 | 1 | 4 | 1 | 3 | 1 | 5 | 2 | 5 | 1 | 85 | Die Hardware ist ausbaufähig -> bessere Lautsprecher, Kamera nach oben ausrichten, Bildschirm gekippt für bessere Sicht. <br>Das Grundkonzept ist gut. |
|
|
|
| 2 | 2 | 1 | 4 | 1 | 3 | 1 | 5 | 2 | 4 | 1 | 80 | Hardware könnte optimiert werden. |
|
|
|
| 3 | 2 | 2 | 4 | 1 | 4 | 2 | 3 | 2 | 4 | 1 | 72,5 | Bildschirm sehr klein und spiegelt aus sitzender Perspektive sehr stark. |
|
|
|
| 4 | 2 | 2 | 4 | 1 | 4 | 3 | 2 | 4 | 3 | 1 | 60 | Die Hardware ist nicht so geeignet <br>- Display viel zu klein & spiegelt <br>- Zeigt unterschiedliche Farben an, je nach Blickwinkel <br>- Kamera ist zu tief + Leute am Tisch müssen sich über die Box & Kamera beugen, um den Bildschirm anzusehen. -> d.h. Box müsste größer bzw. Kamera höher liegen & der Bildschirm senkrecht statt waagrecht angebracht sein |
|
|
|
| 5 | 4 | 2 | 5 | 1 | 5 | 2 | 5 | 1 | 4 | 1 | 90 | - |
|
|
|
| 6 | 4 | 1 | 5 | 1 | 4 | 3 | 5 | 1 | 4 | 2 | 87,5 | - Ton und Bild sind noch etwas verzögert, wackelig <br>- Bildschirm könnte ein klein bisschen größer sein für die Bedienung durch ältere Menschen |
|
|
|
| 7 | 3 | 2 | 5 | 2 | 4 | 1 | 4 | 2 | 4 | 2 | 77,5 | - Andere Anordnung des Displays <br>- Feedback beim Einschalten |
|
|
|
| 8 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 100 | - Sehr intuitiv <br>- Blickwinkel von Display etwas schlecht |
|
|
|
| 9 | 4 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 97,5 | Display sollte hochkant sein, schwierig zu lesen, wenn es flach auf dem Tisch liegt |
|
|
|
| 10 | 4 | 1 | 5 | 1 | 5 | 1 | 4 | 1 | 5 | 1 | 92,5 | - |
|
|
|
| T1 | 3 | 1 | 4 | 1 | 3 | 1 | 5 | 2 | 5 | 1 | 85 | Die Hardware ist ausbaufähig -> bessere Lautsprecher, Kamera nach oben ausrichten, Bildschirm gekippt für bessere Sicht. <br>Das Grundkonzept ist gut. |
|
|
|
| T2 | 2 | 1 | 4 | 1 | 3 | 1 | 5 | 2 | 4 | 1 | 80 | Hardware könnte optimiert werden. |
|
|
|
| T3 | 2 | 2 | 4 | 1 | 4 | 2 | 3 | 2 | 4 | 1 | 72,5 | Bildschirm sehr klein und spiegelt aus sitzender Perspektive sehr stark. |
|
|
|
| T4 | 2 | 2 | 4 | 1 | 4 | 3 | 2 | 4 | 3 | 1 | 60 | Die Hardware ist nicht so geeignet <br>- Display viel zu klein & spiegelt <br>- Zeigt unterschiedliche Farben an, je nach Blickwinkel <br>- Kamera ist zu tief + Leute am Tisch müssen sich über die Box & Kamera beugen, um den Bildschirm anzusehen. -> d.h. Box müsste größer bzw. Kamera höher liegen & der Bildschirm senkrecht statt waagrecht angebracht sein |
|
|
|
| T5 | 4 | 2 | 5 | 1 | 5 | 2 | 5 | 1 | 4 | 1 | 90 | - |
|
|
|
| T6 | 4 | 1 | 5 | 1 | 4 | 3 | 5 | 1 | 4 | 2 | 87,5 | - Ton und Bild sind noch etwas verzögert, wackelig <br>- Bildschirm könnte ein klein bisschen größer sein für die Bedienung durch ältere Menschen |
|
|
|
| T7 | 3 | 2 | 5 | 2 | 4 | 1 | 4 | 2 | 4 | 2 | 77,5 | - Andere Anordnung des Displays <br>- Feedback beim Einschalten |
|
|
|
| T8 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 100 | - Sehr intuitiv <br>- Blickwinkel von Display etwas schlecht |
|
|
|
| T9 | 4 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 5 | 1 | 97,5 | Display sollte hochkant sein, schwierig zu lesen, wenn es flach auf dem Tisch liegt |
|
|
|
| T10 | 4 | 1 | 5 | 1 | 5 | 1 | 4 | 1 | 5 | 1 | 92,5 | - |
|
|
|
|
|
|
Tabelle X: Ergebnisse der SUS-Fragebögen
|
|
|
|
|
|
Der errechnete SUS-Score liegt bei 84,25 von 100 Punkten. Die Bewertung des Systems fiel überwiegend sehr positiv aus. Der niedrigste erhaltene Score liegt bei 60 Punkten und der höchste Score bei 100 Punkten. Acht der zehn befragten Personen haben weitere Anmerkungen an das System hinzugefügt.\
|
|
|
Der hauptsächliche Kritikpunkt ist hierbei die verwendete Hardware. Insbesondere wird dabei der zu kleine Bildschirm und der zu leise Lautsprecher hervorgehoben.\
|
|
|
Ein weiterer Kritikpunkt ist die Anordnung des Displays. Von einer sitzenden Position spiegelt dieses sehr und es ist schwierig zu erkennen, was sich auf dem Display abspielt. Eine gekippte Position oben auf der AmbientBox oder die Anbringung des Bildschirms an der Vorderseite wurden dabei angemerkt. Beim letzten Punkt wurde dabei aber auch angemerkt, dass dabei die Bedienbarkeit darunter leiden würde.\
|
|
|
Eine weitere Anmerkung ist die Verwendung der Kamera. Die Kamera ist zu tief angebracht, sodass nicht alle Personen vollständig erkennbar sind. Ein veränderter Winkel oder eine Kamera mit Weitwinkelfunktion könnten dieses Problem beheben.\
|
|
|
Es wurden keine Anmerkungen oder Kritikpunkte an der entwickelten Oberfläche der AmbientBox erfasst. Aufgrund der geringen restlichen Zeit des Semesters wurden keine Änderungen aufgrund des Feedbacks vorgenommen, jedoch bietet dieses Anhaltspunkte für eine Weiterentwicklung des Systems in kommenden Semestern.
|
|
|
Ein weiterer Kritikpunkt ist die Anordnung des Displays. Von einer sitzenden Position aus spiegelt dieses sehr und es ist schwierig zu erkennen, was sich auf dem Display abspielt. Eine gekippte Position oben auf der AmbientBox oder die Anbringung des Bildschirms an der Vorderseite wurden dabei angemerkt. Beim letzten Punkt wurde dabei aber auch angemerkt, dass dabei die Bedienbarkeit darunter leiden würde.\
|
|
|
Eine weitere Anmerkung ist die Verwendung der Kamera. Die Kamera ist zu tief angebracht, sodass nicht alle Personen vollständig erkennbar sind. Ein veränderter Winkel oder eine Kamera mit Weitwinkelobjektiv könnten dieses Problem beheben.\
|
|
|
Es wurden keine Anmerkungen oder Kritikpunkte zu der entwickelten Oberfläche der AmbientBox erfasst. Aufgrund der geringen restlichen Zeit des Semesters wurden keine Anpassungen der Hardware vorgenommen. Das Feedback bietet jedoch Anhaltspunkte für eine Weiterentwicklung des Systems in kommenden Semestern.
|
|
|
|
|
|
# Anleitung
|
|
|
|
|
|
In den folgenden beiden Kapiteln wird die Nutzung des Systems erklärt. In [Kapitel 8.1](#vorbereitung) wird der technische Hintergrund der Nutzung des Systems erklärt und wie dieses korrekt aufgesetzt werden kann. [Kapitel 8.2](#bedienung) geht genauer auf die Bedienung der Oberfläche der AmbientBox und des Accelerators ein.
|
|
|
|
|
|
## Vorbereitung
|
|
|
|
|
|
Zum Betreiben der AmbientBox ist eine Micro-SD Karte notwendig. Diese sollte eine Mindestgröße von 16 GB haben. Der erste Schritt ist das Aufsetzen des Betriebssystems auf dieser Micro-SD Karte. Hierfür laden Sie sich bitte das Raspberry Pi Imager Programm ([https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/)) herunter und installieren es auf Ihrem Computer.\
|
|
|
|
|
|

|
|
|
Abbildung XX: Downloadseite des Raspberry Pi Imagers
|
|
|
|
|
|
Zum Betreiben der AmbientBox ist eine Micro-SD Karte notwendig. Diese sollte eine Mindestgröße von 16 GB haben. Der erste Schritt ist das Aufsetzen des Betriebssystems auf dieser Micro-SD Karte. Hierfür laden Sie sich bitte das Raspberry Pi Imager Programm ([https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/)) herunter und installieren es auf Ihrem Computer.\
|
|
|
Zum Ende der Installation setzen Sie noch ein Häkchen neben dem Text „Run Raspberry Pi Imager“ um das Programm zu starten. Verbinden Sie Ihre Micro-SD Karte mit Ihrem Computer. Klicken Sie dann auf das mittlere Feld auf dem steht „CHOOSE STORAGE“. In dem Dialog der sich öffnet wählen Sie Ihre SD Karte aus und bestätigen. Danach klicken Sie auf das linke Feld „CHOOSE OS“.
|
|
|
Zum Ende der Installation setzen Sie noch ein Häkchen neben dem Text „Run Raspberry Pi Imager“ um das Programm zu starten. Verbinden Sie Ihre Micro-SD Karte mit Ihrem Computer. Klicken Sie dann auf das mittlere Feld auf dem steht „CHOOSE STORAGE“. In dem Dialog, der sich öffnet wählen Sie Ihre SD-Karte aus und bestätigen. Danach klicken Sie auf das linke Feld „CHOOSE OS“.
|
|
|
|
|
|
\
|
|
|
\
|
|
|
Abbildung XX: Betribssystemauswahl
|
|
|
Abbildung XX: Betriebssystemauswahl
|
|
|
|
|
|
Hier klicken Sie zunächst auf „Raspberry Pi OS (other)“. In der sich öffnenden Liste wählen Sie „Raspberry Pi OS (Legacy)“ aus. Jetzt können Sie auf das rechte Feld „WRITE“ klicken und ein wenig warten, während das Betriebssystem heruntergeladen und aufgespielt wird. Sobald ein Pop-Up erscheint, dass die Operation erfolgreich war, können Sie das Programm schließen.\
|
|
|
Im nächsten Schritt stecken Sie die Micro-SD Karte in den Raspberry Pi mittels des Schlitzes an der Unterseite der Platine ein. Verbinden Sie den Pi mittels des HDMI-Ports an einen Bildschirm und schließen Sie eine USB-Maus und Tastatur an und schalten Sie ihn ein, indem Sie ihn mittels des Mikro-USB Ports an eine Stromquelle anschließen. Befolgen Sie die Anweisungen auf dem Bildschirm, um das Betriebssystem aufzusetzen. Sie können ein beliebiges Passwort setzen. Für die weiteren Schritte ist Internet benötigt, also verbinden Sie sich mit einem WLAN-Netzwerk wenn das System Sie danach fragt oder schließen Sie ein LAN-Kabel an den Pi an.\
|
|
|
Im nächsten Schritt stecken Sie die Micro-SD Karte in den Raspberry Pi mittels des Schlitzes an der Unterseite der Platine ein. Verbinden Sie den Pi mittels des HDMI-Ports an einen Bildschirm und schließen Sie eine USB-Maus und Tastatur an und schalten Sie ihn ein, indem Sie ihn mittels des Mikro-USB Ports an eine Stromquelle anschließen. Befolgen Sie die Anweisungen auf dem Bildschirm, um das Betriebssystem aufzusetzen. Sie können ein beliebiges Passwort setzen. Für die weiteren Schritte ist Internet benötigt, also verbinden Sie sich mit einem WLAN-Netzwerk, wenn das System Sie danach fragt, oder schließen Sie ein LAN-Kabel an den Pi an.\
|
|
|
Sobald das System fertig aufgesetzt ist und Sie sich auf dem Desktop befinden, kann man Node.js installieren. Dafür öffnen Sie eine Konsole mittels der Tastaturkombination STRG+ALT+T. Tippen Sie das folgende Kommando in die Konsole ein und bestätigen Sie mit Enter:\
|
|
|
`curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -`\
|
|
|
Danach tippen Sie das folgende Kommando ein: \
|
... | ... | @@ -380,15 +429,19 @@ Sie können prüfen, ob die Installation erfolgreich war, indem Sie folgendes Ko |
|
|
Als nächstes klonen Sie sich das AmbientBox Projekt. Dafür geben Sie in die Konsole Folgendes ein:\
|
|
|
`git clone https://gitlab.reutlingen-university.de/eckl/ambientbox.git`\
|
|
|
Geben Sie den Nutzernamen und das Passwort eines Nutzers ein, der/die Zugriff auf das Repository hat. Wenn das Projekt geladen ist, wechseln Sie in den Projektordner mittels des Kommandos:\
|
|
|
`cd ambientbox/client/`\
|
|
|
Hier geben Sie folgendes Kommando ein:\
|
|
|
`cd ambientbox/`\
|
|
|
Zur Installation der Node Module des Projektes müssen Sie im aktuellen ordner und in `/client` den folgenden Befehl ausführen:\
|
|
|
`npm install`
|
|
|
Geben Sie dann im ordner `/client` folgendes Kommando ein, um das Frontend zu builden:\
|
|
|
`npm run build`\
|
|
|
Danach gehen Sie in den Hauptprojektsorder zurück. Dafür geben Sie ein:\
|
|
|
`cd ..`\
|
|
|
Und hier führen Sie aus:\
|
|
|
`npm run prod`\
|
|
|
Damit ist das Projekt bereit, gehostet zu werden.\
|
|
|
Als nächstes wollen Sie den Treiber für die LED-Leiste installieren. Hierfür gehen Sie in den home-Ordner zurück indem Sie eingeben:\
|
|
|
Die Verbindungsinformationen der AmbientBox werden in der Datei `/data/connectionInformation.js` gespeichert. Dort kann das Ziel der AmbientBox angepasst werden. Standardmäßig ist hier die Adresse des Accelerators hinterlegt. Sobald die Verbindungsinformationen angepasst sind, kann für den Produktionsmodus der AmbientBox der folgende Befehl ausgeführt werden:\
|
|
|
`npm run prodPi`\
|
|
|
Dadurch wird der Node-Server ausgeführt und die AmbientBox kann nun unter http://localhost:3000 erreicht werden. Wenn der Entwicklungsmodus gestartet werden soll, wird folgender Befehl benötigt:\
|
|
|
`npm run dev`\
|
|
|
Danach ist das Frontend der AmbientBox unter http://localhost:8080/ zu erreichen.\
|
|
|
Als nächstes wollen Sie den Treiber für die LED-Leiste installieren. Hierfür gehen Sie in den home-Ordner zurück, indem Sie eingeben:\
|
|
|
`cd`\
|
|
|
Dann laden Sie sich das Paket runter. Geben Sie dafür folgendes ein:\
|
|
|
`sudo pip install rpi_ws281x`\
|
... | ... | @@ -396,8 +449,8 @@ Bei diesem Paket gibt es ein Problem, weshalb der Audio-Treiber des Pis deaktivi |
|
|
`sudo nano /etc/modprobe.d/snd-blacklist.conf`\
|
|
|
Es öffnet sich ein leeres Fenster in der Konsole. Tippen Sie hier folgendes ein:\
|
|
|
`blacklist snd_bcm2835`\
|
|
|
Danach drücken Sie STRG+X um das Programm zu schließen. Bestätigen Sie, dass Sie speichern wollen wenn, Sie darum gebeten werden, indem Sie den Buchstaben j und dann Enter eingeben. Wenn das System Sie um einen Namen fragt, geben Sie einfach Enter ein um den Standardnamen zu akzeptieren. Somit sollten die LEDs in der Lage sein, zu funktionieren.\
|
|
|
Als nächstes wollen Sie die autostart-Datei editieren, damit das ambientBox Frontend automatisch beim Start des Systems geladen wird. Geben Sie folgendes ein:\
|
|
|
Danach drücken Sie STRG+X, um das Programm zu schließen. Bestätigen Sie, dass Sie speichern wollen wenn Sie darum gebeten werden, indem Sie den Buchstaben j und dann Enter eingeben. Wenn das System Sie um einen Namen fragt, geben Sie einfach Enter ein, um den Standardnamen zu akzeptieren. Somit sollten die LEDs in der Lage sein, zu funktionieren.\
|
|
|
Als nächstes wollen Sie die autostart-Datei editieren, damit das AmbientBox Frontend automatisch beim Start des Systems geladen wird. Geben Sie folgendes ein:\
|
|
|
`sudo nano /etc/xdg/lxsession/LXDE-pi/autostart`\
|
|
|
Die Datei wird in der Konsole angezeigt. Es sollten bereits ein paar Zeilen hier stehen, diese können Sie einfach uneditiert lassen. Tippen Sie unter den bestehenden Zeilen folgendes ein:\
|
|
|
```
|
... | ... | @@ -414,10 +467,10 @@ Sobald das Klonen fertig ist, wechseln Sie in den Ordner mittels:\ |
|
|
`cd LCD-show/`\
|
|
|
Jetzt geben Sie ein:\
|
|
|
`sudo ./LCD35-show `\
|
|
|
Der Pi sollte sich automatisch abschalten und neustarten. Wenn er neugestartet ist, sollten Sie ein Bild nur auf dem mit dem Pi verbunden Touchscreen sehen und nicht mehr auf den mit HDMI verbundenen Monitor. Es muss noch die Auflösung angepasst werden. Öffnen Sie erneut eine Konsole mittels STRG+ALT+T und geben Sie ein:\
|
|
|
Der Pi sollte sich automatisch abschalten und erneut starten. Wenn er neugestartet ist, sollten Sie ein Bild nur auf dem mit dem Pi verbunden Touchscreen sehen und nicht mehr auf den mit HDMI verbundenen Monitor. Es muss noch die Auflösung angepasst werden. Öffnen Sie erneut eine Konsole mittels STRG+ALT+T und geben Sie ein:\
|
|
|
`sudo raspi-config `\
|
|
|
Es öffnet sich ein blau-graues Fenster in der Konsole. Benutzen Sie die Pfeiltasten der Tastatur um runter zu „Advanced Options“ zu navigieren und bestätigen Sie mit Enter. Jetzt navigieren Sie erneut runter zu „Resolution“ und bestätigen erneut mit Enter. Wählen Sie das Feld, bei dem „720x480“ steht aus und bestätigen Sie. Wenn ein Textfeld erscheint das Sie fragt, ob Sie das System neustarten möchten, wählen Sie „yes“ aus.\
|
|
|
Glückwunsch! Wenn alles richtig gelaufen ist, sollten Sie jetzt die AmbientBox wie geplant verwenden können.
|
|
|
Es öffnet sich ein blau-graues Fenster in der Konsole. Benutzen Sie die Pfeiltasten der Tastatur um runter zu „Advanced Options“ zu navigieren und bestätigen Sie mit Enter. Jetzt navigieren Sie erneut runter zu „Resolution“ und bestätigen erneut mit Enter. Wählen Sie das Feld, bei dem „720x480“ steht aus und bestätigen Sie. Wenn ein Textfeld erscheint, das Sie fragt, ob Sie das System neustarten möchten, wählen Sie „yes“ aus.\
|
|
|
Damit ist die Installation des Systems beendet und es kann nun genutzt werden.
|
|
|
|
|
|
## Bedienung
|
|
|
|
... | ... | @@ -426,7 +479,7 @@ Wenn die AmbientBox per Hardwareschalter angeschaltet wird, startet der Node.js |
|
|
\
|
|
|
Abbildung XX: AmbientBox ohne verbundenen Nutzer
|
|
|
|
|
|
Sollte die AmbientBox nicht bereits mit einem WLAN-Netzwerk verbunden sein, muss durch Kicken auf das Zahnrädchen im linken oberen Eck auf die Einstellungsseite gewechselt werden und anschließend unter „Select a Wifi network“ ein verfügbares Netzwerk ausgewählt werden.
|
|
|
Sollte die AmbientBox nicht bereits mit einem WLAN-Netzwerk verbunden sein, muss durch Kicken auf das Zahnrädchen im rechten oberen Eck auf die Einstellungsseite gewechselt werden und anschließend unter „Select a Wifi network“ ein verfügbares Netzwerk ausgewählt werden.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: WLAN-Netzwerk auswählen
|
... | ... | @@ -436,48 +489,54 @@ Im sich öffnenden Dialogfenster kann mit der eingebundenen digitalen Tastatur e |
|
|
\
|
|
|
Abbildung XX: WLAN-Passwort eingeben und bestätigen
|
|
|
|
|
|
Hierzu kann im Accelerator unter der AmbientBox Schaltfläche im rechten unteren Eck geschaut werden, welche AmbientBox online ist und zur Verfügung steht. Um eine Verfügbare Box mit einem Raum zu verbinden, muss auf das Auge neben der gewünschten Box geklickt werden.
|
|
|
Hierzu kann im Accelerator unter der AmbientBox Schaltfläche im rechten unteren Eck geschaut werden, welche AmbientBox online ist und zur Verfügung steht. Um eine verfügbare Box mit einem Raum zu verbinden, muss auf das Auge neben der gewünschten Box geklickt werden.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Verfügbare AmbientBox hinzufügen
|
|
|
|
|
|
Hieraufhin wird die AmbientBox dem Raum hinzugefügt und erscheint in der linken Leiste des Accelerators unterhalb der verbundenen Nutzer. Um die AmbientBox nun mit einem Nutzer zu verbinden, wird auf das hinzufügen Symbol geklickt und anschließend der gewünschte Nutzer ausgewählt.
|
|
|
Hieraufhin wird die AmbientBox dem Raum hinzugefügt und erscheint in der linken Leiste des Accelerators unterhalb der verbundenen NutzerInnen. Um die AmbientBox nun mit sich selbst zu verbinden, wird auf das Nutzersymbol geklickt.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: AmbientBox mit Nutzer verbinden
|
|
|
Abbildung XX: AmbientBox mit einem/einer NutzerIn verbinden
|
|
|
|
|
|
Nachdem der Nutzer Seitens des Accelerators mit der AmbientBox verbunden worden ist, muss diese Verbindung von der AmbientBox bestätigt werden. Hierzu muss im erscheinenden Dialogfenster auf Connect geklickt werden.
|
|
|
Nachdem der/die NutzerIn seitens des Accelerators mit der AmbientBox verbunden worden ist, muss diese Verbindung von der AmbientBox bestätigt werden. Hierzu muss im erscheinenden Dialogfenster auf Connect geklickt werden.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Nutzerverbindung bestätigen
|
|
|
|
|
|
Wenn die Verbindung durch das Dialogfenster bestätigt wurde, erscheinen Nutzerbild und Nutzername des Verbundenen Nutzers in der Home-Seite der AmbientBox, woraufhin die AmbientBox zur aktiven Nutzung und Interaktion bereitsteht.
|
|
|
Wenn die Verbindung durch das Dialogfenster bestätigt wurde, erscheinen Nutzerbild und Nutzername des/der verbundenen NutzerIn in der Home-Seite der AmbientBox, woraufhin die AmbientBox zur aktiven Nutzung und Interaktion bereitsteht.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: AmbientBox mit verbundenem Nutzer
|
|
|
Abbildung XX: AmbientBox mit verbundenem/verbundener NutzerIn
|
|
|
|
|
|
Fortan werden sämtliche Nutzerstatus sowie Video- und Audiostreams des verbundenen Nutzers von der Ambientbox wiedergegeben. Die Nutzerstatus werden mithilfe der auf der Home-Seite erscheinenden Icons und die entsprechend leuchtenden LEDs angezeigt, der Videostream wird nach Aktivierung bei Bedarf anstelle des Nutzerbildes übertagen, und der Audiostream wird über den Lautsprecher der AmbientBox ausgegeben.
|
|
|
Ab diesem Schritt werden sämtliche Nutzerstatus sowie Video- und Audiostreams des/der verbundenen NutzerIn von der AmbientBox wiedergegeben. Die Nutzerstatus werden mithilfe der auf der Home-Seite erscheinenden Icons und die entsprechend leuchtenden LEDs angezeigt, der Videostream wird nach Aktivierung bei Bedarf anstelle des Nutzerbildes übertragen, und der Audiostream wird über den Lautsprecher der AmbientBox ausgegeben.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: AmbientBox mit aktivierten Nutzerstatus
|
|
|
|
|
|
Um die Helligkeit der LEDs und die Lautstärke des Lautsprechers anzupassen, oder die Kameraübertragung bzw. die des Mikrofons an- und auszuschalten, muss auf die Einstellungsseite gewechselt werden. Hier sind durch Beschriftung und Icon gekennzeichnete Schalter und Regler, um die gewünschten Konfigurationen zu treffen.
|
|
|
Um die Helligkeit der LEDs und die Lautstärke des Lautsprechers anzupassen, oder die Kameraübertragung bzw. die des Mikrofons an- und auszuschalten, muss auf die Einstellungsseite gewechselt werden. Hier befinden sich durch Beschriftung und Icon gekennzeichnete Schalter und Regler, um die gewünschten Konfigurationen zu treffen.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Einstellungsseite der AmbientBox
|
|
|
|
|
|
Sollten die lokalen Nutzer den Wunsch haben den remote verbundenen Nutzer von der Ambientbox zu trennen, können sie das erreichen, indem sie auf die Exit Schaltfläche klicken und das erscheinende Dialogfenster bestätigen. Hieraufhin steht die AmbientBox im Raum des Accelerators frei für neue Verbindungen. Dasselbe kann der remote verbundene Nutzer durch ein klicken auf das „X“ in der AmbientBox-Verbindung im Accelerator erreichen. Soll die Box wieder für andere Räume zur Verfügung gestellt werden, muss erneut auf das „X“ in der AmbientBox-Komponente im Accelerator geklickt werden.\
|
|
|
Sollten die lokalen NutzerInnen den Wunsch haben den/die remote-zugeschaltete NutzerIn von der AmbientBox zu trennen, können sie das erreichen, indem sie auf die Exit Schaltfläche klicken und das erscheinende Dialogfenster bestätigen. Daraufhin steht die AmbientBox im Raum des Accelerators frei für neue Verbindungen. Dasselbe kann der/die remote-zugeschaltete NutzerIn durch ein Klicken auf das „X“ in der AmbientBox-Verbindung im Accelerator erreichen. Soll die Box wieder für andere Räume zur Verfügung gestellt werden, muss erneut auf das „X“ in der AmbientBox-Komponente im Accelerator geklickt werden.\
|
|
|
Soll die AmbientBox heruntergefahren werden, muss auf das Ausschalten Icon auf der Einstellungsseite geklickt und in dem erscheinenden Dialogfenster bestätigt werden. Nach etwa 10 Sekunden sollte die Box heruntergefahren sein und die Stromversorgung kann per Hardwareschalter abgeschaltet werden.
|
|
|
|
|
|
\
|
|
|
Abbildung XX: Verbindung zum remote verbundenen Nutzer trennen
|
|
|
Abbildung XX: Verbindung zu dem/der remote-zugeschalteten NutzerIn trennen
|
|
|
|
|
|
\
|
|
|
Abbildung XX: AmbientBox herunterfahren
|
|
|
|
|
|
## Zugänge
|
|
|
|
|
|
Der mit der AmbientBox kompatible Accelerator ist auf der nachfolgenden Seite erreichbar:
|
|
|
https://accelerator.reutlingen-university.de/ambientbox/
|
|
|
Um Zugang zu dem Server zu erhalten, muss eine Email an Raphael Fritsch (Raphael.Fritsch@reutlingen-university.de) geschrieben werden. Auf dem Server kann dann im home-Verzeichnis als root die `updateAmbientBox.sh` ausgeführt werden, um den Accelerator zu aktualisieren.
|
|
|
|
|
|
# Lizenzen der verwendeten Software
|
|
|
|
|
|
Dank der Verwendung von Vue.js konnten bei der AmbientBox sowohl im Backend als auch im Frontend Packages installiert werden. Folgend sind die Lizenzen der verwendeten Packages tabellarisch dargestellt.\
|
|
|
Aufgrund der Verwendung von Vue.js konnten bei der AmbientBox sowohl im Backend als auch im Frontend Node Module installiert werden. Folgend sind die Lizenzen der verwendeten Packages tabellarisch dargestellt.\
|
|
|
Mit dem Befehl _npx license-checker --summary_ wurde die Anzahl der Packages mit den jeweiligen Lizenzen aufgelistet. Mit dem Befehl _npx license-compatibility-checker_ konnten die Packages identifiziert werden, die potenziell problematisch bezüglich der Lizenz sein könnten. In den untenstehenden Tabellen sind die Packages aufgelistet, die mit einer Warnung versehen waren. Bei genauerer Recherche wurde festgestellt, dass sämtliche Packages mit unbedenklichen Lizenzen gekennzeichnet sind.
|
|
|
|
|
|
**Backend**\
|
... | ... | @@ -496,7 +555,7 @@ _npx license-checker --summary_ |
|
|
| [MIT](https://opensource.org/licenses/MIT) OR [CC-1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.de) | 1 |
|
|
|
|
|
|
_npx license-compatibility-checker_ - Packages mit Lizenzwarnung
|
|
|
| Pakcage | Warnmeldung | Lizenz |
|
|
|
| Package | Warnmeldung | Lizenz |
|
|
|
| ------ | ------ | ------ |
|
|
|
| [component-bind@1.0.0](https://www.npmjs.com/package/component-bind) | No license (Unlicensed) - possibly incompatible with MIT (Permissive) | [MIT](https://opensource.org/licenses/MIT) |
|
|
|
| [component-inherit@0.0.3](https://www.npmjs.com/package/component-inherit) | No license (Unlicensed) - possibly incompatible with MIT (Permissive) | [MIT](https://opensource.org/licenses/MIT) |
|
... | ... | @@ -533,7 +592,7 @@ _npx license-checker --summary_ |
|
|
| [MPL](https://www.mozilla.org/en-US/MPL/) | 1 |
|
|
|
|
|
|
_npx license-compatibility-checker_ - Packages mit Lizenzwarnung
|
|
|
| Pakcage | Warnmeldung | Lizenz |
|
|
|
| Package | Warnmeldung | Lizenz |
|
|
|
| ------ | ------ | ------ |
|
|
|
| [atob@2.1.2](https://www.npmjs.com/package/atob)| (MIT OR Apache-2.0) (Unknown) - possibly incompatible with No license (Unlicensed) | [MIT](https://opensource.org/licenses/MIT) and [Apache-2.0](https://opensource.org/licenses/Apache-2.0) |
|
|
|
| [caniuse-lite@1.0.30001300](https://www.npmjs.com/package/caniuse-lite) | CC-BY-4.0 (Unknown) - possibly incompatible with No license (Unlicensed) | [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/deed.de) |
|
... | ... | @@ -556,18 +615,19 @@ _npx license-compatibility-checker_ - Packages mit Lizenzwarnung |
|
|
|
|
|
# Fazit und Ausblick
|
|
|
|
|
|
Das Ziel, das in der Einführung erklärt wurde, konnte im Endeffekt erreicht werden. Es wurde ein Hardware-Prototyp erstellt, mit dem Gesprächsteilnehmer, die nicht in Person an einem Meeting teilnehmen können, ihren Status und ihr Verhalten mittels der AmbientBox an die anderen Gesprächsteilnehmer übermitteln können. Entsprechend wurde auch der Code des Accelerators so editiert, dass AmbientBoxes leicht zu sehen sind und zu Nutzern problemlos hinzugefügt werden können.\
|
|
|
Das Ziel der AmbientBox, einen/eine remote-zugeschaltete NutzerIn in einem lokalen Meeting zu repräsentieren, konnte erreicht werden. Es wurde ein Hardware-Prototyp erstellt, mit dem GesprächsteilnehmerInnen, die nicht in Person an einem Meeting teilnehmen können, ihren Status und ihr Verhalten mittels der AmbientBox an die anderen GesprächsteilnehmerInnen übermitteln können. Entsprechend wurde auch der Code des Accelerators so angepasst, dass AmbientBoxes leicht zu sehen sind und zu NutzerInnen problemlos hinzugefügt werden können.\
|
|
|
Der AmbientBox Hardware-Prototyp erlaubt den nutzenden Personen:
|
|
|
|
|
|
- den Status der remote zugeschalteten Person zu erfahren.
|
|
|
- die remote zugeschaltete Person zu hören.
|
|
|
- die remote zugeschaltete Person zu sehen.
|
|
|
- mit der remote zugeschalteten Person zu reden.
|
|
|
- sich für die remote zugeschaltete Person sichtbar zu machen.
|
|
|
- die Lautstärke des Tons der remote zugeschalteten Person zu verändern.
|
|
|
- den Status der remote-zugeschalteten Person zu erfahren.
|
|
|
- die remote-zugeschaltete Person zu hören.
|
|
|
- die remote-zugeschaltete Person zu sehen.
|
|
|
- mit der remote-zugeschalteten Person zu reden.
|
|
|
- sich für die-remote zugeschaltete Person sichtbar zu machen.
|
|
|
- die Lautstärke des Tons der remote-zugeschalteten Person zu verändern.
|
|
|
- die Helligkeit der Status-LEDs zu verändern.
|
|
|
- die AmbientBox direkt vom Frontend aus mit einem WLAN-Netzwerk in der Umgebung zu verbinden.
|
|
|
- eine Tastatur zur einfacheren Bedienung anzuschließen.
|
|
|
- die AmbientBox kabellos dank der eingebauten Powerbank zu betreiben.
|
|
|
|
|
|
Dennoch hat der aktuelle Hardware-Prototyp mehrere Schwächen. Zum einen ist der Bildschirm sehr klein. Dazu kommt auch noch, dass er eine sehr niedrige Wiederholrate hat, was zu einem sehr ruckeligen Bild führt. Die Blickwinkel des Bildschirms sind auch problematisch: schon bei Betrachtung des Bildschirms in einem geringen Winkel verfärben sich die Farben auf dem Bildschirm stark. Eine weitere Schwäche ist der Lautsprecher. Dieser ist sehr leise, selbst bei maximaler Lautstärke. Der aktuelle Hardware-Prototyp besteht aus größtenteils Pappe. Das heißt, dass der Prototyp zwar stabil ist, aber relativ einfach aus Versehen kaputt gemacht werden könnte und sich nicht sehr hochwertig anfühlt. Optimalerweise sollte ein neues Gehäuse modelliert und mittels eines 3D-Druckers gedruckt werden. Eine weitere Optimierung wäre das automatische Herunterfahren bei Betätigen des Stromschalters anstelle eines harten Shutdowns. Um zu vermeiden, dass der Pi beim Herunterfahren beschädigt wird, wurde ein Knopf zum Herunterfahren in das Frontend eingebunden, es wäre aber intuitiver wenn sich das System automatisch sicher abschalten würde wenn man den Strom wegnimmt. |
|
|
Dennoch hat der aktuelle Hardware-Prototyp mehrere Schwächen. Zum einen ist der Bildschirm sehr klein. Dazu kommt auch noch, dass er eine sehr niedrige Wiederholrate hat, was zu einem sehr ruckeligen Bild führt. Die Blickwinkel des Bildschirms sind auch problematisch: schon bei Betrachtung des Bildschirms in einem geringen Winkel verfärben sich die Farben auf dem Bildschirm stark. Eine weitere Schwäche ist der Lautsprecher. Dieser ist sehr leise, selbst bei maximaler Lautstärke. Der aktuelle Hardware-Prototyp besteht aus größtenteils Pappe. Das heißt, dass der Prototyp zwar stabil ist, aber relativ einfach aus Versehen kaputt gemacht werden könnte und sich nicht sehr hochwertig anfühlt. Optimalerweise sollte ein neues Gehäuse modelliert und mittels eines 3D-Druckers gedruckt werden. Eine weitere Optimierung wäre das automatische Herunterfahren bei Betätigen des Stromschalters anstelle eines harten Shutdowns. Um zu vermeiden, dass der Pi beim Herunterfahren beschädigt wird, wurde ein Knopf zum Herunterfahren in das Frontend eingebunden, es wäre aber intuitiver, wenn sich das System automatisch sicher abschalten würde, wenn man den Strom wegnimmt.\
|
|
|
Für zukünftige Versionen der AmbientBox bietet sich ebenfalls eine Weiterentwicklung der Software an. So können unterschiedliche Features, wie die Einbindung des Chats, eine Unterstützung von mehreren Nutzern pro AmbientBox oder mehreren AmbientBoxen pro Nutzer oder weitere Interaktionen, welche der Accelerator bietet, eingebunden werden. |