V1.7 20.2.2024
Voraussetzungen
- Ein PC mit Internetverbindung
- Ein Raspberry Pi mit Internetverbindung
- Ein Telegram-Account
- Ein Telegram-Bot (erstellt mit @BotFather)
- Ihr Bot-Token und die Chat-ID des Empfängers
- Am Raspberry ist Python 3 und das Modul requests installiert
leere oder fertige gelötete Platine, modifiziertes RAK18001, Raspi OS Image anfragen
Telegram Bot erstellen
Achten sie darauf den Original @BotFather zu verwenden! Am Besten in Telegram die Suchfunktion verwenden.

- Öffnen sie Telegram und suchen den @BotFather und starten sie den Chat mit @BotFather
- Erstellen sie einen neuen Bot indem sie /newbot in den Chat schreiben und den Anweisungen folgen
Name des neuen BotChatGruppe zB. RakNode
Name des neuen Bots zB. RakNode_bot (der Name muss mit _bot enden) - Nun wird der Bot erstellt und man erhält einen Token (eine Zahlenkolonne und eine Zeichenfolge die mit einem : getrennt sind)
- Speichern sie das Token ab! Es wird für die Kommunikation mit Telegram benötigt
Chat-ID ermitteln
- Schreiben sie ihrem neuen Bot eine Nachricht. Den Telegram Bot Link finden sie in der letzten Nachricht von @BotFather. Auf den Bot_link klicken und dann auf Start.
- Am Besten sie fügen den Bot in einen eigenen Ordner um ihn leichter zu finden. Dazu klicken sie mit der rechten Maustaste den Bot in der Chatliste an und fügen sie ihn zu einem Ordner hinzu, oder erstellen sie einen neuen Ordner.
- Schreiben sie jetzt eine Nachricht zB. „Test“
- Rufen in einem Browser die folgende URL auf (ersetzen sie BOT_TOKEN durch ihr Token):
https://api.telegram.org/botBOT_TOKEN/getUpdates
Das sollten sie als Antwort erhalten: antwort{„ok“:true,“result“:[]}
Dann bedeutet das: Ihr Bot ist vorhanden, aber er liest keine Nachrichten.
Gruppennachrichten erlauben
- Gehen sie zu @BotFather, gib /mybots ein, wählen sie ihren soeben erstellten Bot und dann „Bot Settings“ und „Group Privacy“.
- Klicke sie auf „Turn Off“
- Schicken sie dem Bot erneut eine Nachricht und rufen die URL noch einmal auf
- https://api.telegram.org/botBOT_TOKEN/getUpdates
Nun sollte folgende Antwort erscheinen:
{„ok“:true,“result“:[{„update_id“:…………,
„message“:{„message_id“:x,“from“:{„id“IHRE_CHAT_ID usw.]} - Suchen sie in der Antwort nach {„id“: IHRE_CHAT_ID}. Das ist ihre Chat-ID.
- Speichern sie die Chat ID ab! Sie wird für die Kommunikation mit Telegram benötigt.
Python-Skript erstellen am Raspberry
Über Putty in den Raspi einloggen (Anleitung siehe hier)
Im Terminalfenster eintippen
sudo apt install python3-requests -y
Nach abgeschlossener Installation folgendes eingeben
sudo apt install python3-netifaces -y
Wenn diese Installation abgeschlossen ist, diese Anweisung eintippen
sudo nano /home/pi/send_ip.py
Folgenden Text einfügen und BOT_TOKEN sowie IHRE_CHAT_ID ersetzen. Verwenden sie die Cursorsteuertasten um den Cursor an die entsprechende Stelle zu setzen.
import requests
import socket
import netifaces
# Telegram Bot Token und Chat-ID eintragen
BOT_TOKEN = "BOT_TOKEN"
CHAT_ID = "IHRE_CHAT_ID"
# Funktion zum Abrufen der WLAN-IP (wlan0)
def get_wlan_ip():
try:
iface = "wlan0"
return netifaces.ifaddresses(iface)[netifaces.AF_INET][0]['addr']
except (KeyError, ValueError):
return "Nicht verfügbar"# Lokale IP-Adresse ermitteln
local_ip = socket.gethostbyname(socket.gethostname())
# Öffentliche IP-Adresse abrufen
#try:
# public_ip = requests.get("https://api64.ipify.org?format=text").text
#except requests.RequestException:
# public_ip = "Nicht verfügbar"
#Hostname abrufen
hostname = socket.gethostname()
# WLAN-IP-Adresse abrufen
wlan_ip = get_wlan_ip()
# Nachricht formatieren
message = f"🔹 Raspberry Pi ({hostname}) ist online:\n📶 WLAN-IP: {wlan_ip}"
# Nachricht an Telegram senden
send_url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": message}
try:
response = requests.post(send_url, json=payload)
response.raise_for_status()
print("Nachricht gesendet!")
except requests.RequestException as e:
print(f"Fehler beim Senden der Nachricht: {e}")
Speichern sie mit Strg+X, dann Y, und bestätigen sie mit Enter.
Nun führen sie folgenden Befehl aus
sudo chmod +x /home/pi/send_ip.py
Danch diesen Befehl
chrontab -e
Wählen sie ggf. Option 1
Fügen Sie folgenden Text ein am Ende der Datei ein (mit Cursorsteuertasten nach unten scrollen).
Entfernen sie ggf. die vorhandene Zeile die mit @reboot beginnt und ersetzen sie diese durch:
Achtung: Voraussetzung ist die komplette Installation nach dieser Anleitung: Installation und Einrichtung
@reboot sleep 30 && /usr/bin/python3 /home/pi/send_ip.py && /bin/bash /home/pi/send_ip_udp.sh && /bin/bash /home/pi/shutdown_timer.sh
Speichern sie mit Strg+X, dann Y, und bestätigen sie mit Enter.
Nun wird nach dem erfolgreichen Neustart des Raspi die IP Adresse an Telegram geschickt, dann die IP Adresse via UDP an das Smartphone geschickt, dann der Timer gestartet der den Raspi nach 30 Minuten automatisch herunterfährt und abschaltet.
Nun rebooten und die Nachricht in Telegram empfangen 🙂
sudo reboot
Der Raspberry startet nun neu und sendet seine IP Adresse an den Telegram Bot. Prüfen sie in Telegram nach ob die IP Adresse übereinstimmt.
So sollte die empfangene Nachricht aussehen

Für Nodes die permanenten Internetzugang haben (zB. einen mobilen LTE Router mit Akku), können die Scripte ~/Desktop/scripte/ausschalten.py und /home/pi/shutdown_timer.sh (Anleitung hier) durch folgende Scripte ersetzt werden:
~/Desktop/scripte/ausschalten.py
BOT_TOKEN und DEINE_CHAT_ID ersetzen
import RPi.GPIO as GPIO
import os
import time
import requests
import socket
# Telegram Bot Token und Chat-ID eintragen
BOT_TOKEN = "BOT_TOKEN"
CHAT_ID = "DEINE_CHAT_ID"
# GPIO-Pin definieren
OUTPUT_PIN = 18
# GPIO-Modus festlegen und Pin konfigurieren
GPIO.setmode(GPIO.BCM)
GPIO.setup(OUTPUT_PIN, GPIO.OUT)
# Telegram-Nachricht vorbereiten
hostname = socket.gethostname()
message = f"🔹 Raspberry Pi ({hostname}) wird heruntergefahren\nGrund: vom User herunter gefahren\nRaspi Stromversorgung wird in 1 Minute abgeschaltet"
# Telegram-Nachricht senden
send_url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": message}
try:
response = requests.post(send_url, json=payload)
response.raise_for_status()
print("Telegram Nachricht gesendet!")
except requests.RequestException as e:
print(f"Fehler beim Senden der Nachricht: {e}")
# GPIO 18 auf HIGH setzen
GPIO.output(OUTPUT_PIN, GPIO.HIGH)
time.sleep(1)
print("GPIO-Pin switch off gesetzt")
print("Raspi wird herunter gefahren")
time.sleep(1)
# Raspberry Pi herunterfahren
os.system("sudo shutdown -h now")
# GPIO-Aufräumarbeiten
GPIO.cleanup()
/home/pi/shutdown_timer.sh
BOT_TOKEN und DEINE_CHAT_ID ersetzen
#!/bin/bash
# Verzögerung von 30 Minuten (1800 Sekunden)
sleep 1800 # Bash-Befehl!
# Python-Skript zum Senden der Telegram-Nachricht
python3 <<EOF
import requests
import socket
# Telegram Bot Token und Chat-ID eintragen
BOT_TOKEN = "BOT_TOKEN"
CHAT_ID = "DEINE_CHAT_ID"
# Hostname abrufen
hostname = socket.gethostname()
# Nachricht formatieren
message = f"🔹 Raspberry Pi ({hostname}) wird automatisch heruntergefahren\nGrund: Zeitüberschreitung 30 Minuten\nRaspi Stromversorgung wird nach 1 Minute ausgeschaltet"
# Telegram-Nachricht senden
send_url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": message}
try:
response = requests.post(send_url, json=payload)
response.raise_for_status()
print("Nachricht gesendet!")
except requests.RequestException as e:
print(f"Fehler beim Senden der Nachricht: {e}")
EOF
# GPIO 18 als Ausgang konfigurieren
raspi-gpio set 18 op
# GPIO 18 auf HIGH setzen, das triggert den Tiny13
# damit er nach 60 Sekunden den Raspi abschaltet
raspi-gpio set 18 dh
sleep 1
# GPIO 18 auf LOW setzen
raspi-gpio set 18 dl
sleep 1
# Raspberry Pi herunterfahren
sudo shutdown -h now
leere oder fertige gelötete Platine, modifiziertes RAK18001, Raspi OS Image anfragen