Es stimmt… jetzt hab ich wieder --pkg 55… so ein Dreck!
Ankündigung
Einklappen
Keine Ankündigung bisher.
OpenKNX KnxFileTransferClient
Einklappen
X
-
Aber nur für die Geräte auf der anderen Linie. Ja, das mit der APDU ist vielen nicht klar, weil die ETS das auch intern behandelt. Aber ein Paket darf maximal so lang sein wie das Minimum der APDUs aller an der Kommunikation beteiligten Geräte. Beispiel:- IP-Schnittstelle: APDU 220
- LK1: APDU 23
- LK2: APDU 230
- Zielgerät: APDU 250
.
Gruß, Waldemar
Kommentar
-
Du musst einfach nur einmal den KnxFiletransfer mit der option aufrufen und dazu die config angeben, in welche sie gespeichert werden soll.Zitat von jhaeberle Beitrag anzeigenWie aktualisiert man eine Konfig? Ich würde gerne die Option --connect Tunneling in eine existierende Konfig aufnehmen, hab aber keine Idee wie und finde auch keine Anleitung dazu.
Wenn --config angegeben ist, wird nach der Datei gesucht und die Parameter als default geladen.
Danach werden die im Aufruf angegeben Parameter ausgewertet.
Zum Schluss wir der aktuelle stand dann wieder in der config gespeichert.
Kommentar
-
Hm das verwirrt doch nur die meisten.
Evtl könnten wir ein Testpaket schicken und so prüfen, ob die pkg korrekt ist?
Es gibt ein paar Werte, die werden nicht in der config gespeichert. Ich glaube die pkg gehört dazu.
Kommentar
-
Das hatte ich gehofft, aber das mit dem Speichern der neuen Werte hat so nicht stattgefunden.Zitat von thewhobox Beitrag anzeigenDu musst einfach nur einmal den KnxFiletransfer mit der option aufrufen und dazu die config angeben, in welche sie gespeichert werden soll.
Wenn --config angegeben ist, wird nach der Datei gesucht und die Parameter als default geladen.
Danach werden die im Aufruf angegeben Parameter ausgewertet.
Zum Schluss wir der aktuelle stand dann wieder in der config gespeichert.
Kommentar
-
Ich hab da mal einen PowerShell-Script gemacht. Mit Hilfe von Gemmini 3... Damit kann man relativ einfach mehrere OpenKNX-Geräte updaten UND dabei unterschiedliche Pkg-Konfigurationen pro Linie verwalten. Für mich funktioniert's, vielleicht hilft es ja noch jemandem:
Beispiele:
Code:.\KnxFirmwareUpdate.ps1 -type PM -pa 1.2.1 .\KnxFirmwareUpdate.ps1 -type RoundT -pa 1.4.5 -fw C:\firmware\custom.uf2 -force .\KnxFirmwareUpdate.ps1 -type PM -pa 1.2.1 -DryRun
Speichern als ~/bin/KnxFirmwareUpdate.ps1
Code:<# .SYNOPSIS Führt ein Firmware-Update für OpenKNX Geräte via KnxFileTransferClient aus. .DESCRIPTION Automatisiert die Auswahl der richtigen Firmware-Datei, Parameter und Paketgröße abhängig vom Gerätetyp und der angesprochenen Linie. Die Default-Werte für das Gateway und den Port können im param( Bereich angepasst werden, oder als Parameter übergeben werden. Es ist möglich, für die Hauptlinie eine andere Paketgröße zu verwenden als für Sublinien, falls der/die verwendete/n Linienkoppler eine andere paketgröße unterstützt als das Gateway. Diese Einstellungen finden sich bei # Paketgröße (packageSize) bestimmen Um die OpenKNX-Geräte anzupassen oder zu erweitern, sind zwei Schritte nötig: - Im param-Bereich, im ValidateSet die gewünschten Optionen als Werte für den "type"-Parameter - Für jeden type-Wert im $deviceConfig-Hash den absoluten Pfad zur korrekten FirmwareDatei eintragen .PARAMETER type Gerätetyp: PM oder RoundT .PARAMETER pa Physikalische Adresse (z.B. 1.2.1) .PARAMETER fw Absoluter Pfad zur Firmware-Datei (optional, Standard je nach Gerätetyp) .PARAMETER gw KNX Gateway IP (optional, Standard: 192.168.178.89) .PARAMETER port Gateway-Port (optional, Standard: 3671) .PARAMETER delay Zeitverzögerung in ms (optional, Standard: 300) .PARAMETER force Update ohne Rückfrage ausführen .PARAMETER DryRun Zeigt nur die Kommandozeile, führt nichts aus! .EXAMPLE .\KnxFirmwareUpdate.ps1 -type PM -pa 1.2.1 .\KnxFirmwareUpdate.ps1 -type RoundT -pa 1.4.5 -fw C:\firmware\custom.uf2 -force .\KnxFirmwareUpdate.ps1 -type PM -pa 1.2.1 -DryRun #> [CmdletBinding()] param( [Parameter(Mandatory=$true, HelpMessage="Gerätetyp: PM oder RoundT")] [ValidateSet("PM", "RoundT")] # Hier alle zu unterstützenden Geräte als Kürzel eintragen, dann weiter unten die $deviceConfig anpassen! [string]$type, [Parameter(Mandatory=$true, HelpMessage="Physikalische Adresse, z.B. 1.2.1")] [ValidatePattern("^\d+\.\d+\.\d+$")] [string]$pa, [Parameter(HelpMessage="Absoluter Pfad zur Firmware-Datei (optional)")] [string]$fw, [Parameter(HelpMessage="Gateway-IP (optional)")] [string]$gw = "192.168.178.89", [Parameter(HelpMessage="Gateway-Port (optional)")] [int]$port = 3671, [Parameter(HelpMessage="Verzögerung in ms (optional)")] [int]$delay = 300, [Parameter(HelpMessage="Ohne Rückfrage ausführen")] [switch]$force, [Parameter(HelpMessage="Hilfe anzeigen")] [Alias("?")] [switch]$help, [Parameter(HelpMessage="Nur Kommando anzeigen, nichts ausführen")] [switch]$DryRun ) if ($help) { Get-Help -Detailed $MyInvocation.MyCommand.Path exit } # Gerätekonfiguration. Hier für jeden "type" von oben den absoluten Pfad zur Firmware hinterlegen. $deviceConfig = @{ "PM" = @{ DefaultFirmware = "C:\Users\joche\OneDrive\Documents\openKNX\Storage\RaumController-Release-5.1.5\Firmware\AB-SmartHouse-PresenceMultiSensor\firmware-AB-SmartHouse-PresenceMultiSensor.uf2" Description = "Presence Multi Sensor" } "RoundT" = @{ DefaultFirmware = "C:\Users\joche\OneDrive\Documents\openKNX\Storage\TouchRound-Release-1.2.2\Firmware\TouchRound-RP2350\firmware-TouchRound-RP2350.uf2" Description = "RoundTouch" } } # Paketgröße (packageSize) bestimmen if ($pa -like "1.2.*" -or $pa -like "1.3.*") { $packageSize = 52 Write-Host "Paketgröße: 55 (1.2.x/1.3.x Adresse erkannt)" -ForegroundColor Cyan } else { $packageSize = 128 Write-Host "Paketgröße: 128 (andere Adresse)" -ForegroundColor Cyan } # Firmware-Datei bestimmen if ($fw) { $firmwareFile = $fw } else { $firmwareFile = $deviceConfig[$type].DefaultFirmware } # Prüfung ob Firmware-Datei existiert if (-not (Test-Path $firmwareFile)) { Write-Error "Firmware-Datei '$firmwareFile' wurde nicht gefunden!" exit 1 } # Kommando zusammenbauen $command = "$HOME/bin/KnxFileTransferClient fwupdate --port $port --gw $gw --delay $delay --pkg $packageSize --connect Tunneling --pa $pa `"$firmwareFile`"" Write-Host "`n=== KNX Firmware Update ===" -ForegroundColor Magenta Write-Host "Gerät: $type ($($deviceConfig[$type].Description))" Write-Host "Phys. Adresse: $pa" Write-Host "Firmware: $firmwareFile" Write-Host "Gateway: $gw`:$port" Write-Host "`nBefehl:" -ForegroundColor Green Write-Host $command -ForegroundColor Yellow if ($DryRun) { Write-Host "`n[DryRun] Es wird NICHTS am System ausgeführt!" -ForegroundColor Red exit } # Befehl ausführen if ($force) { Write-Host "`nFühre Befehl aus (force-Modus)..." -ForegroundColor Red Invoke-Expression $command } else { $confirmation = Read-Host "`nBefehl ausführen? (j/N)" if ($confirmation -eq "j" -or $confirmation -eq "J") { try { Write-Host "`nFirmware-Update gestartet!" -ForegroundColor Green Invoke-Expression $command } catch { Write-Error "Fehler beim Ausführen: $($_.Exception.Message)" } } else { Write-Host "Befehl abgebrochen." -ForegroundColor Red } }
Gruß,
Jochen
Kommentar
-
Das ist halt auch nur für ne feste FW Version.
Da ich mit Powershell gut kann, geht es auch ohne ganz schnell.
Befehle eingeben, alles drin bis auf die PA.
Nach dem erfolgreichen durchlaufen einfach mit der Pfeiltaste nach oben den letzten Befehl holen und dir andere PA eingeben.
Kommentar
-
Könnt ihr mir weiterhelfen?
Ich habe versucht mittels Rechtsklick auf "KNX-Upload-Firmware.ps1" und "mittels Powershell ausführen" ein Firmwareupdate auszuführen.
Ich verwende den KnxFileTransfer V0.2.8 .
Es gibt keine Linienkoppler oder ähnliches.
---
Code:Open ■ ┬────┴ KnxFileTransferClient ■ KNX Version Client: 0.2.8 Version Client.Lib: 0.1.7 Werte in Klammern sind default Bei leerer Eingabe wird default übernommen PA des Geräts: (1.12.27): 1 Tunneling v1 -> 192.168.28.32:3671 (2.1.16 ) [KNX IP Interface 730] Es wurden 1 Gateways gefunden Gateway Auswählen (Index): 1 Die Verbindung funktioniert möglicherweise nicht, da die Linien unterschiedlich sind. IP-Adresse: 192.168.28.32 IP-Port: 3671 PA: 1.12.27 Info: Verbindung zum Bus hergestellt Info: PA der Schnittstelle ist 2.1.112 Info: Verbindung zum KNX-Gerät 1.12.27 hergestellt Info: Gerät MaxAPDU: 254 Info: Verwende MaxAPDU: 254 Info: Verwende Package: 128 Version Remote: 0.1.4 Info: Die Firmware wird komprimiert übertragen! Version UF2: 0xA012 5.1.13 Version Device: 0xA012 5.1.5 File: Passe Firmware für Übertragung an... Size: 638464 Bytes (623 kB) original Size: 422490 Bytes (412 kB) komprimiert Info: Datei ist leer Info: Dateigröße: 422490 bytes Error (01) [22.01.2026 15:53:36]: TunnelingConfirmation timed out #XX:10 Info: Warte 3s... Error (02) [22.01.2026 15:53:42]: TunnelingConfirmation timed out #XX:11 Info: Warte 3s... Error (03) [22.01.2026 15:53:48]: TunnelingConfirmation timed out #XX:12 Info: Warte 3s... Error (04) [22.01.2026 15:53:54]: TunnelingConfirmation timed out #XX:13 Error [22.01.2026 15:53:54]: To many errors Upload fehlgeschlagen. Breche Update ab ProcessExit - Verbindung wird geschlossen...
Kommentar
-
Was mich irritiert, ist die Meldung "Info: Datei ist leer". Allerdings wird die FW ja erfolgreich komprimiert.Zitat von habreli Beitrag anzeigenKönnt ihr mir weiterhelfen?
Ich habe versucht mittels Rechtsklick auf "KNX-Upload-Firmware.ps1" und "mittels Powershell ausführen" ein Firmwareupdate auszuführen.
Ich verwende den KnxFileTransfer V0.2.8 .
Es gibt keine Linienkoppler oder ähnliches.
Ansonsten würde ich inzwischen mit der Package-Size experimentieren, das war's bei mir bisher immer…😅
Dazu musst du allerdings entweder das PS1-Skript anpassen oder das Kommando über die Powershell aufrufen, da die Package-Size interaktiv nicht abgefragt wird.
Kommentar
-
Also man kann eine FW als Parameter übergeben, aber das wäre nicht mein Ansinnen. Wenn an eine Reihe unterschiedlicher Geräte updaten will, vlt so Raum für Raum, dann finde ich das hilfreich.Zitat von thewhobox Beitrag anzeigenDas ist halt auch nur für ne feste FW Version.
Da ich mit Powershell gut kann, geht es auch ohne ganz schnell.
Befehle eingeben, alles drin bis auf die PA.
Nach dem erfolgreichen durchlaufen einfach mit der Pfeiltaste nach oben den letzten Befehl holen und dir andere PA eingeben.
Aber klar, jedem das seine 😅.
Kommentar
-
jhaeberle die Info, dass die Datei leer ist, betrifft die Datei auf dem remote Gerät.
Der Befehl zum Starten des upload geht durch, alle weiteren Telegramme nicht.
Somit wird die Datei nicht gefüllt.
Damit ist klar, dass dein Interface die package Größe nicht abkann
Also mit - - pkg verschiedene Werte testen. Oft klappt 52.
Du hast zufällig ein Weinzierl Interface?
Kommentar
-
-
Der CRC Fehler wurde am Ende ausgegeben. Da werden local und remote Datei verglichen.Zitat von thewhobox Beitrag anzeigenCRC Missmatch oder erst am Ende den Fehler?
Kommentar


Kommentar