{"id":474,"date":"2017-07-07T13:05:22","date_gmt":"2017-07-07T11:05:22","guid":{"rendered":"https:\/\/www.pingu-mobil.de\/iot\/?p=474"},"modified":"2021-05-14T10:07:48","modified_gmt":"2021-05-14T08:07:48","slug":"sdim-chat-bot-versuch","status":"publish","type":"post","link":"http:\/\/www.iot-embedded.de\/iot-2017\/sdim\/sdim-chat-bot-versuch\/","title":{"rendered":"SDIM: Chat-Bot Versuch"},"content":{"rendered":"<p>Wie bereits in der Projektbeschreibung erw\u00e4hnt, war es unser Wunsch einen Chat-Bot als Zusatzfeature einzubinden. Dieser sollte zun\u00e4chst zur Steuerung von SmartHome-Ger\u00e4ten der Firma\u00a0AVM\u00a0genutzt werden.<\/p>\n<p>Warum gerade hierf\u00fcr?<\/p>\n<p>Einige FRITZ!Box-Router bietet bereits eine verh\u00e4ltnism\u00e4\u00dfig umfangreiche API zur Steuerung von intelligenten Steckdosen des selben Herstellers. Somit w\u00e4re es ein einfaches gewesen einen weiteren IoT-Aspekt in das Projekt zu integrieren. Die Einbindung weiterer Schnittstellen h\u00e4tte bei Erfolg zus\u00e4tzlich Erfolgen k\u00f6nnen.<\/p>\n<p>Die Schwierigkeit bestand nun darin einen Bot wahlweise selbst zu entwickeln oder die bereits vorhandenen L\u00f6sungen zu sondieren und gegebenenfalls diese anzupassen. Die Eigenentwicklung war f\u00fcr uns von Beginn an kein Thema, da dies den Rahmen komplett sprengen w\u00fcrde. Also versuchten wir uns an vorhandenen L\u00f6sungen.<\/p>\n<p>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\u00fcnden\u00a0weg fielen.<\/p>\n<p>Von den Verbliebenen stellte sich nun die Frage m\u00f6chten wir einen Bot, welcher den Sinn aus dem Kontext erkennt oder reicht uns ein einfacher Befehlsbot im Stile von Linuxkommandos.<\/p>\n<p>Die Entscheidung fiel recht schnell auf einen einfachen Befehlsbot, da es sich sonst um eine Art KI handeln w\u00fcrde, welche zun\u00e4chst geschult werden m\u00fcsste. 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\u00fcr letzteres, damit die Konfiguration des Servers nicht verkompliziert und die Arbeit am Bot erleichtert werden w\u00fcrde.<\/p>\n<p>Die auf dieser Grundlagen \u00fcbrigen Bots wurden nun versucht zu implementieren. Es gab verschiedenste Ans\u00e4tze der erste Bot, welchen wir testeten war ein Node.js-Bot die Konfiguration der gew\u00fcnschten 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\u00f6tigten npm-Paketen einen Fehler, welche den Verbindungsversuch st\u00f6rte.<\/p>\n<p>Die n\u00e4chsten paar Botvarianten waren ebenso Misserfolge, da diese nachtr\u00e4glich Widerspr\u00fcche 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\u00fcnschten Befehle an der passenden Stelle hinzugef\u00fcgt werden mussten. Allerdings war nicht ersichtlich an welcher Stelle der auszuf\u00fchrende Code dann eingesetzt werden musste.<\/p>\n<p>Abschlie\u00dfen ist zu sagen, dass es uns sicherlich m\u00f6glich gewesen w\u00e4re, mit mehr zeitlichem Aufwand wahlweise einen passenderen Bot zu finden oder die bereits erw\u00e4hnten Alternativen genauer zu untersuchen und zum laufen zu bringen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie bereits in der Projektbeschreibung erw\u00e4hnt, war es unser Wunsch einen Chat-Bot als Zusatzfeature einzubinden. Dieser sollte zun\u00e4chst zur Steuerung von SmartHome-Ger\u00e4ten der Firma\u00a0AVM\u00a0genutzt werden. Warum gerade hierf\u00fcr? Einige FRITZ!Box-Router bietet bereits eine verh\u00e4ltnism\u00e4\u00dfig umfangreiche API zur Steuerung von intelligenten<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/474"}],"collection":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/comments?post=474"}],"version-history":[{"count":1,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/474\/revisions"}],"predecessor-version":[{"id":556,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/posts\/474\/revisions\/556"}],"wp:attachment":[{"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/media?parent=474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/categories?post=474"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.iot-embedded.de\/iot-2017\/wp-json\/wp\/v2\/tags?post=474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}