Version G1.0 2025-03-04
PROJEKTSTATUS aktiv – im Aufbau und Test
Um nun die Wartung eines RAK Nodes von einer zentralen Stelle über das Internet durchführen zu können, kann das Projekt: Kabellose Firmware-Updates für autarke RAK-Nodes!, um ein LTE Modem (Router) erweitert werden. Dies hat den Vorteil, dass mehrere Nodes ganz einfach zentral gewartet werden können. Dazu ist kein Handy Vertrag mit einem Netzbetreiber erforderlich, es reicht eine Auflade SIM Karte. Die Datenmenge die dabei anfällt ist sehr gering, daher ist davon auszugehen, dass die Kosten der Mindestaufladung von 5,- im Jahr nicht überschritten werden. So sind die laufenden Kosten auch für den Betrieb mehrerer Nodes auf alle Fälle Leistbar.
Das Modem kann direkt über den USB Port mit 5V geladen werden. Dazu eignet sich die 5V Spannungsversorgung für den Raspberry, welche auf der Schaltung bereits zur Verfügung steht.
Sobald also der Raspberry ein- bzw. ausgeschaltet wird, kann nun das Modem mit ein- und ausgeschaltet werden. Dazu ist nur eine minimale Programmänderung im ATtiny13 erforderlich. Das Programm bleibt abwärtskompatibel, es kann also auch ohne das Modem verwendet werden.
Um das Modem ein- und ausschalten zu können muss die elektronische Schaltung aus dem Projekt nur minimal verändert werden. Die neue Schaltung kann im Projekt ohne Modem weiter verwendet werden. So kann die Aufrüstung mit einem Modem auch zu einem späteren Zeitpunkt erfolgen.
Als Modem kommt das Modell H803 „4G FDD LTE Mobile WiFi“ zum Einsatz. Das Modem ist unter verschiedenen Herstellerbezeichnungen zB. bei Amazon oder Ali Express erhältlich.
Das Modem für dieses Projekt wurde im Februar 2025 bei Ali Express bestellt.



Das Modem hat den Vorteil, dass der EIN/AUS Schalter mit einem Taster auf Masse(GND) geschaltet wird. So kann es auch mit einer elektronischen Schaltung geschaltet werden.

1. Modem Router vorbereiten
Um Das Modem vorzubereiten zu können, muss es geöffnet werden.
ACHTUNG: Öffnen und löten auf eigene Gefahr! Es erlischt die Garantie!
Dazu den Akkudeckel öffnen und die vier kleinen Schräubchen herausdrehen. Den Deckel schalterseitig vorsichtig abhebeln.

Im Inneren ist der goldene Messing Ein / Aus Taster zu sehen.

Um den Taster nun elektronisch zu schalten, wird ein etwa 15 – 20cm langes, sehr feines Litzenkabel vorsichtig an den Taster wie auf dem Bild sichtbar, gelötet. Wenn das Kabel zu dick ist, funktioniert der Schalter manuell nur mehr schlecht, was aber für den Node Betrieb nichts ausmacht.
Das Kabel kann seitlich durch ein Loch gesteckt um dann durch das Gitter herausgeführt zu werden. Dazu kann ein kleines Loch mit einem dünnen Bohrer erweitert werden.

Das Modem nun vorsichtig wieder komplett zusammenbauen. Achten sie auf die beiden weißen Häkchen am einen Ende der Platine, sie dürfen nicht verbogen und auf keinen Fall abgebrochen werden.
Bevor der Akku eingelegt wird, die SIM Karte einlegen und die WiFi Zugangsdaten des Modems aufschreiben.
Als SIM Karte wird in diesem Projekt eine Aufladekarte für Datenübertragung verwendet.
ACHTUNG: Sie musste vorher in einem Smartphone aktiviert werden, damit sie benutzt werden kann. Sie muss auch genügend Guthaben aufweisen!

Nun den Akku einlegen und Deckel schließen. Das Modem einschalten in dem man ca. 3-5 Sekunden den Einschalter drückt. Das Modem schaltet sich ein und es benötigt ca. 40-50 Sekunden bis die Anzeige für LTE und WLAN leuchten und das Modem betriebsbereit ist.
Das LTE Symbol leuchtet beim ersten Mal einschalten rot, weil das Modem noch eingerichtet werden muss.
Dazu werden die APN Daten des Providers der SIM Karte benötigt. Die Daten erhalten sie von ihrem Provider.
In diesem Falle wird eine Aufladekarte von Spusuu Österreich verwendet.
Die APN Daten von spusuu Österreich lauten:
Name: spusuu
APN: mass.at
Nun mit dem Computer oder mit dem Smartphone mit dem Modem verbinden.
Dazu in den WLAN Einstellungen das WLAN suchen, welches vom Modem bereitgestellt wird.
In diesem Falle lautet die SSID: 4G-MIFI-CF5
Dann mit dem WLAN verbinden, der PSK lautet in diesem Falle 1234567890
Sobald die Verbindung hergestellt wurde in Browser die Modem IP Adresse aufrufen, in diesem Falle 192.168.100.1
Es erscheint der login Screen. Mit den Zugangsdaten einloggen. In diesem Falle
Username= admin
Passwort = admin

