forked from fritob/Camper-Monitor
README aktualisieren: Demo-Modus, Votronic-Quelle, keine persönlichen Pfade
* Demo-Modus-Abschnitt an den tatsächlichen Code angeglichen: Schalter in den Einstellungen (für lokal installierte Builds ohne Xcode) und Umgebungsvariable, beide dokumentiert. * Quelle für den Votronic-Solarregler ergänzt (syssi/esphome-votronic), eigener Abschnitt analog zu Kühlbox/WattCycle. * Persönlichen Pfad aus der Bauanleitung entfernt (open VanControl.xcodeproj statt eines lokalen Nutzerpfads); Beispiel-Bundle-ID im Demo-Modus-Befehl durch Platzhalter ersetzt. Zusätzlich: Symbolliste für Fahrzeugprofile auf Wunsch exakt auf die aus solar-integration zurückgesetzt (car, car.side, suv.side, truck.pickup.side, box.truck, bus), statt sie mit dev_watchs Liste zusammenzuführen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
eed8f33e30
commit
8e5ee6927e
@@ -38,7 +38,7 @@ liegen als `firmware/vanalign/esp32_ble_solar.yaml` im selben Ordner.
|
|||||||
## Bauen und installieren
|
## Bauen und installieren
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
open /Users/fritob/GIT/Camper-Management/VanControl.xcodeproj
|
open VanControl.xcodeproj
|
||||||
```
|
```
|
||||||
|
|
||||||
Dann in Xcode:
|
Dann in Xcode:
|
||||||
@@ -177,6 +177,21 @@ sie mit, was einen Quervergleich zu Batterie und Solarregler erlaubt.
|
|||||||
Protokoll und Feldbelegung stammen aus
|
Protokoll und Feldbelegung stammen aus
|
||||||
[Gruni22/alpicool_ha_ble](https://github.com/Gruni22/alpicool_ha_ble).
|
[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
|
### Nivellierung
|
||||||
|
|
||||||
Der Neigungsmesser [VanAlign Pro](https://github.com/) ist ein ESP32 mit
|
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
|
## Ohne Fahrzeug ansehen
|
||||||
|
|
||||||
Ein Demo-Modus füllt die App mit erfundenen Werten, damit sich die Ansichten
|
Ein Demo-Modus füllt die App mit erfundenen Fahrzeugen und Messwerten, damit
|
||||||
ohne Bluetooth prüfen lassen. In Xcode unter *Product → Scheme → Edit Scheme →
|
sich die Ansichten ohne Bluetooth prüfen lassen. Nur in Debug-Builds, auf zwei
|
||||||
Run → Arguments* die Umgebungsvariable `CAMPER_DEMO` auf `1` setzen. Er greift
|
Wegen einzuschalten:
|
||||||
nur in Debug-Builds.
|
|
||||||
|
|
||||||
Die Watch-App kennt denselben Schalter und braucht dann kein iPhone: Im Schema
|
* **Schalter in den Einstellungen** (*Einstellungen → Entwicklung →
|
||||||
`VanControlWatch` dieselbe Variable setzen. Die Neigung wandert dort
|
Demo-Modus*) – der Weg für einen lokal installierten Build ohne
|
||||||
langsam hin und her, sonst hätte der Ausrichtungs-Assistent nichts zu zeigen.
|
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 <deine-bundle-id>
|
||||||
|
# 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
|
## Protokolle prüfen
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ struct Profile: Identifiable, Codable, Hashable, Sendable {
|
|||||||
|
|
||||||
init(id: UUID = UUID(),
|
init(id: UUID = UUID(),
|
||||||
name: String,
|
name: String,
|
||||||
symbol: String = "box.truck",
|
symbol: String = "suv.side",
|
||||||
trackWidth: Double? = nil,
|
trackWidth: Double? = nil,
|
||||||
wheelbase: Double? = nil) {
|
wheelbase: Double? = nil) {
|
||||||
self.id = id
|
self.id = id
|
||||||
@@ -47,7 +47,6 @@ struct Profile: Identifiable, Codable, Hashable, Sendable {
|
|||||||
/// Alle Namen gegen NSImage(systemSymbolName:) geprüft – ein nicht
|
/// Alle Namen gegen NSImage(systemSymbolName:) geprüft – ein nicht
|
||||||
/// existierendes Symbol lässt SwiftUI stillschweigend auf Text zurückfallen.
|
/// existierendes Symbol lässt SwiftUI stillschweigend auf Text zurückfallen.
|
||||||
static let symbols = [
|
static let symbols = [
|
||||||
"box.truck", "truck.pickup.side", "bus", "bus.doubledecker",
|
"car", "car.side", "suv.side", "truck.pickup.side", "box.truck", "bus",
|
||||||
"car", "car.side", "tent", "sailboat", "house.lodge", "mountain.2",
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ private struct ProfileEditView: View {
|
|||||||
@Environment(\.dismiss) private var dismiss
|
@Environment(\.dismiss) private var dismiss
|
||||||
|
|
||||||
@State private var name = ""
|
@State private var name = ""
|
||||||
@State private var symbol = "box.truck"
|
@State private var symbol = "suv.side"
|
||||||
@State private var trackWidth = ""
|
@State private var trackWidth = ""
|
||||||
@State private var wheelbase = ""
|
@State private var wheelbase = ""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user