- Python 76.4%
- HTML 23.1%
- Shell 0.5%
| backups | ||
| config | ||
| docs | ||
| modules | ||
| templates | ||
| .gitignore | ||
| CHANGELOG.md | ||
| find_ags.py | ||
| find_ars.py | ||
| LICENSE | ||
| meshdd-bot.service | ||
| meshdd_bot.py | ||
| README.md | ||
| requirements.txt | ||
| start.sh | ||
| VERSION | ||
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- Hauptkonfigurationscheduler.yaml- Zeitgesteuerte Nachrichtenwarnings.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
- Prüfe Python-Version:
python --version(min. 3.8) - Prüfe Dependencies:
pip list - Prüfe Log-Datei:
tail -f logs/meshdd_bot.log
Keine Verbindung zu Meshtastic
- Prüfe Node-IP und Port in
bot_config.yaml - Teste Verbindung:
ping 192.168.11.6 - Prüfe ob Node im Netzwerk-Modus läuft
Wetter funktioniert nicht
- Prüfe Internetverbindung
- Open-Meteo API benötigt keine API-Key
- Prüfe Logs für Fehler
Warnungen funktionieren nicht
- Prüfe Internetverbindung
- Prüfe AGS-Codes in
warnings.yaml - Prüfe
data/warnings_cache.json
📝 Entwicklung
Tests hinzufügen
pip install pytest pytest-asyncio
pytest tests/
Neues Modul erstellen
- Erstelle
modules/mein_modul.py - Importiere in
meshdd_bot.py - 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)
- Meshtastic: https://meshtastic.org
- Open-Meteo API: https://open-meteo.com
- NINA/MOWAS: https://warnung.bund.de
📞 Support
Bei Fragen oder Problemen:
- GitHub Issues
- Dresden Mesh Network Community
MeshDD_Bot - Verbindet Dresden im Mesh! 📡🤖