103 lines
4.1 KiB
Markdown
103 lines
4.1 KiB
Markdown
<img src="../../../docs/img/logo.svg" alt="Logo" width="100"/>
|
|
|
|
# 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 `curses` basierende 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.
|
|
|
|
1. **Virtuelle Umgebung erstellen:**
|
|
Führen Sie im Verzeichnis `software/tools/modbus_tool` den folgenden Befehl aus, um eine Umgebung im Ordner `.venv` zu erstellen:
|
|
```bash
|
|
python3 -m venv .venv
|
|
```
|
|
|
|
2. **Umgebung aktivieren:**
|
|
- **Linux / macOS:**
|
|
```bash
|
|
source .venv/bin/activate
|
|
```
|
|
Ihre Shell-Anzeige sollte sich ändern und `(.venv)` am Anfang zeigen.
|
|
- **Windows (cmd.exe):**
|
|
```bash
|
|
.venv\Scripts\activate.bat
|
|
```
|
|
- **Windows (PowerShell):**
|
|
```powershell
|
|
.venv\Scripts\Activate.ps1
|
|
```
|
|
|
|
3. **Abhängigkeiten installieren:**
|
|
Wenn die Umgebung aktiv ist, installieren Sie die Pakete:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
4. **Umgebung deaktivieren:**
|
|
Wenn Sie fertig sind, können Sie die Umgebung mit folgendem Befehl wieder verlassen:
|
|
```bash
|
|
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.
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Verwendung
|
|
|
|
Stellen Sie sicher, dass das Skript ausführbar ist:
|
|
```bash
|
|
chmod +x modbus_tool.py
|
|
```
|
|
|
|
Starten Sie das Tool, indem Sie den seriellen Port als Argument übergeben:
|
|
|
|
```bash
|
|
./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/ttyACM0` oder `COM3`).
|
|
- `--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.bin` aus dem aktuellen Verzeichnis. Während des Updates wird eine Fortschrittsanzeige dargestellt.
|
|
- **Beenden:** Wählen Sie den Menüpunkt **"Exit"** und drücken Sie **Enter**. |