Die übergreifende Softwarearchitektur besteht aus einem React Frontend und einem Python Flask Backend. Die React App besteht aus mehreren Ansichten. In der _Session_ View können eigene, sogenannte ZRoom-Sessions erstellt werden, die wiederum automatisch eine verknüpfte Zoom-Session sowie eine darunterliegende _Reactions_ View für diese Session anlegt (beide eingebettet in eine Browser Ansicht). Die _Reactions_ View besteht aus Buttons, die entsprechende Reaktionen widerspiegeln (vergleichbar mit den Zoom Reaktionen, für die Zoom selber keine APIs zur Verfügung stellt). Über diese Buttons können die Remote-Studenten ihre Reaktionen auslösen und darüber die APIs im Backend zur Manipulation der Leuchten / Lautsprecher ansprechen.
Der Python Flask Web Server stellt die APIs zur Erstellung und Bearbeitung von ZRoom-Sessions und zum Manipulieren der Leuchten / Lautsprecher in den zur ZRoom-Session zugeordneten Vorlesungsräumen zur Verfügung.
Beim Senden einer Reaktion in einer ZRoom-Sesson im _Reactions_ View des Frontends wird die entsprechende Leuchte / Lautsprecher im Vorlesungsraum der zugeordneten ZRoom-Session über das Backend aktiviert.
- Web App Client mit Buttons für drei Reaktionen (Daumen hoch, Frage, Problem)
- Raspberry Pi mit eigenem Web Server verarbeitet Reaktionen vom Client
## MVP Softwareentwurf
- 3 Leuchten (Grün, Blau, Rot) verbunden mit Raspberry Pi über GPIO Pins
Unsere prototypische Implementierung als MVP besteht aus einer React App mit einer vereinfachten Darstellung der _Reactions_ View mit drei Buttons für je eine Reaktion (Daumen hoch, Frage, Problem). Der Flask Web Server stellt die API zum Manipulieren von drei Leuchten gemäß den drei Reaktionen zur Verfügung. Die Anwendungen werden auf einem Raspberry PI gehostet.
--> Einbettung der Leuchten durch Vernetzung der Pins mit der Anwendung auf dem Web Server --> Computer nicht nutzbar ohne Objekt und umgekehrt
Die drei Leuchten (Grün, Blau, Rot) sind über die GPIO-Pins mit dem Raspberry Pi verbunden und werden über die Python Flask App gesteuert. Die Leuchten werden durch die Vernetzung der Pins mit unserer Server Anwendung verknüpft bzw. darin eingebettet und fungieren damit als Smart Object. Der Computer (ZRoom Anwendung und Raspberry Pi) ist somit nicht mehr nutzbar ohne das Objekt (Leuchten) und umgekehrt.
- Je nach Reaktion vom Client aktiviert der Server die richtige Leuchte (Libraries zum Zugriff auf die GPIO pins)
Durch das Aktivieren des Leuchte durch Drücken der virtuellen Schaltfläche in der React App, um den Dozent zu informieren, ohne dass dieser die Online-Session aktiv überprüfen muss, schaffen wir eine reaktive Umgebung (Reactive Environment).
- Reactive Environment: Automation of processes using rules (Activate lamp object by pressing virtual button on web page to inform professor without the need of actively checking the zoom session/chat)