Scannt das lokale Netzwerk nach Tasmota-WiFi-Steckdosen und zeigt sie in einer Tkinter-Oberfläche
an. Pro Gerät sieht man auf einen Blick, ob es erreichbar ist und welche Firmware-Version es
fährt, und kann ein OTA-Update oder eine Standardkonfiguration (MQTT, NTP, Timezone, Timer, ...)
auslösen – einzeln oder für alle Geräte auf einmal. IP/User/Passwort-Kombos werden verschlüsselt
(Argon2id-Keyderivation + PyNaCl SecretBox) in ~/.config/py-tasmota-update/devices.enc
gespeichert.
- Automatischer Netzwerk-Scan (eigenes Subnetz wird erkannt) beim Start und per Knopfdruck; manuelles Hinzufügen einer IP ist zusätzlich möglich.
- Geräteliste sortiert nach IP, mit Ampel (erreichbar / nicht erreichbar / unbekannt).
- Erkennt automatisch, ob ein Gerät Zugangsdaten braucht (Tasmota-
WebPassword), und zeigt das als Hinweis statt der Firmware-Version an, bis passende Zugangsdaten hinterlegt sind – danach wird sofort neu geprüft. - Fragt beim Start einmal die aktuellste Tasmota-Version von GitHub ab und sperrt den "Update"-Button für Geräte, die diese Version schon fahren (fällt bei fehlendem Internet auf "Button bleibt aktiv" zurück, statt fälschlich zu blockieren).
- "Update"- und "Standardkonfig"-Buttons sind gesperrt, solange die Zugangsdaten für ein Gerät nicht funktionieren.
- "Alle aktualisieren" löst OTA-Updates für alle bekannten Geräte aus und überspringt dabei automatisch die, die schon aktuell sind.
- Zugangsdaten und Standardkonfiguration werden verschlüsselt in einer lokalen Datei gespeichert, geschützt durch ein Master-Passwort, das nur im Speicher gehalten wird.
- Python >= 3.11
- Tk muss als Systempaket installiert sein, damit
import tkinterfunktioniert (ist keine pip-Abhängigkeit), z.B. auf Arch:pacman -S tk.
python -m venv venv
./venv/bin/pip install -e . --group dev./venv/bin/python -m tasmota_updateBeim ersten Start wird ein Master-Passwort festgelegt, mit dem die Config-Datei verschlüsselt wird. Direkt danach startet automatisch ein erster Netzwerk-Scan.
./venv/bin/ruff check .
./venv/bin/mypy
./venv/bin/pytestEin Teil der GUI-Tests (tests/test_app_integration.py) erzeugt echte Tk-Widgets und wird
übersprungen, wenn keine DISPLAY-Umgebung verfügbar ist (z.B. in reinen CI-Containern ohne X11).
src/tasmota_update/
scanner.py Subnetz-Erkennung + paralleler Netzwerk-Scan
tasmota_client.py HTTP-Client für die Tasmota-Kommando-API
firmware_check.py Abfrage der aktuellsten Tasmota-Version (GitHub)
crypto_store.py Verschlüsselte Ablage für Zugangsdaten/Standardkonfig
models.py Datenmodelle (Device, DeviceCredentials, DefaultConfig, ...)
gui/ Tkinter-Oberfläche (Hauptfenster, Dialoge, Geräte-Zeile)
tests/ Tests zu jedem der obigen Module