HA-Fixes 09.09.: Preis-Vorschau, Watchdog, Ford-Erkennung, Kosten-Peaks (HE#22)

# HA-Fixes 09.09. (HE#22, home-energy 5147898)

Nachträglich zu `ladeplanung.yaml` v3.6. Deploy per paramiko (`/tmp/kilo/deploy_he.py`), Backups `*.bak-20260909` auf der Box. 2 HA-Core-Restarts nötig (REST-Sensor braucht Neustart; Registry-Cleanup via Websocket `config/entity_registry/remove`).

## 1. Preis-Vorschau (awattar_morgen) — Ursache + Fix
- **Ursache:** Der alte command_line-Sensor lief stündlich korrekt, aber das value_template gab für "keine Daten" (morgens vor ~13:30, awattar published Sep-10 erst ~13:30 CEST) den **String 'unknown'** zurück. Der HA-Sensor-Parser versucht int()/float() auf den State und verwirft das Update (`ValueError: could not convert string to float`) → alter Wert blieb für immer stehen.
- **Fix:** REST-Sensor `sensor.awattar_morgen_daten` (resource_template für morgen-Fenster, stündlich) + Template-Sensor `sensor.awattar_morgen` (State: min/10 oder none→unknown; `data`-Attribut wird durchgereicht — Dashboard-JS liest `attributes.data`!). Vor ~13:30 zeigt die Vorschau sauber "unbekannt".
- **Nebenbug behoben:** Planner-Merges (rohdaten+morgen) hatten nach 13:30 Duplikat-Stunden → `| unique(attribute='start_timestamp')` in allen 6 Merges.

## 2. go-e Watchdog gesplittet
- Alter Watchdog feuerte Fehlalarme bei car=Complete + stille wh (Normalzustand "angesteckt, will nicht") — 5 Pushes am 08.09. abends, alle falsch.
- Neu: `goe_integrations_watchdog` = Freeze-Verdacht NUR bei car=**Charging** + wh-Update >30 min.
- Neu: `goe_watcher_auto_fordert_keine_ladung` = car=Complete + Bedarf >1 kWh → Hinweis (beim Übergang, +30 min stabil, und täglich 09:05 — kein Spam). MG darf abends aufhören; der Watcher will nur daran erinnern, SoC-Ist zu aktualisieren bzw. Ladeziel im Auto zu prüfen.

## 3. Ford-Erkennung: manuell
- **Elektrisch nicht unterscheidbar:** Ford 6A 3-ph ≈ 3,96 kW; MG4 (3-phasig, psm=Force-3-Phase) 6A ≈ 4,0 kW → alte Heuristik markierte die MG-Session am 08.09. 16:07 als Ford (frc=2, falsche SoC-Buchung).
- **Neu:** `input_boolean.ford_an_der_box` (Dashboard). Default off = MG. **Beim Ford-Anstecken Schalter setzen**, Auto-Reset beim Abstecken (ladesession_reset + soc_laufend-Abzweig). `binary_sensor.ford_ladt` greift nur noch bei Schalter=an ins Ford-Band. `session_war_ford` entfernt (Registry sauber, keine Leiche).

## 4. Pushes doze-sicher
- Kritische Automations (Watchdog, kein-Ladung-Watcher, Stall-Alarm, Ford-Ladestopp-Alarm): `data: {priority: high, ttl: 0, channel: alarm, importance: high}` + zusätzlich `persistent_notification.create` in HA-UI.
- Offener Punkt: Android-Kanal "alarm" im Companion-App-Verlauf prüfen; in der Nacht 08./09. kamen nach 21:45 keine Pushes an (Handy offline/Doze) — der Stall-Alarm lief 02:15–03:00 korrekt, nur die Zustellung scheiterte.

## 5. Stromkosten-Peaks behoben
- **Ursache (bewiesen):** MQTT-Zähler `sensor.smart_meter_gesamtbezug` kippt ~täglich für genau einen 10-s-Zyklus auf unavailable→unknown (z. B. 08.09. 12:26:49). Template `Strombezug 24h` rechnete mit float(0) → 0 − 41,6 Mio = −41,5 Mio W → `Stromkosten Tag` −11.770 €, `Stromkosten 30 Tage` analog.
- **Fix:** Plausibilitäts-Guard in beiden Kosten-Templates (bezug/einsp < −1000 oder absurd groß → letzter Wert halten). Die dyna-Kosten (stromkosten_dyna_tag/monat) waren immun (max(0,delta)).
- Offen: Ursache des Zähler-Flickers (vermutlich P1-Bridge/MQTT-Reconnect am Mittag) — nur Symptom behoben.

## Verifikation 09.09. ~08:10
33 Automations aktiv, 0 Fehler im Systemlog, alle Kosten-/Plan-/go-e-Sensoren plausibel. MG lädt seit 07:48 wieder (awattar-Fenster).

## Beobachtung Nacht 08./09.
MG hat über Nacht NICHT geladen (Smart-Meter: Basislast 0,5–1,5 kW) — korrekt laut Jan (Auto wollte nicht, abends fertig). car=Complete seit 17:05, nach 7,0 kWh Session.

id: 8053e1fe396c48f2aa6b6fce75b50675
parent_id: e8dd2ad238644e4492e71969d873f4fc
created_time: 2026-09-09T06:12:55.878Z
updated_time: 2026-09-09T06:12:55.878Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: 
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1788934375878
user_created_time: 2026-09-09T06:12:55.878Z
user_updated_time: 2026-09-09T06:12:55.878Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
is_locked: 0
extracted_resource_ids: 
type_: 1