# Home Assistant Entity Validation Report Generated: 2025-11-19 ## Summary This report analyzes all entity references in the OpenEMS battery optimizer configuration files and validates their existence in the Home Assistant system. --- ## Files Analyzed 1. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v1/battery_optimizer_rest_commands.yaml` 2. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v1/battery_optimizer_config.yaml` 3. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v1/battery_optimizer_dashboard.yaml` 4. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v1/battery_optimizer_automations.yaml` 5. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v1/automation_hourly_execution_DRINGEND.yaml` 6. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v2/battery_optimizer_dashboard.yaml` 7. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v2/battery_optimizer_config.yaml` 8. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v3/battery_optimizer_dashboard.yaml` 9. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v3/battery_optimizer_dashboard_minimal.yaml` 10. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v3/battery_optimizer_sections_minimal.yaml` 11. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v3/battery_optimizer_dashboard_compact.yaml` 12. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v3/battery_optimizer_sections_compact.yaml` 13. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/v3/battery_optimizer_sections_standard.yaml` 14. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/battery_optimizer_config.yaml` 15. `/Users/felix/Nextcloud/AI/projects/homeassistant/openems/rest_requests.yaml` --- ## Entity References by Category ### Input Boolean Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `input_boolean.battery_optimizer_enabled` | v1/config.yaml (defined), v1/dashboard.yaml, v1/automations.yaml, v2/dashboard.yaml, v2/config.yaml (defined), v3/all dashboards, openems/config.yaml (defined) | **DEFINED** ✓ | | `input_boolean.battery_optimizer_manual_override` | v1/config.yaml (defined), v1/dashboard.yaml, v1/automations.yaml, v2/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_boolean.goodwe_manual_control` | v2/dashboard.yaml, v3/all dashboards | **NEEDS VERIFICATION** ⚠️ | ### Input Number Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `input_number.battery_optimizer_min_soc` | v1/config.yaml (defined), v1/dashboard.yaml, v1/automations.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_number.battery_optimizer_max_soc` | v1/config.yaml (defined), v1/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_number.battery_optimizer_price_threshold` | v1/config.yaml (defined), v1/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_number.battery_optimizer_max_charge_power` | v1/config.yaml (defined), v1/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_number.battery_optimizer_reserve_capacity` | v1/config.yaml (defined), v1/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_number.battery_optimizer_pv_threshold` | v2/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_number.battery_capacity_kwh` | v2/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `input_number.charge_power_battery` | v2/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `input_number.battery_min_soc` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `input_number.battery_max_soc` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `input_number.battery_charging_power` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `input_number.battery_reserve_capacity` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `input_number.battery_price_threshold` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | ### Input Select Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `input_select.battery_optimizer_strategy` | v1/config.yaml (defined), v1/dashboard.yaml | **DEFINED** ✓ | ### Input Text Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `input_text.battery_optimizer_status` | v2/dashboard.yaml, v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | ### Sensor Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `sensor.battery_state_of_charge` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.nächste_ladestunde` | v1/dashboard.yaml | **TEMPLATE SENSOR** - defined as template ✓ | | `sensor.geplante_ladungen_heute` | v1/dashboard.yaml | **TEMPLATE SENSOR** - defined as template ✓ | | `sensor.hastrom_flex_pro` | v1/config.yaml, v1/dashboard.yaml, v1/automations.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.durchschnittspreis_heute` | v1/dashboard.yaml | **TEMPLATE SENSOR** - defined as template ✓ | | `sensor.pv_power` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.battery_power` | v1/dashboard.yaml, v2/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.house_consumption` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.gw_netzbezug` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.gw_netzeinspeisung` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.today_s_pv_generation` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.energy_production_tomorrow` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.energy_production_tomorrow_2` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.today_battery_charge` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.today_battery_discharge` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.bought_from_grid_today` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.sold_to_grid_today` | v1/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.openems_ess0_soc` | v2/dashboard.yaml | **NEEDS VERIFICATION** ⚠️ | | `sensor.openems_ess0_activepower` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.openems_grid_activepower` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.openems_production_activepower` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.openems_consumption_activepower` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.esssoc` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.hastrom_flex_extended_current_price` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.battery_charging_plan_status` | v2/dashboard.yaml, v3/dashboards, openems/config.yaml (defined) | **DEFINED** ✓ | | `sensor.battery_next_action` | v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `sensor.battery_estimated_savings` | v2/config.yaml (defined), openems/config.yaml (defined) | **DEFINED** ✓ | | `sensor.battery_next_charge_time` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.openems_state` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.battery_capacity` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.openems_ess0_capacity` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.forecast_solar_energy_today` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `sensor.forecast_solar_energy_tomorrow` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | ### Automation Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `automation.battery_charging_schedule_calculation` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | | `automation.battery_charging_schedule_execution` | v3/dashboards | **NEEDS VERIFICATION** ⚠️ | ### PyScript State Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `pyscript.battery_charging_schedule` | v1/config.yaml, v1/dashboard.yaml, openems/config.yaml | **PYSCRIPT ENTITY** ✓ | | `pyscript.battery_charging_plan` | v3/dashboards | **PYSCRIPT ENTITY** ✓ | ### REST Command Entities | Entity ID | File(s) | Status | |-----------|---------|--------| | `rest_command.set_ess_remote_mode` | v1/rest_commands.yaml (defined), openems/rest_requests.yaml (defined) | **DEFINED** ✓ | | `rest_command.set_ess_internal_mode` | v1/rest_commands.yaml (defined), openems/rest_requests.yaml (defined) | **DEFINED** ✓ | --- ## Issues Found ### 1. **Entity Name Inconsistencies** Multiple versions use different entity naming conventions: - **V1/V2**: Use `input_number.battery_optimizer_*` prefix - **V3**: Use shortened `input_number.battery_*` prefix - **OpenEMS root**: Uses `input_number.battery_optimizer_*` prefix **Recommendation**: Standardize on one naming convention. Based on the root config file, `battery_optimizer_*` appears to be the canonical naming. ### 2. **Missing Entity Definitions** The following entities are referenced but not defined in configuration files: - `input_boolean.goodwe_manual_control` - `input_number.charge_power_battery` - All `input_number.battery_*` entities (shortened names in v3) - Most OpenEMS sensors (`sensor.openems_*`, `sensor.esssoc`) - haStrom price sensors (`sensor.hastrom_flex_pro`, `sensor.hastrom_flex_extended_current_price`) - Forecast Solar sensors - Battery status sensors **These may be defined elsewhere in your Home Assistant configuration or created by integrations.** ### 3. **Template Sensor Dependencies** Template sensors defined in config files depend on PyScript states that must exist: ```yaml # Depends on: pyscript.battery_charging_schedule.schedule sensor.battery_charging_plan_status sensor.battery_next_action sensor.battery_estimated_savings ``` ### 4. **Dashboard References to Non-Existent Entities** V3 dashboards reference entities with different names than those defined in the configuration: **Dashboard uses**: `input_number.battery_min_soc` **Config defines**: `input_number.battery_optimizer_min_soc` This will cause errors in the dashboard rendering. --- ## Recommendations ### Priority 1: Name Standardization Choose one naming convention and update all files: **Option A (Recommended)**: Use full `battery_optimizer_*` names (matches root config) - Update V3 dashboards to use `battery_optimizer_` prefix **Option B**: Use shortened `battery_*` names - Update root config file and V1/V2 files - Update automations and PyScript references ### Priority 2: Verify Integration-Created Entities Check that these integrations are properly configured: 1. **OpenEMS Modbus Integration** - Should create `sensor.openems_*` entities 2. **haStrom Integration** - Should create price sensors 3. **Forecast.Solar Integration** - Should create forecast sensors ### Priority 3: Create Missing Helper Entities If not already created, add these to your configuration: - `input_boolean.goodwe_manual_control` - `input_number.charge_power_battery` - Any `sensor.*` entities that aren't integration-provided ### Priority 4: PyScript State Verification Ensure PyScript scripts are creating the expected states: - `pyscript.battery_charging_schedule` - `pyscript.battery_charging_plan` --- ## Testing Checklist 1. [ ] Load configuration files and check for YAML errors 2. [ ] Verify all `input_*` helpers exist in Home Assistant UI 3. [ ] Check Developer Tools → States for all referenced sensors 4. [ ] Verify PyScript states exist after running optimization 5. [ ] Test dashboard loading - check for "Entity not available" errors 6. [ ] Verify automations trigger correctly 7. [ ] Check Home Assistant logs for missing entity warnings --- ## Next Steps To complete validation, I need access to your Home Assistant system to: 1. Query all existing entities via the ha-mcp-server 2. Cross-reference with this list 3. Provide a definitive "exists/missing" report **Would you like me to:** - Connect to your Home Assistant to verify which entities actually exist? - Generate corrected configuration files with standardized names? - Create a consolidated configuration that merges the best from each version?