solar-integration (aus dem separaten VanAligneiOS-Repo) und dev_watch haben unabhängige Git-Historien, decken aber überlappende und sich ergänzende Funktionen ab. Übernommen aus solar-integration: Votronic- Solar-ESP-Anbindung samt Geräterolle, die Live-Activity/Widget-Extension fürs Sperrbildschirm/Dynamic-Island/CarPlay, das Querformat-Layout für Libelle/Fahrzeug-Ansicht und Ausrichtungs-Assistent, sowie die mehreren Fahrzeuggrafik-Stile (Vanster/California). Beibehalten aus dev_watch: alle zusätzlichen Geräteprotokolle (Daly-/JBD-BMS, Alpicool- Kühlbox, WattCycle, Victron), die dort zwischenzeitlich entstanden. Die Xcode-Projektdatei wurde von Hand um die neue Widget-Extension samt SharedActivity-Gruppe erweitert (Datei-synchronisierte Gruppen, kein App-Group-Entitlement nötig). Build für App, Watch und Widget-Extension geprüft (Debug und Release). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Werkzeuge
make-app-icon.swift
Bereitet logo.png zum App-Icon auf. Nötig, weil das Logo als fertige Kachel
vorliegt: mit weißem Rand und eingebrannten runden Ecken. iOS maskiert die
Ecken selbst und verbietet einen Alphakanal – unbearbeitet säße auf dem
Homescreen ein weißer Rahmen um das Icon.
Das Skript schneidet den weißen Rand weg, macht den Ausschnitt quadratisch und versetzt ihn so weit nach innen, bis die vier Ecken im Hintergrund liegen. Anschließend skaliert es auf 1024×1024 ohne Alphakanal.
swiftc -O -o /tmp/make-app-icon Tools/make-app-icon.swift
/tmp/make-app-icon logo.png CamperMonitor/Assets.xcassets/AppIcon.appiconset/AppIcon-1024.png
Nur nötig, wenn logo.png sich ändert – das erzeugte Icon liegt im Repo.
make-vehicle-art.swift
Bereitet die Fahrzeugzeichnungen aus VanAlign Pro für die Neigungsanzeige auf. Die Vorlagen sind weiß gefüllt mit dunklen Linien und Fenstern. Als Schablone eingefärbt ginge beides verloren, weil alles Deckende zur Tintfarbe wird – übrig bliebe eine massive Fläche.
Das Skript übersetzt deshalb die Helligkeit in Deckkraft: dunkle Linien werden voll deckend, die helle Karosserie nur angedeutet. Eingefärbt ergibt das eine gefüllte Form, in der die Details erhalten bleiben.
swiftc -O -o /tmp/make-vehicle-art Tools/make-vehicle-art.swift
sips --resampleHeight 600 heckansicht.png --out /tmp/rear.png
/tmp/make-vehicle-art /tmp/rear.png CamperMonitor/Assets.xcassets/VansterRear.imageset/VansterRear.png
Jedes Fahrzeug-Grafikset (siehe VehicleGraphicStyle) hat sein eigenes
Bildpaar <Name>Side/<Name>Rear. Hat die Vorlage schon einen
transparenten Hintergrund, geht die Quelldatei direkt ins Skript. Liegt sie
auf weißem Grund, muss der Rand vorher weg – sonst wird die ganze Fläche
mitgefärbt.