Es erscheint in etwa dieser Bildschirm.

Nun muss das Modem konfiguriert werden, damit es sich mit dem Provider verbindet.
Zuerst die APN Settings einstellen. Es muss ein Profil erstellt werden. In diesem Falle wurde Profile1 Erstellt und die APN Daten eingetragen.
Mit „Save Configuration“ speichern.

Nun das Login Passwort ändern. Nach dem Speichern mit den neuen Daten einloggen.

Und jetzt die WLAN Zugangsdaten.
ACHTUNG: Unbedingt darauf achten, dass keine Sonderzeichen verwendet werden, und das Passwort zwischen 8 und 63 Zeichen lang ist.
Falls etwas schief gegangen ist, Reset auf Werkseinstellungen: Akkudeckel öffnen, Reset Taste finden, Modem einschalten, Reset Taste mehrere Sekunden lang drücken bis Modem neu startet.

Nach dem Speichern der WLAN Zugangsdaten, neu mit dem WLAN des Modems verbinden.
Das Modem schaltet sich nach kurzer Zeit selbst aus, wenn keine WLAN Verbindung zu einem Client aufgebaut ist.
Manuell abschalten Einschalter ca. 10 Sekunden halten.
Es ist nun bereit für den Einbau im Node.
2. Elektronische Schaltung erstellen:
Wie in dem Vorgänger Projekt wird nun die Schaltung hergestellt. Da sich die Schaltung von der Vorversion kaum unterscheidet, ist die Herstellung ebenso einfach. Fertig gefräste Platinen, oder die gesamten Komponenten können HIER angefordert werden.
Stückliste
- Lochrasterplatine oder fertige Platine (Platine hier anfordern)
- IC Sockel 8 Pin DIL8
- Stiftleiste gewinkelt RM2,54 36 PINs
- IC Atmel ATtiny 13 DIL8
- Optokoppler PC817
- 2 Tranistor BC546B oder Vergleich zB 2N2222
- 3mm LED rot
- 3 Widerstand 1k Ohm
- 2 Widerstand 220 Ohm
- 1 Widerstand 10k Ohm
- 3 Diode 1N4148
- Relais HFD2 / 005-S-L2-D bistabil (10 Pins)


