Sauberes v2-Toolset für MSR2 auf Raspberry Pi:
- CLI v2 (lesen/decodieren)
- TUI v2 (anzeigen + schreiben)
- Backup v2 (vollständige Sicherung)
Projektstruktur (aktuell):
dachs_cli_v2.py→ CLI v2dachs_cli_writer_tui_v2.py→ TUI v2dachs_backup_v2.py/msr_backup_v2.py→ Backup v2core/→ Core + Auth + Pack/Format/Labelsknx/→ KNX-Tools (v2)
sudo apt update
sudo apt install -y python3 python3-venv python3-pip python3-serial gitOptional (nur wenn nötig):
sudo usermod -aG dialout $USER
# danach neu einloggengit clone git@github.com:x3muha/dachs-cli.git
cd dachs-clipython3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install xknxpython3 dachs_cli_v2.py --help
python3 dachs_cli_writer_tui_v2.py --help
python3 dachs_backup_v2.py --helpKurzbeschreibung:
- Liest MSR2-Blöcke roh oder dekodiert.
- Nutzt Pack/Format aus
core/(v2-Standard).
Global
--portSerial-Port (Default:/dev/ttyUSB0)--baudBaudrate (Default:19200)
Commands
-
watch-link--countAnzahl Zyklen--intervalPause zwischen Zyklen--rx-timeoutTimeout
-
read-block--blockBlock-ID (Pflicht)--packetStart-PN--rx-timeoutTimeout
-
readall--blocksCSV-Liste Blöcke--loopsAnzahl Durchläufe--intervalStandardpause--wait-between-blocksexplizite Blockpause--rx-timeoutTimeout
-
readall-decoded--blocksCSV-Liste Blöcke--loopsAnzahl Durchläufe--interval/--wait-between-blocks--rx-timeout--pack-fileoptionales Pack-Override--pack-revPack-Revision (Default50)--labels-fileoptionales Label-Override--show-reservedreservierte Felder anzeigen--text-onlynur Labels--key-onlynur Keys--show-msr-menu-codeHandbuchcode anzeigen
# Einzelblock roh lesen
python3 dachs_cli_v2.py --port /dev/ttyUSB0 --baud 19200 read-block --block 20 --rx-timeout 0.9
# Dekodiert lesen (Hauptblöcke)
python3 dachs_cli_v2.py --port /dev/ttyUSB0 --baud 19200 readall-decoded --blocks 20,22,24 --loops 1 --pack-rev 50 --rx-timeout 0.9Kurzbeschreibung:
- Interaktive Ansicht/Editor für Blöcke.
- Blockwechsel, Raw-Mode, Save/Reload, Auth-Flow.
--portSerial-Port--baudBaudrate--blockStartblock (Pflicht)--all-blocksbekannte Blöcke laden (schneller Wechsel)--auth-levelAuth-Level (Default5)--auth-pass4PW4 manuell--rx-timeoutTimeout--wait-between-blocksPause zwischen Blockreads--pack-fileoptionales Pack-Override (sonst Auto-Detect)--pack-revPack-Revision (Default50)--dry-runWrites simulieren--show-reservedreservierte Felder anzeigen--hide-nameName-Spalte ausblenden--hide-objectObjekt-Spalte ausblenden--no-hexHEX-Bereich unten ausblenden
# Standard TUI
python3 dachs_cli_writer_tui_v2.py --port /dev/ttyUSB0 --baud 19200 --block 18 --all-blocks --pack-rev 50 --rx-timeout 0.9
# TUI mit mehr Platz für Werte
python3 dachs_cli_writer_tui_v2.py --port /dev/ttyUSB0 --baud 19200 --block 18 --all-blocks --hide-name --hide-object --pack-rev 50 --rx-timeout 0.9
# Dry-Run (kein echter Write)
python3 dachs_cli_writer_tui_v2.py --port /dev/ttyUSB0 --baud 19200 --block 22 --all-blocks --dry-run --pack-rev 50↑/↓,PgUp/PgDnFeldnavigation←/→BlockwechselEnterEditF2/sSpeichernF4/rReloadF6Raw-ModenName-Spalte toggleoObjekt-Spalte toggleEsc/q/F10Beenden
Kurzbeschreibung:
- Vollbackup mit Auth, Retry, optional Decode.
- Geeignet für Vergleich/Archivierung.
--portSerial-Port--baudBaudrate--rx-timeoutTimeout--pause-between-passesPause zwischen Pass1/Pass2--pause-between-blocksPause zwischen Blöcken--wait-between-blocksAlias für--pause-between-blocks--blocksCSV-Blockliste (sonst alle aus Pack)--pack-filePack-Override--pack-revRevision (Default50)--outputAusgabedatei--no-decodenur Rohdaten--auth-levelDefault5(<0= ohne Auth)--auth-pass4PW4 manuell--no-flush-before-readkein Flush vor Read--retry-on-timeoutRetries je Block
# Voller Backup-Lauf (empfohlen)
python3 dachs_backup_v2.py --port /dev/ttyUSB0 --baud 19200 --rx-timeout 0.9 --auth-level 5 --retry-on-timeout 3 --pause-between-blocks 0.05 --pause-between-passes 0.2 --pack-file core/msr2_pack_master_version.json --pack-rev 50 --output msr_backup_$(date +%Y%m%d_%H%M%S)_full.json
# Nur Rohdaten
python3 dachs_backup_v2.py --port /dev/ttyUSB0 --pack-rev 50 --no-decode --output msr_backup_raw.jsondachs_cache_reader_v2.pyschreibtcache/dachs_cache_v2.jsonals Quelle für den KNX-Daemon.
In knx/config/knx_dachs_daemon_config_v2.json:
cache_reader.mode: "every"→ lesen, warteninterval_s, wieder lesencache_reader.mode: "loop"→ lesen, Ende, sofort wieder lesen
cache_reader.interval_s wird für mode: "every" verwendet (Default 60s).