{ "title": "Heating MPC", "config": { "step": { "user": { "title": "Heating MPC — room inputs", "description": "Choose thermostat, read-only relay and room sensors. This integration NEVER commands the heater.", "data": { "climate_entity": "Existing Generic Thermostat", "heater_entity": "Physical heating switch (read-only)", "room_entities": "Individual room temperature sensors", "room_max_age_minutes": "Maximum room sensor report age (minutes)", "weather_max_age_minutes": "Maximum weather sensor report age (minutes)", "room_stale_use_last_value": "Keep using the last value of a room sensor that stopped reporting" }, "data_description": { "room_stale_use_last_value": "Off: a room sensor older than its report-age limit is left out and the other rooms are re-weighted. On: its last value is still used, for up to 24 hours without a report; for sensors that report only when the value changes. Unavailable or invalid room sensors are always left out. Nothing pauses unless no room is usable." } }, "weather": { "title": "Primary weather sources", "description": "Choose as many sensors per metric as needed and arrange them in priority order. If the preferred source is unavailable, the next one is used automatically. Outdoor temperature is mandatory; wind and cloud coverage are diagnostic-only in this version.", "data": { "outside_temperature_sources": "Outdoor temperature sources (ordered: preferred first)", "outside_wind_sources": "Wind speed sources (optional)", "outside_clouds_sources": "Cloud coverage sources (optional)" } }, "weather_extra": { "title": "Additional weather sources", "description": "Additional weather inputs are optional and used only for comparison/diagnostics in v0.2; they do not yet change MPC predictions.", "data": { "outside_humidity_sources": "Outdoor humidity sources (optional)", "outside_feelslike_sources": "Feels-like temperature sources (optional)", "outside_pressure_sources": "Atmospheric pressure sources (optional)", "outside_visibility_sources": "Visibility sources (optional)", "outside_rain_sources": "Rain sources (optional)", "outside_snow_sources": "Snow sources (optional)" } }, "weights": { "title": "Room priorities", "description": "Each selected sensor becomes its own zone with this comfort weight. Later, group the sensors of one room into one zone with Add zone or by editing a zone." } }, "error": { "invalid_rooms": "Select 1–12 distinct room sensors.", "invalid_weather": "Select at least one outdoor temperature sensor, distinct from room sensors." }, "abort": { "already_configured": "Heating MPC is already configured." } }, "options": { "step": { "init": { "title": "Heating MPC options", "description": "Change room sensors and controller settings. This integration remains shadow-only.", "data": { "climate_entity": "Existing Generic Thermostat", "heater_entity": "Physical heating switch (read-only)", "horizon_minutes": "Prediction horizon (minutes)", "minimum_on_minutes": "Minimum ON time (minutes)", "minimum_off_minutes": "Minimum OFF time (minutes)", "switching_cost": "Switching cost", "heating_cost": "Heating runtime cost", "comfort_band": "Comfort tolerance (°C)", "room_max_age_minutes": "Maximum room sensor report age (minutes)", "weather_max_age_minutes": "Maximum weather sensor report age (minutes)", "room_stale_use_last_value": "Keep using the last value of a room sensor that stopped reporting" }, "data_description": { "room_stale_use_last_value": "Off: a room sensor older than its report-age limit is left out and the other rooms are re-weighted. On: its last value is still used, for up to 24 hours without a report; for sensors that report only when the value changes. Unavailable or invalid room sensors are always left out. Nothing pauses unless no room is usable." } }, "weather": { "title": "Weather source priority", "description": "Choose as many sensors per metric as needed and arrange them in priority order. If the preferred source is unavailable, the next one is used automatically. Outdoor temperature is mandatory; wind and cloud coverage are diagnostic-only in this version.", "data": { "outside_temperature_sources": "Outdoor temperature sources (ordered: preferred first)", "outside_wind_sources": "Wind speed sources (optional)", "outside_clouds_sources": "Cloud coverage sources (optional)" } }, "weather_extra": { "title": "Additional weather sensors", "description": "Additional weather inputs are optional and used only for comparison/diagnostics in v0.2; they do not yet change MPC predictions.", "data": { "outside_humidity_sources": "Outdoor humidity sources (optional)", "outside_feelslike_sources": "Feels-like temperature sources (optional)", "outside_pressure_sources": "Atmospheric pressure sources (optional)", "outside_visibility_sources": "Visibility sources (optional)", "outside_rain_sources": "Rain sources (optional)", "outside_snow_sources": "Snow sources (optional)" } } }, "error": { "invalid_weather": "Select at least one outdoor temperature sensor, distinct from room sensors." } }, "entity": { "sensor": { "last_sample": { "state": { "waiting_for_inputs": "Waiting for inputs", "first_sample": "First sample", "sensors_changed": "Zone sensors changed", "learned": "Learned", "partly_rejected": "Partly rejected (outlier)", "interval_out_of_range": "Irregular interval", "relay_changed": "Relay switched", "outside_source_changed": "Outdoor source changed", "lag_uncertain": "Waiting for radiators to settle" } } } }, "config_subentries": { "zone": { "entry_type": "Zone", "initiate_flow": { "user": "Add zone", "reconfigure": "Edit zone" }, "step": { "user": { "title": "Thermal zone", "description": "A room or area of the apartment. Sensor weights combine several sensors in one room; the comfort weight says how much the zone matters to the MPC. Neither changes the zone's learned thermal properties.", "data": { "name": "Name", "sensors": "Temperature sensors", "comfort_weight": "Comfort weight", "target_offset": "Target offset (°C)", "neighbors": "Adjacent zones (heat exchange)" }, "data_description": { "comfort_weight": "Relative importance for the MPC (0.1–10).", "target_offset": "Added to the thermostat's target temperature for this zone.", "neighbors": "Zones this one exchanges heat with, for example through a wall or an open door. The coefficient is learned only when the data supports it." } }, "sensor_weights": { "title": "Sensor weights", "description": "How much each sensor counts in the zone temperature (0.1–10)." }, "reconfigure": { "title": "Thermal zone", "description": "A room or area of the apartment. Sensor weights combine several sensors in one room; the comfort weight says how much the zone matters to the MPC. Neither changes the zone's learned thermal properties.", "data": { "name": "Name", "sensors": "Temperature sensors", "comfort_weight": "Comfort weight", "target_offset": "Target offset (°C)", "neighbors": "Adjacent zones (heat exchange)" }, "data_description": { "comfort_weight": "Relative importance for the MPC (0.1–10).", "target_offset": "Added to the thermostat's target temperature for this zone.", "neighbors": "Zones this one exchanges heat with, for example through a wall or an open door. The coefficient is learned only when the data supports it." } } }, "error": { "zone_name_required": "Enter a name.", "zone_sensors": "Choose 1–6 different sensors.", "sensor_in_other_zone": "A chosen sensor already belongs to another zone.", "sensor_is_weather_source": "A chosen sensor is used as an outdoor temperature source.", "too_many_zones": "At most 12 zones are supported." }, "abort": { "reconfigure_successful": "The zone was updated." } } } }