Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tasmota-update

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.

Funktionen

  • 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.

Voraussetzungen

  • Python >= 3.11
  • Tk muss als Systempaket installiert sein, damit import tkinter funktioniert (ist keine pip-Abhängigkeit), z.B. auf Arch: pacman -S tk.

Setup

python -m venv venv
./venv/bin/pip install -e . --group dev

Starten

./venv/bin/python -m tasmota_update

Beim ersten Start wird ein Master-Passwort festgelegt, mit dem die Config-Datei verschlüsselt wird. Direkt danach startet automatisch ein erster Netzwerk-Scan.

Qualitätssicherung

./venv/bin/ruff check .
./venv/bin/mypy
./venv/bin/pytest

Ein 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).

Projektstruktur

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

About

Network scanner and Tkinter GUI for managing Tasmota WiFi devices — OTA updates, default config rollout, encrypted credential storage.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages