Summary
VictronConnect exports device settings as .vcsf files. Format verified on VictronConnect v6.x exports (SmartSolar MPPT and SmartShunt); older app versions not tested. On-disk layout:
offset 0..4 magic "VCCFH"
offset 5..8 4-byte header (preserve on re-encode; meaning not fully documented here)
offset 9.. zlib-compressed UTF-8 JSON
Minimal decode:
import json, zlib
raw = open("export.vcsf", "rb").read()
assert raw[:5] == b"VCCFH"
doc = json.loads(zlib.decompress(raw[9:]))
# doc["appversion"], doc["data"]["/Settings/..."], etc.
JSON round-trip decode/re-encode is lossless in local tests when the 4-byte header is copied from the source file. Importing a re-encoded .vcsf back onto a device via VictronConnect is still unverified.
Why this might help here
This repo already reverse-engineers VictronConnect / BLE. .vcsf is the app's settings backup format (not Instant Readout), so this is optional context for anyone decoding exports or comparing charge profiles offline.
Summary
VictronConnect exports device settings as
.vcsffiles. Format verified on VictronConnect v6.x exports (SmartSolar MPPT and SmartShunt); older app versions not tested. On-disk layout:Minimal decode:
JSON round-trip decode/re-encode is lossless in local tests when the 4-byte header is copied from the source file. Importing a re-encoded
.vcsfback onto a device via VictronConnect is still unverified.Why this might help here
This repo already reverse-engineers VictronConnect / BLE.
.vcsfis the app's settings backup format (not Instant Readout), so this is optional context for anyone decoding exports or comparing charge profiles offline.