No description
  • Python 76.4%
  • HTML 23.1%
  • Shell 0.5%
Find a file
2026-02-09 20:10:20 +01:00
backups neue Version 2026-01-17 16:37:57 +01:00
config erster Versuch neustart 2026-02-09 20:10:20 +01:00
docs Kanal-Statistik aktiviert 2026-01-19 18:26:25 +01:00
modules erster Versuch neustart 2026-02-09 20:10:20 +01:00
templates Zwischenstad Fehlerhaft 2026-01-19 07:52:23 +01:00
.gitignore Erster Import 2026-01-14 20:32:25 +01:00
CHANGELOG.md Doppelte !pong-Antwort beheben 2026-01-16 16:22:43 +01:00
find_ags.py test_api.py läuft als Beispiel 2026-01-15 08:50:21 +01:00
find_ars.py find_ars.py läuft 2026-01-15 09:46:35 +01:00
LICENSE Erster Import 2026-01-14 20:32:25 +01:00
meshdd-bot.service Erster Import 2026-01-14 20:32:25 +01:00
meshdd_bot.py Bot läuft jetzt 2026-01-19 17:08:39 +01:00
README.md Erster Import 2026-01-14 20:32:25 +01:00
requirements.txt kleine Anpassungen 2026-01-15 16:00:19 +01:00
start.sh zweiter Test\n Asyncio Fehler 2026-01-14 20:52:28 +01:00
VERSION Bot läuft jetzt 2026-01-19 17:08:39 +01:00

MeshDD_Bot 🤖

Ein umfassender Meshtastic-Bot für das Dresdner Mesh-Netzwerk mit zahlreichen Features.

🌟 Features

  • 📡 Meshtastic Integration: Netzwerk-Verbindung zu Meshtastic-Nodes
  • 💬 Befehls-System: Reagiert auf Befehle wie !help, !wetter, !stats
  • 🌤️ Wetter-Service: Wetterabfragen mit GPS-Fallback auf Dresden
  • ✂️ Message Splitting: Teilt lange Nachrichten automatisch auf (>190 Zeichen)
  • Scheduler: Zeitgesteuerte und intervall-basierte Nachrichten
  • ⚠️ Warnungs-System: Automatische Warnungen vom Bundesamt (NINA/MOWAS)
  • 📊 Web-Dashboard: Übersichtliches Dashboard mit Live-Statistiken
  • 🔧 Hot-Reload: Automatisches Neuladen der Scheduler-Config bei Änderungen

📋 Voraussetzungen

  • Python 3.8 oder höher
  • Zugriff auf einen Meshtastic-Node über Netzwerk
  • Internetverbindung für Wetter und Warnungen

🚀 Installation

1. Repository klonen

cd /pfad/zu/deinem/projekt
# Dateien sind bereits vorhanden

2. Virtual Environment erstellen

python3 -m venv venv
source venv/bin/activate  # Linux/Mac
# oder
venv\Scripts\activate  # Windows

3. Dependencies installieren

pip install -r requirements.txt

4. Konfiguration anpassen

Bearbeite die Dateien im config/ Verzeichnis:

  • bot_config.yaml - Hauptkonfiguration
  • scheduler.yaml - Zeitgesteuerte Nachrichten
  • warnings.yaml - Warnungs-Einstellungen

Wichtig: Passe die Meshtastic-Verbindungseinstellungen in bot_config.yaml an:

meshtastic:
  host: "192.168.11.6"  # Deine Node-IP
  port: 4403            # Dein Port

🎯 Verwendung

Bot starten

python meshdd_bot.py

Bot im Hintergrund starten (Linux)

# Mit nohup
nohup python meshdd_bot.py > logs/bot.log 2>&1 &

# Oder als systemd Service (siehe unten)

Bot stoppen

# Mit Strg+C oder
pkill -f meshdd_bot.py

🌐 Web-Dashboard

Das Dashboard ist unter folgender Adresse erreichbar:

http://localhost:8080

Oder von einem anderen Gerät im Netzwerk:

http://<bot-ip>:8080

📝 Befehle

Der Bot reagiert auf folgende Befehle (Prefix: !):

  • !help / !hilfe - Zeigt Hilfe an
  • !wetter [Ort] - Wetterdaten (nutzt GPS oder angegebenen Ort)
  • !info - Bot-Informationen
  • !stats - Statistiken
  • !uptime - Laufzeit
  • !ping - Verbindungstest

Scheduler

Der Scheduler sendet automatisch Nachrichten zu konfigurierten Zeiten.

Zeitgesteuerte Nachrichten

Bearbeite config/scheduler.yaml:

