MVP
Unser Minimal Viable Product stellt die Emulation einer Würfelseite des Fidget Cubes dar, welche über einen Button verfügt. Dieser Button soll über WLAN mit dem Internet verbunden werden, um mithilfe des Services IFTTT die Anwesenheit eines Studenten in einem Google Drive Sheet festzuhalten.
Es besteht aus folgenden Hardware-Komponenten:
- NodeMCU mit USB-Micro-Kabel
- Jumper Kabel
- Button-Modul mit Pull-Down Widerstand
Technische Details
Das Microcontrollerboard NodeMCU, welches mit dem WLAN-Chip ESP8266 ausgestattet ist, lässt sich leicht in die Arduino-Umgebung einbinden, um die Programmierung durchzuführen. Dazu müssen folgende Schritte erfolgen:
- öffnen der Arduino IDE
- Unter Datei -> Voreinstellungen -> Boardverwalter -> in "zusätzliche Boardverwalter-URLs" folgenden Eintrag hinzufügen: http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Unter Werkzeuge -> Board „…“ -> Boardverwalter -> ESP8266 suchen und installieren
- Unter Werkzeuge -> Board „ESP8266 Boards“ -> „NodeMCU 0.9“ auswählen
- ESP8266-Bibliothek von Github downloaden (https://github.com/esp8266/Arduino) und in ".../Dokumente/Arduino/libraries" einfügen
- IFTTT-Bibliothek von Github downloaden (https://github.com/Siytek/AnotherIFTTTWebhook) und das Header-File in das Projektverzeichnis kopieren
Mithilfe der IFTTT-Bibliothek kann mit Angabe des IFTTT-Maker-Keys, den IFTTT-Eventnamens und den zu übermittelnden Nachrichten eine POST-Request an IFTTT übermittelt werden:
Erweiterung
Das MVP wurde im Verlaufe des Hackathons um die folgenden Funktionalitäten erweitert: Um verschiedene Modi zu ermöglichen wurden zwei weitere Buttonmodule an das Board angeschlossen. Ein Button dient zum Umschalten der Modi, der andere dient, je nach Modus, zum Senden eines Anwesenheitsstatus (Anwesend, muss die Vorlesung verlassen) oder zur Durchführung einer Abstimmung (Ja, nein). Zusätzlich gibt es einen Status, der eine Alexa-Benachrichtigung für die Meldung der Fertigstellung der Abstimmung erstellt. Im Initialmodus sind alle Funktionalitäten deaktiviert und das WLAN ausgeschaltet, um die ursprüngliche Fidget-Cube-Funktionalität zu behalten.
Um die Alexa-Benachrichtigungen zu ermöglichen muss ein Alexa-Skill aktiviert werden. Ursprünglich hatten wir dafür "Notify Me" vorgesehen. Dieser Skill kann über eine gesicherte Schnittstellen, die eine Authentifizierung erfordert, mithilfe eines API-Keys getriggert werden. Dafür haben wir versucht, die WiFiClientSecure-Bibliothek zu verwenden, die einen Fingerprint der HTTPS-Verbindung benötigt (Weg hier beschrieben: http://esp32-server.de/wificlientsecure/). Da die Verbindung zu dem Dienst fehlschlug, haben wir Alternativen recherchiert.
Dabei sind wir auf den Skill "Text Nachricht" gestoßen. Die Benachrichtung über den Skill kann entweder über ein Webinterface oder über ein POST-Request getriggert werden. Der Skill wird über einen Webrequest in IFTTT angetriggert.