This commit introduces configurable obstacle detection thresholds for the valve, allowing them to be set and persisted via the Zephyr settings subsystem and controlled through the shell and Modbus tool.
- `software/lib/valve/Kconfig`: Added new Kconfig options `VALVE_OBSTACLE_THRESHOLD_OPEN_MA` and `VALVE_OBSTACLE_THRESHOLD_CLOSE_MA` for compile-time configuration and default values.
- `software/include/lib/valve.h`: Removed hardcoded defines and added API functions for setting and getting obstacle thresholds.
- `software/lib/valve/valve.c`:
- Updated `valve_work_handler` to use the new configurable obstacle thresholds.
- Integrated loading and saving of obstacle thresholds via the settings subsystem in `valve_init`.
- Implemented the new setter and getter functions for obstacle thresholds.
- Updated the `LOG_INF` message in `valve_init` to display the new obstacle threshold values.
- `software/apps/slave_node/prj.conf`: Added default values for the new Kconfig options.
- `software/lib/shell_valve/shell_valve.c`: Added new shell commands `valve set_obstacle_open` and `valve set_obstacle_close` to modify the obstacle thresholds, and updated `valve show` to display them.
- `software/tools/modbus_tool/modbus_tool.py`:
- Defined new Modbus holding registers (`REG_HOLDING_OBSTACLE_THRESHOLD_OPEN_MA`, `REG_HOLDING_OBSTACLE_THRESHOLD_CLOSE_MA`).
- Updated `poll_status` to read these new registers.
- Modified the `main_menu` to include "Set Obstacle Open" and "Set Obstacle Close" options in the settings menu, allowing users to view and modify these parameters.
- `software/lib/modbus_server/modbus_server.c`:
- Updated `holding_reg_rd` to read the new obstacle threshold registers.
- Updated `holding_reg_wr` to write to the new obstacle threshold registers.
- Removed incorrect `REG_HOLDING_END_CURRENT_THRESHOLD_OPEN_MA` and `REG_HOLDING_END_CURRENT_THRESHOLD_CLOSE_MA` cases from `input_reg_rd`.
- `software/include/lib/modbus_registers.h`: Created a new header file to centralize Modbus register definitions, which were previously hardcoded in `modbus_tool.py`.
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.