scheduled_messages:
  - name: "morning_greeting"
    enabled: true
    time: "08:00"
    days: ["monday", "tuesday", "wednesday", "thursday", "friday"]
    channel: 0
    message: "☀️ Guten Morgen Dresden!"

Intervall-basierte Nachrichten

interval_messages:
  - name: "hourly_heartbeat"
    enabled: true
    interval: 3600  # Sekunden
    channel: 0
    message: "💓 Bot läuft weiter"

Variablen in Nachrichten

Folgende Variablen können verwendet werden:

  • {bot.name} - Bot-Name
  • {uptime} - Bot-Laufzeit
  • {stats.messages} - Anzahl empfangener Nachrichten
  • {stats.users} - Anzahl unique Users

Hot-Reload

Die scheduler.yaml wird automatisch überwacht. Änderungen werden innerhalb von 5 Sekunden aktiv - kein Neustart nötig!

⚠️ Warnungs-System

Der Bot holt automatisch Warnungen vom Bundesamt für Bevölkerungsschutz.

Konfiguration

Bearbeite config/warnings.yaml:

locations:
  - ags: "14612000"  # Dresden
    name: "Dresden"
    enabled: true
    channel: 0

Weitere AGS-Codes

  • 14612000 - Dresden
  • 146260000 - Landkreis Meißen
  • 146250000 - Sächsische Schweiz-Osterzgebirge

Vollständige Liste der AGS-Codes

📁 Projektstruktur

MeshDD_Bot/
├── meshdd_bot.py           # Hauptprogramm
├── requirements.txt        # Python Dependencies
├── README.md              # Diese Datei
├── config/                # Konfigurationsdateien
│   ├── bot_config.yaml
│   ├── scheduler.yaml
│   └── warnings.yaml
├── modules/               # Bot-Module
│   ├── __init__.py
│   ├── config_loader.py
│   ├── meshtastic_handler.py
│   ├── message_processor.py
│   ├── weather.py
│   ├── scheduler.py
│   ├── warnings.py
│   ├── stats.py
│   └── webserver.py
├── data/                  # Daten und Cache
│   ├── stats.json
│   └── warnings_cache.json
└── logs/                  # Log-Dateien
    └── meshdd_bot.log

🔧 Systemd Service (Linux)

Erstelle /etc/systemd/system/meshdd-bot.service:

[Unit]
Description=MeshDD Bot für Dresden Mesh Network
After=network.target

[Service]
Type=simple
User=dein-user
WorkingDirectory=/pfad/zu/MeshDD_Bot
ExecStart=/pfad/zu/MeshDD_Bot/venv/bin/python meshdd_bot.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Aktivieren:

sudo systemctl daemon-reload
sudo systemctl enable meshdd-bot
sudo systemctl start meshdd-bot
sudo systemctl status meshdd-bot

📊 Logging

Logs werden gespeichert in:

  • Console (stdout)
  • logs/meshdd_bot.log

Log-Level in config/bot_config.yaml anpassen:

logging:
  level: "INFO"  # DEBUG, INFO, WARNING, ERROR

🐛 Troubleshooting

Bot startet nicht

  1. Prüfe Python-Version: python --version (min. 3.8)
  2. Prüfe Dependencies: pip list
  3. Prüfe Log-Datei: tail -f logs/meshdd_bot.log

Keine Verbindung zu Meshtastic

  1. Prüfe Node-IP und Port in bot_config.yaml
  2. Teste Verbindung: ping 192.168.11.6
  3. Prüfe ob Node im Netzwerk-Modus läuft

Wetter funktioniert nicht

  1. Prüfe Internetverbindung
  2. Open-Meteo API benötigt keine API-Key
  3. Prüfe Logs für Fehler

Warnungen funktionieren nicht

  1. Prüfe Internetverbindung
  2. Prüfe AGS-Codes in warnings.yaml
  3. Prüfe data/warnings_cache.json

📝 Entwicklung

Tests hinzufügen

pip install pytest pytest-asyncio
pytest tests/

Neues Modul erstellen

  1. Erstelle modules/mein_modul.py
  2. Importiere in meshdd_bot.py
  3. Initialisiere in initialize() Methode

🤝 Contributing

Beiträge sind willkommen! Bitte erstelle einen Pull Request oder öffne ein Issue.

📜 Lizenz

Dieses Projekt steht unter der MIT-Lizenz.

👥 Credits

Entwickelt für das Dresden Mesh Network (meshdresden.eu)

📞 Support

Bei Fragen oder Problemen:

  • GitHub Issues
  • Dresden Mesh Network Community

MeshDD_Bot - Verbindet Dresden im Mesh! 📡🤖