forked from fritob/Camper-Monitor
DeviceRole-Fälle für Victron- und Votronic-Solar eindeutig benennen
.solarCharger und .solar sahen im Code zu ähnlich aus, um auf einen Blick zu erkennen, welches der Victron-Solarladeregler (passives BLE-Advertisement) und welches der Votronic-Solarladeregler (aktive GATT-Verbindung über die ESP32-Bridge) ist. Jetzt .victronSolarCharger und .votronicSolar, samt allen abgeleiteten Bezeichnern in DemoData, WatchDemo und Tests. Die rawValues bleiben "solarCharger"/"solar", damit bereits gespeicherte Geräte beim Decodieren nicht auf einen unbekannten Rollen-Wert treffen. VictronAdvertisement.RecordType.solarCharger (das rohe Protokollfeld) bleibt unverändert – schon durch den Typnamen eindeutig, und passend zur offiziellen Victron-Bezeichnung des Datensatztyps. run-tests.sh fehlten VehicleGraphicStyle.swift und VehicleTilt.swift, seit ConfiguredDevice sie referenziert – ergänzt, Testlauf grün. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e9b9c5bcd5
commit
83ea85f3b8
@@ -4,36 +4,46 @@ import Foundation
|
||||
/// welche Kennzahl als "Hauptwert" auf der Kachel gross dargestellt wird.
|
||||
enum DeviceRole: String, Codable, CaseIterable, Identifiable, Sendable {
|
||||
case chargeBooster
|
||||
case solarCharger
|
||||
/// Victron-Solarladeregler (SmartSolar/BlueSolar MPPT), passiv über das
|
||||
/// verschlüsselte BLE-Advertisement gelesen.
|
||||
///
|
||||
/// Der rawValue bleibt `"solarCharger"`, damit bereits gespeicherte
|
||||
/// Geräte beim Decodieren nicht auf einen unbekannten Rollen-Wert
|
||||
/// treffen – siehe `ConfiguredDevice.init(from:)`.
|
||||
case victronSolarCharger = "solarCharger"
|
||||
case batteryMonitor
|
||||
case bms
|
||||
case fridge
|
||||
case leveling
|
||||
case solar
|
||||
/// Votronic-Solarladeregler, über eine ESP32-Bridge per GATT-Verbindung
|
||||
/// angesprochen (siehe `VotronicSolarESPSession`).
|
||||
///
|
||||
/// Der rawValue bleibt `"solar"`, siehe `victronSolarCharger` oben.
|
||||
case votronicSolar = "solar"
|
||||
|
||||
var id: String { rawValue }
|
||||
|
||||
var title: String {
|
||||
switch self {
|
||||
case .chargeBooster: return "Ladebooster"
|
||||
case .solarCharger: return "Solarladeregler"
|
||||
case .batteryMonitor: return "Batteriemonitor"
|
||||
case .bms: return "Batterie / BMS"
|
||||
case .fridge: return "Kühlbox"
|
||||
case .leveling: return "Nivellierung"
|
||||
case .solar: return "VotronicSolarESP"
|
||||
case .chargeBooster: return "Ladebooster"
|
||||
case .victronSolarCharger: return "Solarladeregler"
|
||||
case .batteryMonitor: return "Batteriemonitor"
|
||||
case .bms: return "Batterie / BMS"
|
||||
case .fridge: return "Kühlbox"
|
||||
case .leveling: return "Nivellierung"
|
||||
case .votronicSolar: return "VotronicSolarESP"
|
||||
}
|
||||
}
|
||||
|
||||
var symbol: String {
|
||||
switch self {
|
||||
case .chargeBooster: return "bolt.car"
|
||||
case .solarCharger: return "sun.max"
|
||||
case .batteryMonitor: return "gauge.with.dots.needle.bottom.50percent"
|
||||
case .bms: return "battery.100percent.bolt"
|
||||
case .fridge: return "refrigerator"
|
||||
case .leveling: return "level"
|
||||
case .solar: return "sun.max"
|
||||
case .chargeBooster: return "bolt.car"
|
||||
case .victronSolarCharger: return "sun.max"
|
||||
case .batteryMonitor: return "gauge.with.dots.needle.bottom.50percent"
|
||||
case .bms: return "battery.100percent.bolt"
|
||||
case .fridge: return "refrigerator"
|
||||
case .leveling: return "level"
|
||||
case .votronicSolar: return "sun.max"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +63,7 @@ enum DeviceRole: String, Codable, CaseIterable, Identifiable, Sendable {
|
||||
/// braucht eine echte GATT-Verbindung.
|
||||
var transport: DeviceTransport {
|
||||
switch self {
|
||||
case .bms, .fridge, .leveling, .solar: return .connect
|
||||
case .bms, .fridge, .leveling, .votronicSolar: return .connect
|
||||
default: return .advertisement
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user