diff --git a/README.md b/README.md index 6d73d44..08ead47 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ liegen als `firmware/vanalign/esp32_ble_solar.yaml` im selben Ordner. ## Bauen und installieren ```bash -open /Users/fritob/GIT/Camper-Management/VanControl.xcodeproj +open VanControl.xcodeproj ``` Dann in Xcode: @@ -177,6 +177,21 @@ sie mit, was einen Quervergleich zu Batterie und Solarregler erlaubt. Protokoll und Feldbelegung stammen aus [Gruni22/alpicool_ha_ble](https://github.com/Gruni22/alpicool_ha_ble). +### Votronic-Solarladeregler + +Anders als der Victron-Regler hängt der Votronic-Regler nicht selbst am +BLE-Advertising – er wird über eine eigene, unabhängige ESP32-Bridge +ausgelesen (siehe `firmware/vanalign/esp32_ble_solar.yaml`). Die Bridge +bewirbt ihren eigenen Dienst, wird beim Einrichten also automatisch erkannt +und die Art vorbelegt, genau wie beim Neigungsmesser. + +Die Bridge liest den Regler über dessen Displaylink-Port (UART) mit der +externen ESPHome-Komponente +[syssi/esphome-votronic](https://github.com/syssi/esphome-votronic) aus und +stellt PV-Leistung, PV-Spannung/-Strom, Batteriespannung, Reglertemperatur +sowie Lade- und Reglerstatus über eigene Charakteristiken bereit – reine +Lesewerte, im Takt abgefragt wie beim Neigungsmesser. + ### Nivellierung Der Neigungsmesser [VanAlign Pro](https://github.com/) ist ein ESP32 mit @@ -414,14 +429,31 @@ eingerichtet wurden, wandern beim Update automatisch ins erste Profil. ## Ohne Fahrzeug ansehen -Ein Demo-Modus füllt die App mit erfundenen Werten, damit sich die Ansichten -ohne Bluetooth prüfen lassen. In Xcode unter *Product → Scheme → Edit Scheme → -Run → Arguments* die Umgebungsvariable `CAMPER_DEMO` auf `1` setzen. Er greift -nur in Debug-Builds. +Ein Demo-Modus füllt die App mit erfundenen Fahrzeugen und Messwerten, damit +sich die Ansichten ohne Bluetooth prüfen lassen. Nur in Debug-Builds, auf zwei +Wegen einzuschalten: -Die Watch-App kennt denselben Schalter und braucht dann kein iPhone: Im Schema -`VanControlWatch` dieselbe Variable setzen. Die Neigung wandert dort -langsam hin und her, sonst hätte der Ausrichtungs-Assistent nichts zu zeigen. +* **Schalter in den Einstellungen** (*Einstellungen → Entwicklung → + Demo-Modus*) – der Weg für einen lokal installierten Build ohne + Xcode-Verbindung, etwa auf dem eigenen iPhone. Wirkt erst nach einem + Neustart der App (im App-Umschalter nach oben wischen, dann neu öffnen), + weil `DeviceStore` und `BluetoothManager` den Stand nur beim Start lesen. +* **Umgebungsvariable** `CAMPER_DEMO=1` – in Xcode unter *Product → Scheme → + Edit Scheme → Run → Arguments*, oder im Simulator direkt: + + ```bash + xcrun simctl launch --terminate-running-process booted + # mit SIMCTL_CHILD_CAMPER_DEMO=1 davor + ``` + +Solange der Demo-Modus läuft, schreibt die App nichts in die echte +Geräteliste – Änderungen an den erfundenen Fahrzeugen/Geräten verschwinden +beim Ausschalten wieder. + +Die Watch-App kennt nur den Umgebungsvariablen-Weg und braucht dann kein +iPhone: Im Schema `VanControlWatch` dieselbe Variable setzen. Die Neigung +wandert dort langsam hin und her, sonst hätte der Ausrichtungs-Assistent +nichts zu zeigen. ## Protokolle prüfen diff --git a/Shared/Models/Profile.swift b/Shared/Models/Profile.swift index b7fd2ba..c6ec107 100644 --- a/Shared/Models/Profile.swift +++ b/Shared/Models/Profile.swift @@ -15,7 +15,7 @@ struct Profile: Identifiable, Codable, Hashable, Sendable { init(id: UUID = UUID(), name: String, - symbol: String = "box.truck", + symbol: String = "suv.side", trackWidth: Double? = nil, wheelbase: Double? = nil) { self.id = id @@ -47,7 +47,6 @@ struct Profile: Identifiable, Codable, Hashable, Sendable { /// Alle Namen gegen NSImage(systemSymbolName:) geprüft – ein nicht /// existierendes Symbol lässt SwiftUI stillschweigend auf Text zurückfallen. static let symbols = [ - "box.truck", "truck.pickup.side", "bus", "bus.doubledecker", - "car", "car.side", "tent", "sailboat", "house.lodge", "mountain.2", + "car", "car.side", "suv.side", "truck.pickup.side", "box.truck", "bus", ] } diff --git a/VanControl/Views/ProfilesView.swift b/VanControl/Views/ProfilesView.swift index 171b388..5cc38eb 100644 --- a/VanControl/Views/ProfilesView.swift +++ b/VanControl/Views/ProfilesView.swift @@ -145,7 +145,7 @@ private struct ProfileEditView: View { @Environment(\.dismiss) private var dismiss @State private var name = "" - @State private var symbol = "box.truck" + @State private var symbol = "suv.side" @State private var trackWidth = "" @State private var wheelbase = ""