3. ATtiny13 programmieren
Hier ist beschrieben wie man den Tiny13 programmiert: programmieren Tiny13
Folgenden Code zum programmieren des Tiny13 verwenden:
//Fernupdate mit LTE Modem G1.0 2025-03-04
// ATTINY13 mit HFD2-003 bistabiles Relais und Modem 4G FDD LTE Mobile WiFi Mod:H803
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#define WAKEUP_PIN 2 // PWM Signal vom RAK18003 | ATTINY13 PIN7=PB2
#define START_PIN_1 3 // Relais SET = Raspi ein | ATTINY13 PIN2=PB3
#define START_PIN_2 4 // Relais RESET = Raspi aus | ATTINY13 PIN3=PB4
#define SLEEP_PIN 0 // Erwartet GPIO Signal vom Raspi | ATTINY13 PIN5=PB0
#define GSM_PIN 1 // schaltet Moden EIN/AUS | ATTINY13 PIN6=PB1
volatile uint8_t pwm_pulses = 0; // Zählt WAKEUP_PIN HIGH
volatile uint8_t sleep_pulses = 0; // Zählt SLEEP_PIN HIGH
void setup()
{
// Setze Pins als Ein- oder Ausgänge
DDRB |= (1 << START_PIN_1); // Ausgang
DDRB |= (1 << START_PIN_2); // Ausgang
DDRB &= ~(1 << SLEEP_PIN); // Eingang
DDRB &= ~(1 << WAKEUP_PIN); // Eingang
DDRB |= (1 << GSM_PIN); // Ausgang
// Setze Ausgangszustände
PORTB &= ~(1 << START_PIN_1); // LOW
PORTB &= ~(1 << START_PIN_2); // LOW
PORTB |= (1 << GSM_PIN); // HIGH
PORTB |= (1 << WAKEUP_PIN); // Pull-up Widerstand aktivieren
PCMSK |= (1 << PCINT2); // Aktiviert den Interrupt für Pin 2 (WAKEUP_PIN)
PCMSK |= (1 << PCINT0); // Aktiviert den Interrupt für Pin 0 (SLEEP_PIN)
GIMSK |= (1 << PCIE); // Aktiviert Pin Change Interrupts für Port B
sei();// Schalte globale Interrupts ein
// Beginne im Schlafmodus (Schlafmodus aktivieren)
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_enable();
sleep_mode(); // Hier geht der Mikrocontroller in den Schlafmodus
}
void loop()
{
PORTB &= ~(1 << START_PIN_1); // LOW
if (bit_is_set(PINB, SLEEP_PIN)) // Prüfen, ob der SLEEP_PIN HIGH ist
{
delay(60000); // 60 Sekunden warten
//Raspi aus
PORTB &= ~(1 << START_PIN_1); // LOW
PORTB |= (1 << START_PIN_2); // HIGH
//GSM aus
PORTB |= (1 << GSM_PIN); // LOW
delay(10000); //10 Sek um GSM auszuschalten
PORTB &= ~(1 << START_PIN_2); // LOW
PORTB |= (1 << GSM_PIN); // HIGH
pwm_pulses = 0;// Zähler zurücksetzen
sleep_enable(); // Aktiviert den Schlafmodus
sleep_mode(); // Geht wieder in den Schlafmodus
}
}
// Interrupt Service Routine für den externen Interrupt Pin
ISR(PCINT0_vect)
{
// Prüfen, ob SLEEP_PIN von LOW auf HIGH gewechselt ist
if (bit_is_set(PINB, SLEEP_PIN))
{
// Wenn der SLEEP_PIN HIGH ist, Zähler erhöhen
sleep_pulses++;
if (sleep_pulses >= 2)
{
delay(60000); // warte 60 Sekunden bis zum Ausschalten
// Raspi ausschalten, Relais RESET
PORTB &= ~(1 << START_PIN_1); // LOW
PORTB |= (1 << START_PIN_2); // HIGH
//GSM aus
PORTB &= ~ (1 << GSM_PIN); // LOW
delay(10000); // 10 Sekunden warten für GSM aus
PORTB &= ~(1 << START_PIN_2); // LOW
PORTB |= (1 << GSM_PIN); // HIGH
// Zähler zurücksetzen
sleep_pulses = 0;
pwm_pulses = 0;
}
}
// Prüfen, ob WAKEUP_PIN auf HIGH gewechselt hat
if (bit_is_set(PINB, WAKEUP_PIN))
{
// PWM-Signal erkannt (Sekundentakt)
pwm_pulses++;
if (pwm_pulses >= 5) // Warte mindestens 5 Impulse, bevor gestartet wird
{
PORTB &= ~(1 << GSM_PIN); // LOW (GSM einschalten)
delay(3500);
PORTB |= (1 << GSM_PIN); // HIGH
delay(15000); //etwas warten damit GSM bereit wenn Raspi hochfährt
PORTB |= (1 << START_PIN_1); // HIGH setzen (Relais einschalten)
delay(300);
PORTB &= ~(1 << START_PIN_1); // LOW
}
}
}
4. Raspberry Pi Zero W2 installieren und einrichten
Im Prinzip, wird der Raspberry für den Betrieb mit Modem nahezu identisch eingerichtet wie in dem Vorgänger Projekt. Hier eine Schritt für Schritt Anleitung für den Betrieb mit LTE Modem.ferrtigen fertigen Clone auf SD Karte anfordern
Hier die Installationsanleitung für den Raspi:
(Anleitung für Windows PC und Android Smartphone optimiert)
Voraussetzungen
- Hardware:
- PC mit Internetzugang
- SD-Kartenleser
- microSD-Karte (mindestens 4 GB, maximal 32 GB)
- Raspberry Pi Zero W 2
- USB Kabel auf Micro USB
- optional Smartphone
- Software:
Schritt 1: microSD-Karte vorbereiten
- Optional: Falls die microSD-Karte formatiert werden muss:
- Installiere und öffne den SD Formatter.
- Aktiviere unter „Optionen“ die Einstellung „FORMAT SIZE ADJUSTMENT“.
- Formatiere die Karte.
- Lade den Raspberry Pi Imager herunter und installiere ihn: Raspberry Pi Imager.
- Bespielen der SD-Karte:
- Starte den Raspberry Pi Imager.
- Wähle das Modell Raspberry Pi Zero 2 W.
- Wähle das Betriebssystem Raspberry Pi OS (Legacy, 32-Bit) Bullseye.
- Wähle die microSD-Karte aus.
- Klicke auf „Einstellungen bearbeiten“ und konfiguriere:
- Hostname (aufschreiben).
- Benutzername (muss pi sein) und Passwort (aufschreiben).
Für die Anleitung sollte es der Standard Benutzer pi sein, da auf das pi Homeverzeichnis referenziert wird - WLAN-Name (SSID) und Passwort wie am Modem für den Node Betrieb bereits eingestellt wurde
- WLAN-Land: AT.
- Zeitzone: Europe/Vienna.
- Tastatur: de.
- SSH: aktivieren.
- Authentifizierung per Passwort: aktivieren.
- Speichere die Einstellungen und bestätige mit JA.
- Die SD-Karte wird nun mit dem Betriebssystem beschrieben.
- Entnehme die microSD-Karte und stecke sie in den Raspberry Pi.
Schritt 2: Raspberry Pi starten und einrichten
- IP-Adresse des Raspberry Pi ermitteln:
- Installiere am PC Advanced IP Scanner
- installiere am PC Real VNC Viewer
- installiere am PC PuTTY
- Verbinde das WLAN des PCs mit dem LTE Modem (Die SIM Karte muss ausreichend Guthaben aufweisen!)
- Scanne die IPs mit dem IP Scanner
- Notiere die IP des Raspberry
- Starte VNC und stelle testhalber eine Verbindung zum Raspberry Pi her
- Beende VNC
- Stelle eine Verbindung mit Putty her
- SSH-Verbindung herstellen:
- Starte PuTTY und gib die IP-Adresse des Raspberry Pi ein.
- Bestätige die Sicherheitswarnung.
- Melde dich mit deinem Benutzernamen und Passwort an.
- System aktualisieren:
- Führe im Termialfenster folgenden Befehl aus:
(Befehl kopieren und im Terminalfenster mit der rechten Maustaste einfügen)
- Führe im Termialfenster folgenden Befehl aus:
- System aktualisieren:
sudo apt update && sudo apt upgrade -y
- Dies dauert einige Minuten.
- Zusätzliche Software installieren:
- Entferne den ressourcenintensiven Browser
- Führe im Termialfenster folgenden Befehl aus:
sudo apt-get remove chromium-browser
- Installiere den ressourcenschonenden Browser Midori:
Führe im Termialfenster folgenden Befehl aus:
sudo apt install midori
Ausgangspin für Raspi einschalten auf Standard LOW setzen
sudo nano /boot/config.txt
mit Cursorsteuertasten ganz ans Ende scrollen, mit Enter eine Leerzeile einfügen und in die Datei das Script einfügen
gpio=18=op,dl
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
Schritt 3: Herunterfahren GPIO-Skript erstellen
- Erstelle ein Python-Skript zum Ausschalten des Raspberry Pi:
Fährt Raspi sauber herunter und schaltet die Spannungsversorgung des Raspi ab
Erweiterung für Nachricht dass Heruntergefahren wird an Telegram Chat erwünscht? Anleitung hier
Führe im Termialfenster folgenden Befehl aus:
md ~/Desktop/scripte
cd ~/Desktop/scripte
sudo nano ausschalten.py
Füge folgendes Skript ein:
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()
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
Führe im Termialfenster folgenden Befehl aus:
sudo chmod +x ausschalten.py
Schritt 4: Rak Node Laufwerk GPIO-Skript erstellen
- Erstelle ein Python-Skript zum Ausschalten des Raspberry Pi:
- Das Script „drückt“ 2 x Reset am Rak und erstellt am Raspi Desktop ein Laufwerk
Führe im Termialfenster folgenden Befehl aus:
cd ~/Desktop/scripte
sudo nano raklaufwerk.py
Füge das Script ein
import RPi.GPIO as GPIO
import time
# GPIO-Pin definieren
GPIO_PIN = 15
# GPIO-Modus festlegen und Pin konfigurieren
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.OUT)
# 2 x Reset Signal erzeugen
GPIO.output(GPIO_PIN, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(GPIO_PIN, GPIO.LOW)
time.sleep(0.25)
GPIO.output(GPIO_PIN, GPIO.HIGH)
time.sleep(0.25) # 250 ms
GPIO.output(GPIO_PIN, GPIO.LOW)
print("2 x Reset geschickt")
print("RAK Laufwerk initialisiert")
time.sleep(1)
GPIO.cleanup()
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
Führe im Termialfenster folgenden Befehl aus:
sudo chmod +x raklaufwerk.py
Schritt 5: Rak Reset Script erstellen
- Erstelle ein Python-Skript zum Ausschalten des Raspberry Pi:
Macht am RAK ein Reset, das Rak bootet neu
Führe im Termialfenster folgenden Befehl aus:
cd ~/Desktop/scripte
sudo nano rakreset.py
Füge das Script ein
import RPi.GPIO as GPIO
import time
# GPIO-Pin definieren
GPIO_PIN = 15
# GPIO-Modus festlegen und Pin konfigurieren
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.OUT)
# Reset Signal erzeugen
GPIO.output(GPIO_PIN, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(GPIO_PIN, GPIO.LOW)
time.sleep(2)
GPIO.output(GPIO_PIN, GPIO.HIGH)
time.sleep(1)
print("RAK Reset geschickt")
print("RAK rebootet")
time.sleep(1)
GPIO.cleanup()
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
Führe im Termialfenster folgenden Befehl aus:
sudo chmod +x rakreset.py
Schritt 6: IP Adresse und Nachrichten zum Telegram Bot senden
Führe im Terminalfenster folgenden Befehl aus:
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
In Putty im Terminalfenster von Raspi 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:
@reboot sleep 30 && /usr/bin/python3 /home/pi/send_ip.py && /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

Schritt 7: Script erstellen: Raspi nach 30 Minuten automatisch herunterfahren
- Erstelle ein Skript zum automatischen Ausschalten:
Fährt Raspi nach nach einem Neustart mit 30 Minuten Verzögerung herunter und schaltet die Spannungsversorgung zum Raspi ab. Das ist falls sich der Raspi vungewollt startet, weil zb. der RAK rebootet wird.
Erweiterung für Nachricht dass Heruntergefahren wird an Telegram Chat erwünscht? Anleitung hier
Führe im Termialfenster folgenden Befehl aus:
sudo nano /home/pi/shutdown_timer.sh
Füge folgendes in die Datei ein:
#!/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
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
Führe im Termialfenster folgenden Befehl aus
sudo chmod +x /home/pi/shutdown_timer.sh
Um das Skript beim Systemstart automatisch auszuführen, führe im Termialfenster folgenden Befehl aus
sudo crontab -e
Den vorhandenen Eintrag unter @reboot löschen und durch diesen ersetzen
@reboot sleep 30 && /bin/bash /home/pi/send_ip_udp.sh && /bin/bash /home/pi/shutdown_timer.sh
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
sudo reboot
Teste das Script: Starte den Raspi neu und warte 30 Minuten 🙂
… Raspi fährt automatisch nach 30 Minuten herunter und die Spannung zum Raspi wird ausgeschaltet.
Schritt 8: Desktop-Verknüpfungen für die Skripte erstellen
- Erstelle eine Desktop-Verknüpfung fürs Herunterfahren:
Führe im Termialfenster folgenden Befehl aus:
sudo nano ~/Desktop/Herunterfahren.desktop
- Füge folgendes ein:
[Desktop Entry]
Name=Herunterfahren
Comment=Herunterfahren und Ausschalten
Exec=/usr/bin/python3 /home/pi/Desktop/scripte/ausschalten.py
Icon=/usr/share/icons/PiXflat/48x48/actions/system-shutdown.png
Terminal=true
Type=Application
Categories=Utility;
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
- Mache die Verknüpfung ausführbar:
Führe im Termialfenster folgenden Befehl aus:
sudo chmod +x ~/Desktop/Herunterfahren.desktop
- Erstelle eine Desktop-Verknüpfung für das RAK Laufwerk:
Führe im Termialfenster folgenden Befehl aus:
sudo nano ~/Desktop/RAK_Laufwerk.desktop
- Füge folgendes ein:
[Desktop Entry]
Name=RAK_Laufwerk
Comment=Rak Laufwerk erstellen
Exec=/usr/bin/python3 /home/pi/Desktop/scripte/raklaufwerk.py
Icon=/usr/share/icons/Papirus/48x48/actions/refresh.svg
Terminal=true
Type=Application
Categories=Utility;
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
- Mache die Verknüpfung ausführbar
Führe im Termialfenster folgenden Befehl aus:
sudo chmod +x ~/Desktop/RAK_Laufwerk.desktop
- Erstelle eine Desktop-Verknüpfung für ein RAK Reset
Führe im Termialfenster folgenden Befehl aus:
sudo nano ~/Desktop/RAK_reset.desktop
- Füge folgendes ein:
[Desktop Entry]
Name=RAK_RESET
Comment=RAK Resetten und neu booten
Exec=/usr/bin/python3 /home/pi/Desktop/scripte/rakreset.py
Icon=/usr/share/icons/Adwaita/48x48/actions/system-reboot.png
Terminal=true
Type=Application
Categories=Utility;
Speichere mit Strg+X, dann Y, und bestätige mit Enter.
- Mache die Verknüpfung ausführbar:
Führe im Termialfenster folgenden Befehl aus:
sudo chmod +x ~/Desktop/RAK_Laufwerk.desktop
Schritt 9: Raspi fertig einrichten
- Desktopeinstellungen
- Mit VNC zum Raspi verbinden
- Am Desktop die rechte Maustaste klicken und Desktop Preverences auswählen
- unter Layout „No image“ auswählen
- Bei Colour die Farbe weiß auswählen
- Bei Text Colour die Farbe schwarz auswählen
- Waste Basket und External Disk aktivieren (Häkchen reinsetzen)
- und OK klicken
- Am Desktop rechts oben das Bluetooth Symbol anklicken und Bluetooth deaktivieren
- Im Startmenü (Himbeere links oben) unter Internet, rechte Maustaste auf Midori und „Add to Desktop“ auswählen
Schritt 10: Update Testen
- Download und speichern der RAK Firmware:
- USB Datenkabel vom Raspi zum RAK Node einstecken
- Mit VNC zum Raspi verbinden
- Öffne den Browser Midori auf dem Raspberry Pi (Himbeere links oben, Internet, Midori).
- Gib in der Adressleiste die URL flasher.meshtastic.org ein und drücke Eingabe
- Warte bis die Seite geladen ist
- Wähle die Hardware aus (RAK Wisblock 4631)
- Wähle die Firmware aus (letzte stabile Version)
- Klicke auf Flash, dann auf continue
- Lade Firmware mit Download_UF
- Warte bis geladen und Browser schließen
- Download Verzeichnis am Desktop anlegen
- Am Desktop in der Taskleiste links oben auf das gelbe Symbol „File Manager“ klicken
- Ziehe mit der linken Maustaste das Symbol „Downloads“ auf den Desktop und lege eine Verknüpfung an
- Schließe den File Manager
- Die soeben angelegte Verknüpfung öffnen und prüfen ob die vorher downgeloadete Firmware vorhanden ist
- Firmware löschen (rechte Maustaste „move to wastebasket“ yes)
- Fenster schließen
- blaues Mülleimersymbol mit rechter Maustaste anklicken
- Mülleimer leeren (rechte Maustaste „empty Wastebasket“ yes
- Ausschalten:
- Klicke auf die Desktop-Verknüpfung „Herunterfahren“ und mit execute bestätigen
- Der Raspberry Pi wird ordnungsgemäß heruntergefahren und die Spannungsversorgung wird ausgeschaltet.
- Der Raspberry ist nun fertig eingerichtet
Schritt 11: SD Card Clonen
Es empfiehlt sich einen Clone (exakte Kopie) der fertig erstellten SD Card anzulegen. So kann ein weiterer Raspberry in einem Node schnell einsatzbereit sein, aber auch zur Sicherheit falls die eingesetzte Card defekt wird.
Um die SD Karte zu Clonen benötigen sie einen SD Card Reader der am Raspberry Pi Zero angeschlossen werden kann, dazu ist ein Adapter von Micro USB Stecker auf USB Buchse erforderlich, am Besten kein Stecker sondern eine Variante mit Kabel, da die Steckeradapter meist zu breit sind.

Den Card Reader mit dem Adapter am Raspi an den USB Datenport anstecken, eine SD Card mit mindestens der selben Größe einstecken, wie die interne SD Card aufweist, auf dem das Raspisystem gespeichert ist. Den Raspi starten, im Startmenü (Himbeer Symbol) unter Accessories – > SD Card Copier wählen. Nun die interne SD Card in der oberen Listbox auswählen, und die SD Card im Card Reader unten einstellen. Falls nicht sicher ist, welche Card es ist, die Card aus dem Card Reader herausziehen, es bleibt dann nur die interne Card zur Auswahl übrig.
New Partition UUIDs aktivieren und Start drücken.
Um auf der neu geclonten Karte ggf. ein anderes WLAN oder HOTSPOT als im Clone eingestellt, benutzen zu können, erstellen sie eine Textdatei.
Öffnen sie dazu unter Windows das Notepad (oder unter Linux ein Äquivalent) und fügen sie das Script ein.
# Datei wpa_supplicant.conf in der Boot-Partition der SD Card einfügen
country=AT # oder DE usw.
update_config=1
ctrl_interface=/var/run/wpa_supplicant
network={
scan_ssid=1
ssid="IHRE_WLAN_IP"
psk="IHR_WLAN_PASSWORT"
}
Ändern sie die WLAN Zugangsdaten entsprechend ihrem WLAN/HOTSPOT.
Speichern sie die Datei mit dem Namen wpa_supplicant.conf und kopieren sie die Datei auf die neu geclonte SD Card ins Hauptverzeichnis
ACHTUNG: Unter Windows erscheint die Aufforderung, dass die SD Car dformatiert werden muss. Die SD Card nicht neu formatieren!
Sobald die Datei im Hauptverzeichnis gespeichert wurde, ist die neue SD Card einsatzbereit.
Der Hostname des Raspberry kann nach dem Hochfahren mit der geclonten SD Card am Desktop geändert werden:
Im Startmenü (Himbeersymbol) unter „Preferences“ und dann „Raspberry Pi Configuration“ im Reiter „System“ -> „CHANGE HOSTNAME“. Neuen Namen eingeben.
Nach erfolgreicher Änderung, neu starten.
leere oder fertige gelötete Platine, modifiziertes RAK18001, Raspi OS Image anfragen
5. Node Komponenten zusammenfügen
RAK18001 modifizieren
Am RAK18001 muss eine sehr feines Litzenkabel angelötet werden. Beim löten UNBEDINGT darauf achten nur ganz kurz die Lötstelle erhitzen, da sonst Gefahr besteht, dass der Bauteil komplett entlötet wird.
Ein ca. 15cm langes Litzenkabelstück vorne und hinten abisolieren. Die Kupferenden verzinnen, Am Ende das an den RAK gelötet werden soll das verzinnte Auf ca. 1-2mm kürzen. Nun das verzinnte Ende an die Lötstelle halten und fixieren (zB einen Gegenstand auf das Kabel stellen).
Nun wirklich nur ganz kurz die Lötstelle erhitzen und sofort aufhören wenn es geschmolzen ist (1 – 2 Sekunden).
Dann das Kabel mit einem Tropfen Superkleber festkleben und die FIxierung erst entfernen wenn der Kleber sicher hält (5 Minuten?!).



RAK19003
Am RAK19003 auf dem PIN RST eine ca. 15cm lange Litze anlöten. Es empfiehlt sich verschiedenfärbige Litzen zu verwenden. Schwarze und rote Litzen sollen nur für Spannungsversorgung verwendet werden!
Das RAK18001 vorsichtig damit das angelötete Kabel nicht beschädigt wird am RAK19003 am SLOT D anbringen (das RAK18001 funktioniert angeblich nur auf SLOT D, bei mir hat der Buzzer auch auf SLOT C funktioniert. Am Bsten selber austesten.)

Raspberry Pi zero W 2
4 Litzen werden nun amGPIO Ports am Raspberry Pi W 2 angelötet.
Die angabe der Farben muss nicht zwingend eingehalten werden, es empfiehlt sich aber verschiedenfärbige Kabel zu verwenden. Mindestens für spannungsführende Kabel sollte rot für den PLUS Pol und schwarz für GND verwendet werden.
PIN2 5V (rot oder violett)
PIN6 GND (schwarz oder blau)
PIN10 GPIO15 (das grüne Kabel vom RAK RST PIN)
PIN12 GPIO18 (weiß)


Spannungswandler DC DC StepUp von 3,7V auf 5V
Am Eingang sowie am Ausgang jeweils ein ca. 10cm langes Litzenkabel an beide Pole anlöten. Der Eingang ist mit einem Flussrichtungspfeil gekennzeichnet.

Spannungswandler bei bei Amazon
Spannungswandler für PV Anlage zum PV Ladeeingang des RAK19003
ACHTUNG! Wer den Li-Ion Akku mit Hilfe des RAK19003 PV Ladeeingangs laden möchte, muss unbedingt darauf achten, dass die Ladespannung nicht 5,5V übersteigt.
Wird ein PV Panel verwendet dass eine höhere Spannung als 5,5V liefert sollte einen DC DC Step Down Konverter einsetzen (zB. 10V-25V auf 5V):
Dies ist jedoch NICHT Bestandteil dieses Projektes!
Elektronische Schaltung
Die Ein- und Ausgänge an der elektronischen Schaltung sind von K1 bis K6 beschriftet, Achten sie auf die Polung!
Kabelbelegung:
K1 zum AKku
K2 zum RAK Spannungsversorgung
K3 zum Raspi Spannungsversorgung (Raspi plus auf PIN2 und GND auf PIN 6)
K4 PIN1 zum RAK18001 feines Litzenkabel
K4 PIN2 zum RASPI PIN12
K4 PIN3 zum Modem feines Litzenkabel
K5 zum DC DC StepUp Spannungswandler Eingang
K6 vom DC DC StepUp Spannungswandler Ausgang und mit USB C zum Modem (unbedingt auf Polung achten)
Vom Raspberry Pi Micro USB Datenport mit USB Datenkabel zum RAK Node verbinden.
In der Form wie bereits hier beschrieben, nach dem Schema im Bild zusammenbauen.
ACHTUNG: Beim Löten des USB C Steckers auf korrekte Polung achten
V = 5V
G = GND


6. Funktion testen
Nach dem Zusammenbau des Nodes kann die Funktion getestet werden.
Einschalten des Raspberry Pi:
Am Smartphone im MeshtasticApp das Client Mode folgendes im Gerätemanager (alternativ über Adminfunktion Fernwartung) einstellen -> External Notification Config ->
- External Notification enabled aktivieren
- Alert message buzzer aktivieren
- Alert Bell Buzzer aktivieren
- WICHTIG: Output Buzzer (GPIO) auf 21 einstellen!
- Es kann auch nur „Alert bell Buzzer“ aktiviert werden und „Alert message buzzer“ kann deaktiviert bleiben, jedoch wird der Raspberry und das Modem dann nur eingeschaltet wenn eine Nachricht mit dem Glockensymbol gesendet wird.
- senden

Nun startet der RAK neu und schaltet den RASPI und das Modem ein, es kann jetzt auch eine Direktnachricht (mit Glocke) an das Client Node gesendet werden, damit der Raspi einschaltet.
Nachdem der Raspi gestartet ist (ca. 1 -2 Minuten) wird der Telegrambot eine Nachricht mit der öffentlichen IP_Adresse des Raspi erhalten
Nun kann mit REAL VNC eine Verbindung zum Raspi hergestellt werden
REAL VNC App am Smartphone
REAL VNC App aufrufen und mit dem + Symbol einen neue Verbindung erstellen. Die IP Adresse des Raspi, welche an den Telegram Bot gesendet wurde, eingeben.
Eine Verbindung mit REAL VNC (vom PC der im Heim WLAN eingeloggt ist oder vom Smartphone aus) zum fertig eingerichtet Raspi, zeigt am Desktop folgende Symbole. Die Beschreibung in roter Schrift am Bild.

- Um die Firmware zu laden den Browser Midori aufrufen. Die Webseite https://flasher.meshtastic.org/ aufrufen.
- Zuerst die Hardware auswählen (RAK4631)
- Dann die gewünschte Firmwareversion auswählen
- nun auf Flash tippen
- runtersrollen und auf Continue tippen
- nun unten auf Download UF tippen
Firmware wird herunter geladen und liegt im Download Verzeichnis
- Browser schließen
- Auf das Downloadverzeichnis Symbol am Desktop doppeltippen
- ggef. das Downloadfenster zur Seite schieben: AM oberen Fensterrahmen doppeltippen und halten und das Fenster zur Seite ziehen
- Auf das Symbol RAK_Laufwerk doppeltippen und dann auf execute, um den RAK in den Bootmodus zu versetzen
- ACHTUNG WENN SIE KEINE FIRMWARE EINSPIELEN, MÜSSEN SIE DEN RAK RESETTEN DAMIT ER DEN BOOTMODUS VERLÄSST!
Tippen sie dazu das Symbol RAK_RESET um Desktop und wählen sie Execute.
Wenn sie eine Firmware einspielen möchten fahren sie laut Anleitung fort
- ACHTUNG WENN SIE KEINE FIRMWARE EINSPIELEN, MÜSSEN SIE DEN RAK RESETTEN DAMIT ER DEN BOOTMODUS VERLÄSST!
- Ein neues Fenster erscheint, auf OK tippen. Das öffnet das Boot Laufwerk am RAK
- Nun durch tippen auf das Downloadfenster es in den Vordergrund bringen
- Die downgeloadete Firmware 1x antippen (markieren) und oben in er Menüleiste unter Edit -> Copy auswählen.
- Das Bootlaufwerk vom RAK in den Vordergrund bringen und in der Menüleiste Edit -> Paste auswählen
- Die Firmware wird nun zum RAK übertragen. Das RAK bootet dann automatisch neu
- Mit der MeshtasticApp prüfen ob die Firmware erfolgreich eingespielt wurde

- In der MeshtasticApp das Client Node folgendes über die Fernadministration einstellen -> External Notification Config ->
- External Notification enabled deaktivieren
- Alert message buzzer deaktivieren
- Alert Bell Buzzer deaktivieren
- senden
- Nun am Desktop des Raspi das Symbol Herunterfahren antippen und Execute auswählen
- Der Raspi fährt herunter und die Stromversorgung zum Raspi wird nach 60 Sekunden abgeschaltet
Der RAK Node wurde erfolgreich upgedatet. Für den Fall, dass vergessen wurde den Raspi herunterzufahren, oder sich der Raspi unbeabsichtigt einschaltet, weil die „external notification“ im Node nicht deaktiviert wurde, ist im Raspi das Script aktiv, welches den Raspi automatisch nach 30 Minuten herunterfährt und die Stromversorgung wieder ausschaltet.
Sie haben nun die Möglichkeit ihre RAK Nodes von zentraler Stelle aus zu warten.
leere oder fertige gelötete Platine, modifiziertes RAK18001, Raspi OS Image anfragen