Renames every type and identifier we built for the solar charge
controller bridge from generic "Solar" naming to the product name
VotronicSolarESP: VanAlignSolarProtocol -> VotronicSolarESPProtocol,
SolarSession -> VotronicSolarESPSession, SolarState ->
VotronicSolarESPState, plus the dependent properties, parameters, and
user-facing discovery/empty-state strings.
Purely a Swift-side rename - the underlying BLE service/characteristic
UUIDs are untouched, so it has no effect on communicating with the
actual firmware. DeviceRole.solar's case name, and DemoData's device
instance variables, are left as-is since they describe the role/demo
device rather than this specific integration code.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CAMPER_DEMO=1 only works when Xcode or simctl launches the process, so
a build installed locally and opened from the home screen had no way
to enable demo mode at all. Demo mode is now also a persisted toggle
under Settings > Entwicklung (Debug builds only), checked alongside the
environment variable. Takes effect after an app restart since
DeviceStore/BluetoothManager only read it at init.
Also mark the demo leveling sensor as live-connected - it had a level
reading but never a live link state, which left the Ausrichtungs-
Assistent button (and Live Activity toggle) disabled in demo mode.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
App:
- New DeviceRole.solar with its own BLE session/protocol/state
(SolarSession, VanAlignSolarProtocol, SolarState), mirroring the
leveling sensor but deliberately not wired into the Live Activity.
- BluetoothManager now keeps an in-memory history per metric (voltage,
current, power) instead of a single primary-metric series; cleared on
app restart by design, not persisted to disk.
- DeviceDetailView shows a channel picker above the history chart when a
device has more than one chartable metric.
- AddDeviceView recognizes the solar service UUID during setup.
- DemoData gets a simulated solar device so the integration can be
checked in the simulator without hardware.
Firmware:
- Add esp32_ble_solar.yaml (Votronic solar charge controller over BLE)
and simulated variants (esp32_ble_sim.yaml, esp32_ble_solar_sim.yaml)
for testing without a vehicle.
- esp32_ble.yaml: set flash_size/psram for the ESP32-S3 N16R8 module.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>