In meinem Blog-Post möchte ich zeigen, wie man einfach seinen eigenen Telegram Bot erstellen kann. In meinem Beispiel kann man die Temperatur eines LORA Sensors über einen Telegram Bot abfragen. Am Ende gibt es noch ein Erklärvideo in dem alle wichtigen Schritte der Reihe nach gezeigt werden.
Projektidee
Der Sommer naht, die Badetemperaturen sind im Moment noch niedrig, werden aber von Tag zu Tag wärmer. Ich habe mir vorgenommen einen Temperatursensor zu programmieren, den ich an einem Bootssteg anbringen kann und jederzeit per Telegrambot die aktuelle Wassertemperatur abfragen kann. Zum Schluss möchte ich noch einen QR Code mit den Lesern dieses Blogposts teilen, mit dem man sich beim Telegram Bot anmelden und die Wassertemperatur selber abfragen kann.
Der Aufbau
Kosten
- RaspberryPi 4 1GB ca. 60 SFr.
- SD Karte 16 GB ca. 10 SFr.
- ein altes Handy-Ladegerät
- Dragino LSN50 LORA Sensor ca.60 SFr.
Dragino LSN50 v2-D20
Der Dragino LSN50 v2-D20 misst mit seinem zwei Meter langen Kabelfühler die Wassertemperatur, und wandelt diese in ein digitales Signal um. Diese Daten werden über das LORA Netzwerk an TheThingsNetwork(TTN) gesendet.
RaspberryPi 4 1GB
Auf meinem RaspberryPi habe ich das RaspberryPi OS installiert. Ausserdem habe ich ioBroker als Basis installiert. Eigentlich ist ioBroker eine Software für das Smarthome, weil es verschiedene intelligente Geräte vernetzen kann. Mit dieser Plattform können alle weiteren Module als „Adapter“ über einen App-Store installiert werden. Für meinen Aufbau habe ich folgende Adapter auf dem ioBroker installiert: NodeRed, MQTT Client/Broker, Telegram und JavaScript.
Software:
TheThingsNetworks
Das TTN ist ein Communitybasiertes, offenes Netzwerk welches die Kommunikation von LORA (IoT-Devices) über LPWAN (Low Power Wireless Area Network) verbindet. sobald neue Sensordaten im TTN eintreffen, werden diese weitergeleitet. In meinem Beispiel werden die Daten an NodeRed weitergeleitet.
NodeRed
NodeRed ist ein grafisches Programmierwerkzeug, das für die Programmierung mit visuellen Funktionsblöcken entwickelt wurde und die Integration verschiedener IoT-Geräte vereinfacht. In NodeRed werden die Temperatur und der Zeitstempel der empfangenen Nachricht aus dem empfangenen Signal extrahiert, und auf einen MQTT Broker geschrieben.
MQTT Broker
MQTT ist ein Protokoll, das speziell für die Kommunikation zwischen verschiedenen Geräten entwickelt wurde und ermöglicht das Zwischenspeichern von Messdaten. Durch das Zwischenspeichern der Messdaten können diese von verschiedenen Anwendungen und Diensten genutzt werden.
Telegram Adapter
Der Telegram Adapter wird mit einem Bot verbunden. Die Erstellung eines Bots ist in Telegram über den sogenannten „Botfather“ möglich. Man gibt dem Bot einen Namen und einen Benutzernamen, der auf BOT enden muss (Wie im Beispiel @HSLU_IOTBOT). Nach Abschluss der Konfiguration erhält man einen API Code. Dieser muss in den Telegram-Adapter eingelesen werden und der Bot kann mit dem Telegram Adapter kommunizieren.
JavaScript Adapter
Der JavaScript Adapter ist die Schnittstelle zwischen dem MQTT Broker und Telegram dar. Wenn ein Benutzer dem Bot das Schlüsselwort „Bootssteg“ an den Bot sendet, wird dies vom JavaScript Adapter bemerkt. Mit Blocky, einer grafischen Programmiersprache ähnlich einem Puzzle oder Klemmbausteinen wird dann abgefragt, welches Schlüsselwort gewünscht ist, die Daten werden dann beim MQTT Broker abgefragt. und dem entsprechenden Benutzer im Bot angezeigt.
… es funktioniert
Der Sensor sendet seine Daten über TTN an meine NodeRed Instanz, dort werden die Temperaturwerte aus dem Datenpaket extrahiert und auf dem MQTT Broker im RaspberryPi abgelegt. Wenn jemand dem Bot „Bootssteg“ sendet, ruft der JavaScript Adapter die letzten Temperaturwerte vom MQTT Broker ab, und sendet diese als Antwort an den Botuser.
Überzeuge dich selbst. Installiere Telegram und scanne den QR Code. Sobald der Link ausgeführt wird, wirst du in einem Telegram Chat mit dem HSLU_IoTBot verbunden. Wenn du auf der eingeblendeten Tastatur das entsprechende Stichwort „Bootssteg“ eingibst, erhältst du die entsprechende Antwort. Im Programm habe ich verschiedene Benutzer programmiert, so ist es möglich, dass bei verschiedenen Benutzern verschiedene Schlüsselwörter angezeigt werden
Video Rundgang
Im Video unten führe ich durch alle Instanzen auf und zeige im Programm was in welchem Block passiert.