-
Die Hardware
Das Raspbian Betriebssystem auf die SD Karte schreiben
Der "Headless" Betrieb
Die Verbindung zum RasPi mit putty
Die Konfiguration des Raspi
Webserver lighttpd
Ein ftp Server auf dem RasPi
RasPi als NAS (network attached storage)
Ein Webradio basteln
E-Mails mit dem RasPi versenden (GMX)
Den RasPi per Telegram Messenger steuern und Nachrichten versenden
Temperatur- und Luftfeuchtigkeitssensor DHT22
pi-hole Werbeblocker für das gesamte lokale Netzwerk
Wireless Access Point einrichten
VPN Verbindung zu einer FritzBox
Z-Shell
Den RasPi per Telegram Messenger steuern und Nachrichten versenden
Update 30.05.2020: getestet in Raspberry Pi OS (Version: May 2020)
Auf dieser Seite will ich darauf eingehen, wie man mit dem Raspberry Pi Telegram Nachrichten versenden kann und auch mittels Telegram Nachrichten den Raspberry Pi steuern kann.
Für alle, die die WhatsApp Alternative nicht kennen: https://telegram.org/
einen Bot mit Botfaher einrichten
als erstes verbinden wir uns mit dem Botfather, indem wir im Telegram unten einfach @botfather eingeben.
Der Botfather öffnet sich und zeigt die verfügbaren Kommandos an.
wir wollen einen neuen Bot erstellen, also /newbot
nun vergeben wir einen Namen für unseren Bot z.B. TestBoht
wir brauchen noch einen Usernamen, der auf “bot” endet, also TestBoht_bot
so, wir haben einen neuen Bot “geschaffen”, es wird ein Token angezeigt, mit dem wir auf den Bot zugreifen können.
Diesen Token notieren wir uns, den brauchen wir später wieder. Vom Format her schaut der so in der Art aus:
123456789:AaFWearrrit9nnbArajrMrELsln7tthnnS4
Im Bild ist das der geschwärzte Bereich:
So, der Bot existiert! Bevor wir weitermachen, müssen wir unbedingt den Bot starten. Das machen wir indem wir in der letzen Nachricht des Botfather hierhin drücken:
Ein neuer Chat geht auf, unten drücken wir auf “Start”
Zum Schluss müssen wir noch die Chat-ID ermitteln. Dies geht folgendermassen:
curl -X POST https://api.telegram.org/bot123456789:AaFWearrrit9nnbArajrMrELsln7tthnnS4/getUpdates
hier müsst ihr natürlich euren richtigen Token einsetzen.
Die Ausgabe schaut folgendermassen aus:
{"ok":true,"result":[{"update_id":xxxxxxxxx,
"message":{"message_id":3,"from":{"id":9876543231,"is_bot":false,"first_name":.........
=> in der zweiten Zeile steht hinter dem "id":
eure Chat-ID; in diesem Fall ist es die 9876543231
eine Nachricht an den Bot schicken
für das Versenden einer Nachricht an unseren Bot aus der Befehlszeile geben wir einfach diesen Befehl ein (wird als 2 Zeilen dargestellt, ist aber eine):
curl -X POST 'https://api.telegram.org/bot123456789:AaFWearrrit9nnbArajrMrELsln7tthnnS4/sendMessage?chat_id=9876543231&text="texty text"'
hier müsst ihr natürlich euren Token, eure Chat-ID und die gewünschte Nachricht eintragen.
Soweit so gut, denkbare Anwendungen wären hier:
- wenn ein GPIO überbrückt wird (z.B. Türkontakt), wird eine Telegram Nachricht verschickt.
- bei Neustart wird eine Telegram Nachricht verschickt. (via cronjob)
- usw.
Eine Installtion von Software auf dem Raspberry Pi ist für das Versenden von Nachrichten an den Bot nicht notwendig!!!!
mit einer Telegram Nachricht an den Bot den Raspberry Pi steuern
für die Steuerung vom Raspberry Pi ist die Software “telepot” notwendig, die wir zuerst installieren:
sudo apt-get install python-pip
sudo pip install telepot
danach erstellen wir ein python script mit folgendem Inhalt:
nano telegram.py
wir starten den Editor und fügen folgenden Inhalt ein:
#!/usr/bin/env python
#coding: utf8
import time, datetime
import telepot
from telepot.loop import MessageLoop
import os
import RPi.GPIO as GPIO
now = datetime.datetime.now()
def action(msg):
chat_id = msg['chat']['id']
command = msg['text']
print 'Received: %s' % command
if command == '/hi':
telegram_bot.sendMessage (chat_id, str("Hihoy, Schweinebacke :-)"))
elif command == '/time':
telegram_bot.sendMessage(chat_id, str(now.hour)+str(":")+str(now.minute))
elif command == '/logo':
telegram_bot.sendPhoto (chat_id, photo = "https://jekyllrb.com/img/logo-2x.png")
elif command == '/file':
telegram_bot.sendDocument(chat_id, document=open('/home/pi/telegram.py'))
elif command == '/audio':
telegram_bot.sendAudio(chat_id, audio=open('/home/pi/test.mp3'))
elif command == '/gpio':
GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.OUT)
for i in range(5):
GPIO.output(21, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(21, GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
elif command == '/restart':
print "RasPi Neustart"
os.system("sudo shutdown -r now")
sys.exit()
telegram_bot = telepot.Bot('123456789:AaFWearrrit9nnbArajrMrELsln7tthnnS4')
print (telegram_bot.getMe())
MessageLoop(telegram_bot, action).run_as_thread()
print 'Up and Running....'
# Keep the program running.
while 1:
time.sleep(10)
gestartet wird das python Script mit:
python telegram.py
Zur Erklärung:
- mit /hi wird die Nachricht mit einem vorgegebenen Text (hier: Hihoy, Schweinebacke :-)) beantwortet
- mit /time wird die Uhrzeit zurückgeschickt
- mit /logo wird ein Bild verschickt
- mit /file wird eine Datei verschickt
- mit /audio wird eine Audiodatei verschickt
- mit /gpio wird GPIO21 im 0,5 sec. Takt 5x ein und ausgeschaltet
- mit /restart wird das System neu gestartet
weiter unten in der Zeile telegram_bot = telepot.Bot muss vorher der Token vom Bot eingetragen werden!!!
In dem Script sind einige Möglichkeiten eingearbeitet, daraus lässt sich einiges basteln :-)
Dieses Script kann man z.B. über einen cronjob starten und so permanent laufen lassen…
Statt den fest definierten Dateien kann man auch mit Variablen arbeiten, und sich etwa aktuelle Bilder von einer Kamera schicken lassen.
- Previous
- Next