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 den im Microcontroller integrierten WLAN-Chip mit dem Internet verbunden werden, um mithilfe des Services IFTTT die Anwesenheit eines Studenten in einem Google Sheet festzuhalten, welches auf dem Google Drive des IFTTT-Users abgelegt wird. Dabei erfolgt die Kommunikation zu dem Dienst IFTTT mittels HTTP-Protokoll.
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). Die Ergebnisse werden in einem Google Sheet festgehalten und in dem Google Drive abgelegt.
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. Dabei gibt es verschiedene Versionen des Skills. Der erste Skill, den wir versucht haben zu verwenden, ist nur in dem englischen Skill-Store von Amazon Alexa vorhanden. Dieser lässt sich theoretisch über IFTTT triggern. Dies führte in unseren Versuchen allerdings zu folgendem Fehler:
Danach haben wir die Version aus dem deutschen Skill-Store ausprobiert. Diese kann nicht direkt über IFTTT getriggert werden. Er kann stattdessen über eine gesicherte Schnittstelle, die eine Authentifizierung erfordert, 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.