Files
battery-charging-optimizer/legacy/v1/HOTFIX_input_textarea.md

4.5 KiB

🔥 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):

input_text:
  battery_charging_schedule:
    name: "Batterie Ladeplan"
    max: 4096  # ❌ Nicht erlaubt!
    initial: "{}"

NACHHER (korrekt):

input_textarea:
  battery_charging_schedule:
    name: "Batterie Ladeplan"
    initial: "{}"  # ✅ Kein max-Limit!

Datei: battery_charging_optimizer.py

Änderungen:

# 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:

# 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:

# 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:

# 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:

{
  "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_textinput_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!