Implemented a mechanism to force a full UI redraw in the Modbus tool upon successful reconnection to the serial port. The function now sets a flag in the shared status data, which is then detected by the function. Upon detection, clears the screen and removes the flag, ensuring that any stale error messages are cleared and the UI is fully refreshed. Signed-off-by: Eduard Iten <eduard@iten.pro> |
||
|---|---|---|
| .. | ||
| README.de.md | ||
| firmware.bin | ||
| modbus_tool.py | ||
| requirements.txt | ||
README.de.md
Modbus Tool für Bewässerungssystem-Knoten
Dieses Python-Skript bietet eine interaktive Kommandozeilen-Benutzeroberfläche (TUI) zur Steuerung und Überwachung eines Ventil-Knotens des Bewässerungssystems über Modbus RTU.
Features
- Interaktive Benutzeroberfläche: Eine benutzerfreundliche, auf
cursesbasierende Oberfläche, die eine einfache Bedienung ermöglicht. - Live-Statusanzeige: Zeigt tabellarisch und in Echtzeit alle wichtigen Register des Slaves an:
- Ventilstatus (Zustand, Bewegung, Motorstrom)
- Zustand der digitalen Ein- und Ausgänge
- "Clear-on-Read" Taster-Events
- Systemkonfiguration (Öffnungs-/Schließzeiten, Watchdog-Timeout)
- Gerätestatus (Firmware-Version, Uptime)
- Volle Kontrolle: Ermöglicht das Senden von Befehlen zum Öffnen, Schließen und Stoppen des Ventils sowie zum Umschalten der digitalen Ausgänge.
- Konfiguration zur Laufzeit: Die maximalen Öffnungs-/Schließzeiten und der Watchdog-Timeout können direkt in der Oberfläche geändert werden.
- Simulierter Firmware-Upload: Implementiert den vollständigen, in der Dokumentation beschriebenen Firmware-Update-Prozess. Das Tool sendet eine
firmware.bin-Datei in Chunks an den Slave und folgt dem CRC-Verifizierungs-Protokoll.
Installation
Voraussetzungen
- Python 3.x
pip(Python Paket-Installer)
Installation der Abhängigkeiten
Die benötigten Python-Pakete sind in der Datei requirements.txt aufgeführt. Sie können auf zwei Arten installiert werden: global oder in einer virtuellen Umgebung (empfohlen).
Option 1: Installation mit virtueller Umgebung (empfohlen)
Eine virtuelle Umgebung isoliert die Projekt-Abhängigkeiten von Ihrem globalen Python-System, was Konflikte vermeidet.
-
Virtuelle Umgebung erstellen: Führen Sie im Verzeichnis
software/tools/modbus_toolden folgenden Befehl aus, um eine Umgebung im Ordner.venvzu erstellen:python3 -m venv .venv -
Umgebung aktivieren:
- Linux / macOS:
Ihre Shell-Anzeige sollte sich ändern undsource .venv/bin/activate(.venv)am Anfang zeigen. - Windows (cmd.exe):
.venv\Scripts\activate.bat - Windows (PowerShell):
.venv\Scripts\Activate.ps1
- Linux / macOS:
-
Abhängigkeiten installieren: Wenn die Umgebung aktiv ist, installieren Sie die Pakete:
pip install -r requirements.txt -
Umgebung deaktivieren: Wenn Sie fertig sind, können Sie die Umgebung mit folgendem Befehl wieder verlassen:
deactivate
Option 2: Globale Installation (nicht empfohlen)
Wenn Sie keine virtuelle Umgebung verwenden möchten, können Sie die Pakete direkt in Ihrem globalen Python-System installieren.
pip install -r requirements.txt
Verwendung
Stellen Sie sicher, dass das Skript ausführbar ist:
chmod +x modbus_tool.py
Starten Sie das Tool, indem Sie den seriellen Port als Argument übergeben:
./modbus_tool.py /dev/ttyACM0
Ersetzen Sie /dev/ttyACM0 durch den korrekten Port Ihres Geräts.
Kommandozeilen-Argumente
port: (Erforderlich) Der serielle Port (z.B./dev/ttyACM0oderCOM3).--baud: Die Baudrate (Standard:19200).--slave-id: Die Modbus Slave ID des Geräts (Standard:1).--interval: Das Abfrageintervall für den Status in Sekunden (Standard:1.0).
Bedienung der Oberfläche
- Navigation: Verwenden Sie die Pfeiltasten (↑/↓), um zwischen den Menüpunkten zu navigieren.
- Auswählen: Drücken Sie Enter, um den ausgewählten Befehl auszuführen.
- Werte eingeben: Bei Aktionen wie "Set Watchdog" werden Sie zur Eingabe eines Wertes aufgefordert. Geben Sie den Wert ein und bestätigen Sie mit Enter.
- Firmware Update: Diese Funktion startet den Upload der Datei
firmware.binaus dem aktuellen Verzeichnis. Während des Updates wird eine Fortschrittsanzeige dargestellt. - Beenden: Wählen Sie den Menüpunkt "Exit" und drücken Sie Enter.