Wie bereits in der Projektbeschreibung erwähnt, war es unser Wunsch einen Chat-Bot als Zusatzfeature einzubinden. Dieser sollte zunächst zur Steuerung von SmartHome-Geräten der Firma AVM genutzt werden.
Warum gerade hierfür?
Einige FRITZ!Box-Router bietet bereits eine verhältnismäßig umfangreiche API zur Steuerung von intelligenten Steckdosen des selben Herstellers. Somit wäre es ein einfaches gewesen einen weiteren IoT-Aspekt in das Projekt zu integrieren. Die Einbindung weiterer Schnittstellen hätte bei Erfolg zusätzlich Erfolgen können.
Die Schwierigkeit bestand nun darin einen Bot wahlweise selbst zu entwickeln oder die bereits vorhandenen Lösungen zu sondieren und gegebenenfalls diese anzupassen. Die Eigenentwicklung war für uns von Beginn an kein Thema, da dies den Rahmen komplett sprengen würde. Also versuchten wir uns an vorhandenen Lösungen.
Hier gibt es einige, jedoch sind nicht alle kompatibel mit dem XMPP-Protokoll. Es blieben also nur noch einige wenige, von denen wiederum ein paar aus verschiedensten Gründen weg fielen.
Von den Verbliebenen stellte sich nun die Frage möchten wir einen Bot, welcher den Sinn aus dem Kontext erkennt oder reicht uns ein einfacher Befehlsbot im Stile von Linuxkommandos.
Die Entscheidung fiel recht schnell auf einen einfachen Befehlsbot, da es sich sonst um eine Art KI handeln würde, welche zunächst geschult werden müsste. Die letzte Entscheidung die getroffen werden musste bezog sich auf das Dasein des Bots. Wollten wir einen im Server integrierten Bot oder reicht uns ein Client der am Server angemeldet ist. Wir entschieden uns für letzteres, damit die Konfiguration des Servers nicht verkompliziert und die Arbeit am Bot erleichtert werden würde.
Die auf dieser Grundlagen übrigen Bots wurden nun versucht zu implementieren. Es gab verschiedenste Ansätze der erste Bot, welchen wir testeten war ein Node.js-Bot die Konfiguration der gewünschten Befehle und der API-Aufruf der FRITZ!Box waren schnell geschehen, jedoch lief der Bot nicht an. Wie es schien gab es in den benötigten npm-Paketen einen Fehler, welche den Verbindungsversuch störte.
Die nächsten paar Botvarianten waren ebenso Misserfolge, da diese nachträglich Widersprüche zu den getroffen Entscheidungen aufwiesen. Den letzten Bot welchen wir testeten basierte auf der Sprache Lua. Es gab auch eine passende Konfigurationshilfe, da lediglich die gewünschten Befehle an der passenden Stelle hinzugefügt werden mussten. Allerdings war nicht ersichtlich an welcher Stelle der auszuführende Code dann eingesetzt werden musste.
Abschließen ist zu sagen, dass es uns sicherlich möglich gewesen wäre, mit mehr zeitlichem Aufwand wahlweise einen passenderen Bot zu finden oder die bereits erwähnten Alternativen genauer zu untersuchen und zum laufen zu bringen.