# 🔥 Hotfix: input_text → input_textarea ## ⚠️ Problem Home Assistant `input_text` hat ein **Maximum von 255 Zeichen**, aber unser JSON-Ladeplan ist viel größer (typisch 2000-4000 Zeichen für 24 Stunden). **Fehlermeldung:** ``` Invalid config for 'input_text' at packages/battery_optimizer_config.yaml, line 10: value must be at most 255 for dictionary value 'input_text->battery_charging_schedule->max', got 4096 ``` ## ✅ Lösung Verwende `input_textarea` statt `input_text`: - ✅ Unbegrenzte Größe - ✅ Multi-Line Text - ✅ Perfekt für JSON ## 🔧 Was wurde geändert ### Datei: `battery_optimizer_config.yaml` **VORHER (falsch):** ```yaml input_text: battery_charging_schedule: name: "Batterie Ladeplan" max: 4096 # ❌ Nicht erlaubt! initial: "{}" ``` **NACHHER (korrekt):** ```yaml input_textarea: battery_charging_schedule: name: "Batterie Ladeplan" initial: "{}" # ✅ Kein max-Limit! ``` ### Datei: `battery_charging_optimizer.py` **Änderungen:** ```python # VORHER: input_text.battery_charging_schedule = schedule_json schedule_json = state.get('input_text.battery_charging_schedule') # NACHHER: input_textarea.battery_charging_schedule = schedule_json schedule_json = state.get('input_textarea.battery_charging_schedule') ``` ### Datei: `battery_optimizer_config.yaml` (Templates) **Template-Sensoren:** ```yaml # VORHER: {% set schedule = state_attr('input_text.battery_charging_schedule', 'schedule') %} # NACHHER: {% set schedule = state_attr('input_textarea.battery_charging_schedule', 'schedule') %} ``` ### Datei: `battery_optimizer_dashboard.yaml` **Dashboard-Markdown:** ```yaml # Gleiche Änderung wie oben state_attr('input_textarea.battery_charging_schedule', 'schedule') ``` ## 📦 Betroffene Dateien Alle **4 Dateien** wurden aktualisiert: - ✅ `battery_optimizer_config.yaml` - ✅ `battery_charging_optimizer.py` - ✅ `battery_optimizer_dashboard.yaml` - ✅ (Templates in config.yaml) ## 🔄 Migration ### Wenn du bereits installiert hast: **Option A: Neuinstallation (empfohlen)** 1. Alte `input_text.battery_charging_schedule` Helper löschen 2. Neue Config mit `input_textarea` einfügen 3. Home Assistant neu starten 4. Neuen Plan berechnen **Option B: Manuell ändern** 1. In UI: Einstellungen → Geräte & Dienste → Helfer 2. `battery_charging_schedule` löschen 3. Neu erstellen als "Text (mehrzeilig)" (= input_textarea) 4. Name: "Batterie Ladeplan" 5. Standardwert: `{}` 6. Python-Dateien ersetzen 7. Home Assistant neu starten ## 🧪 Testen Nach dem Fix: ```yaml # Entwicklerwerkzeuge → Dienste # Plan berechnen service: pyscript.calculate_charging_schedule # Prüfe in Entwicklerwerkzeuge → Zustände # → Suche: input_textarea.battery_charging_schedule # → Sollte JSON mit Ladeplan enthalten (>255 Zeichen!) ``` **Beispiel-Output:** ```json { "2025-11-08 00:00:00": { "action": "charge", "power_w": -10000, "price": 26.72, "pv_forecast": 0.0, "reason": "Günstiger Preis (26.72 ct), Wenig PV (0.0 kWh)" }, ... } ``` ## 📏 Größenvergleich | Helper-Typ | Max. Größe | Geeignet für | |------------|-----------|--------------| | `input_text` | 255 Zeichen | ❌ JSON (zu klein) | | `input_textarea` | Unbegrenzt | ✅ JSON (perfekt) | **Typische Größen:** - 24h Ladeplan: ~2000-4000 Zeichen - input_text Limit: 255 Zeichen - **⟹ input_textarea zwingend nötig!** ## 🎯 Warum input_textarea? Home Assistant unterscheidet: **input_text:** - Einzeiliges Textfeld - UI: Kleines Input-Feld - Max: 255 Zeichen - Use-Case: Namen, IDs, kurze Werte **input_textarea:** - Mehrzeiliges Textfeld - UI: Großes Textfeld - Max: Unbegrenzt - Use-Case: JSON, Listen, lange Texte ## ✅ Status **Hotfix:** v1.1.1 **Datum:** 2025-11-07 23:30 **Status:** ✅ Behoben Alle Download-Dateien wurden aktualisiert! ## 📝 Zusätzliche Änderungen nötig? **Nein!** Alle anderen Komponenten arbeiten transparent: - ✅ PyScript kann beide Typen gleich nutzen - ✅ Templates funktionieren identisch - ✅ Automation unverändert - ✅ Dashboard unverändert (außer Entity-ID) Die einzige Änderung ist `input_text` → `input_textarea` in allen Referenzen. ## 🎓 Gelernt **Wichtige Home Assistant Regel:** - `input_text` = max. 255 Zeichen (hart limitiert) - Für große Daten immer `input_textarea` verwenden - Limit ist nicht konfigurierbar! **Best Practice:** - JSON-Daten → input_textarea - IDs/Namen → input_text - Bei Zweifeln → input_textarea (sicherer) --- **Alle Dateien im Download sind bereits korrigiert!** ✅