1925 lines
79 KiB
JSON
1925 lines
79 KiB
JSON
{
|
||
"config": {
|
||
"step": {
|
||
"user": {
|
||
"title": "Maintenance Supporter",
|
||
"description": "Set up your maintenance management system.",
|
||
"menu_options": {
|
||
"create_object": "Create Maintenance Object",
|
||
"create_from_template": "Create from Template",
|
||
"global_setup": "Global Settings"
|
||
}
|
||
},
|
||
"create_from_template": {
|
||
"title": "Select Template Category",
|
||
"description": "Choose a category to browse predefined maintenance templates.",
|
||
"data": {
|
||
"template_category": "Category",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"go_back": "Return to the main menu without saving."
|
||
}
|
||
},
|
||
"template_select": {
|
||
"title": "Select Template",
|
||
"description": "Choose a maintenance template to use as a starting point.",
|
||
"data": {
|
||
"template_id": "Template",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"go_back": "Return to category selection without saving."
|
||
}
|
||
},
|
||
"template_customize": {
|
||
"title": "Customize Template",
|
||
"description": "Customize the {template_name} template. It includes {task_count} tasks: {task_list}.",
|
||
"data": {
|
||
"name": "Object name",
|
||
"area_id": "Area",
|
||
"manufacturer": "Manufacturer",
|
||
"model": "Model",
|
||
"serial_number": "Serial number",
|
||
"documentation_url": "Manual / documentation URL",
|
||
"notes": "Notes",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"name": "A name for this maintenance object.",
|
||
"area_id": "The area where this object is located.",
|
||
"manufacturer": "The manufacturer of the object.",
|
||
"model": "The model name or number.",
|
||
"serial_number": "The serial number of the object.",
|
||
"documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
|
||
"notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
|
||
"go_back": "Return to template selection without saving."
|
||
}
|
||
},
|
||
"global_setup": {
|
||
"title": "Global Settings",
|
||
"description": "Configure global maintenance settings.",
|
||
"data": {
|
||
"default_warning_days": "Default warning days before due",
|
||
"notifications_enabled": "Enable notifications",
|
||
"notify_service": "Notification service"
|
||
},
|
||
"data_description": {
|
||
"default_warning_days": "Number of days before a maintenance task is due to show a warning.",
|
||
"notifications_enabled": "Send notifications when maintenance tasks become due.",
|
||
"notify_service": "The notification service to use (e.g., notify.mobile_app_phone)."
|
||
}
|
||
},
|
||
"create_object": {
|
||
"title": "Create Maintenance Object",
|
||
"description": "Define a device or asset to manage maintenance for.",
|
||
"data": {
|
||
"name": "Object name",
|
||
"area_id": "Area",
|
||
"manufacturer": "Manufacturer",
|
||
"model": "Model",
|
||
"serial_number": "Serial number",
|
||
"documentation_url": "Manual / documentation URL",
|
||
"notes": "Notes",
|
||
"installation_date": "Installation date",
|
||
"warranty_expiry": "Warranty expiry",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"name": "A unique name for this maintenance object (e.g., 'Pool Pump', 'Car').",
|
||
"area_id": "The area in your home where this object is located.",
|
||
"manufacturer": "The manufacturer of the object.",
|
||
"model": "The model name or number.",
|
||
"serial_number": "The serial number of the object.",
|
||
"documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
|
||
"notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
|
||
"installation_date": "When this object was installed or purchased.",
|
||
"warranty_expiry": "When the manufacturer warranty for this object expires.",
|
||
"go_back": "Return to the main menu without saving."
|
||
}
|
||
},
|
||
"task_menu": {
|
||
"title": "Maintenance Tasks",
|
||
"description": "Add maintenance tasks for {object_name}. Currently {task_count} task(s) defined.",
|
||
"menu_options": {
|
||
"add_task": "Add Maintenance Task",
|
||
"finish": "Finish Setup"
|
||
}
|
||
},
|
||
"add_task": {
|
||
"title": "Add Maintenance Task",
|
||
"description": "Define a maintenance task for {object_name}.",
|
||
"data": {
|
||
"name": "Task name",
|
||
"type": "Maintenance type",
|
||
"schedule_type": "Schedule type",
|
||
"custom_icon": "Task icon",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"name": "A descriptive name for this task (e.g., 'Filter Cleaning', 'Oil Change').",
|
||
"type": "The category of maintenance work.",
|
||
"schedule_type": "How this task should be scheduled.",
|
||
"custom_icon": "Optional custom icon for this task (e.g., mdi:oil, mdi:filter-variant).",
|
||
"go_back": "Return to the task menu without saving."
|
||
}
|
||
},
|
||
"time_based": {
|
||
"title": "Time-based Schedule",
|
||
"description": "Configure the time interval for this maintenance task.",
|
||
"data": {
|
||
"interval_days": "Interval",
|
||
"interval_unit": "Interval unit",
|
||
"interval_anchor": "Interval anchor",
|
||
"last_performed": "Last performed",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"interval_days": "How often this maintenance repeats, combined with the interval unit.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"interval_anchor": "How the next due date is calculated after completion. 'Planned' prevents schedule drift by anchoring to the original due date.",
|
||
"last_performed": "When this maintenance was last performed. Leave empty if never done.",
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"go_back": "Return to task creation without saving."
|
||
}
|
||
},
|
||
"one_time": {
|
||
"title": "One-time Task",
|
||
"description": "Configure a single, non-recurring maintenance task. It is archived once completed.",
|
||
"data": {
|
||
"due_date": "Due date",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"due_date": "The date this one-time task is due.",
|
||
"warning_days": "Number of days before the due date to show a warning.",
|
||
"go_back": "Return to task creation without saving."
|
||
}
|
||
},
|
||
"calendar": {
|
||
"title": "Calendar Schedule",
|
||
"description": "Configure a calendar-based recurrence (weekdays, nth weekday of the month, or a day of the month).",
|
||
"data": {
|
||
"weekdays": "On these weekdays",
|
||
"nth": "Which occurrence",
|
||
"weekday": "Weekday",
|
||
"day": "Day of month",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back",
|
||
"last_day": "Last day of the month",
|
||
"business": "Business days only",
|
||
"offset": "Offset (days)"
|
||
},
|
||
"data_description": {
|
||
"weekdays": "The task repeats on each selected weekday.",
|
||
"nth": "Which occurrence in the month (e.g. 1st, or Last).",
|
||
"weekday": "The weekday for the nth-weekday rule (e.g. Saturday).",
|
||
"day": "Day of the month (1-31; clamped to the month's length).",
|
||
"warning_days": "Number of days before the due date to show a warning.",
|
||
"go_back": "Return to task creation without saving.",
|
||
"last_day": "Overrides the day number: the task is due on the month's last day.",
|
||
"business": "Roll a weekend date back to the preceding Friday (e.g. last business day).",
|
||
"offset": "Shift the computed date by ±N days (e.g. -2 = two days before)."
|
||
}
|
||
},
|
||
"sensor_select": {
|
||
"title": "Select Trigger Sensor",
|
||
"description": "Choose a Home Assistant entity to monitor for this maintenance task.",
|
||
"data": {
|
||
"trigger_entity": "Entity to monitor",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_entity": "Select the sensor entity that should trigger this maintenance task.",
|
||
"go_back": "Return to task creation without saving."
|
||
}
|
||
},
|
||
"sensor_attribute": {
|
||
"title": "Select Attribute",
|
||
"description": "Choose which value to monitor from {entity_id}. Current state: {current_state} {unit}",
|
||
"data": {
|
||
"trigger_attribute": "Value to monitor",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_attribute": "Select the entity state or a specific attribute to monitor.",
|
||
"go_back": "Return to entity selection without saving."
|
||
}
|
||
},
|
||
"trigger_type": {
|
||
"title": "Trigger Type",
|
||
"description": "How should the sensor value trigger maintenance?",
|
||
"data": {
|
||
"trigger_type": "Trigger type",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_type": "Threshold: triggers when value exceeds limits. Counter: triggers after accumulating a target value. State Change: triggers after a number of state transitions.",
|
||
"go_back": "Return to attribute selection without saving."
|
||
}
|
||
},
|
||
"trigger_threshold": {
|
||
"title": "Threshold Configuration",
|
||
"description": "Set threshold values for **{entity_id}** ({attribute}).\nCurrent: **{current_value} {unit}** | Avg: {average} | Range: {minimum}–{maximum} ({data_period}d)\nSuggested above: {suggested_above} | Suggested below: {suggested_below}",
|
||
"data": {
|
||
"trigger_above": "Trigger when above",
|
||
"trigger_below": "Trigger when below",
|
||
"trigger_for_minutes": "For at least (minutes)",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_above": "Trigger maintenance when value exceeds this threshold.",
|
||
"trigger_below": "Trigger maintenance when value falls below this threshold.",
|
||
"trigger_for_minutes": "Value must exceed threshold for this many minutes before triggering.",
|
||
"interval_days": "Optional time-based safety interval in addition to the sensor trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"go_back": "Return to trigger type selection without saving."
|
||
}
|
||
},
|
||
"trigger_counter": {
|
||
"title": "Counter Configuration",
|
||
"description": "Set counter target for {entity_id} ({attribute}). Current: {current_value} {unit}.",
|
||
"data": {
|
||
"trigger_target_value": "Target value",
|
||
"trigger_delta_mode": "Delta mode (count changes, not absolute)",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_target_value": "Trigger maintenance when this accumulated value is reached.",
|
||
"trigger_delta_mode": "If enabled, counts the difference from a baseline instead of the absolute value.",
|
||
"interval_days": "Optional time-based safety interval in addition to the counter trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"go_back": "Return to trigger type selection without saving."
|
||
}
|
||
},
|
||
"trigger_state_change": {
|
||
"title": "State Change Configuration",
|
||
"description": "Count state transitions of {entity_id}.",
|
||
"data": {
|
||
"trigger_from_state": "From state (optional)",
|
||
"trigger_to_state": "To state (optional)",
|
||
"trigger_target_changes": "Number of changes to trigger",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_from_state": "Only count transitions from this state. Leave empty for any.",
|
||
"trigger_to_state": "Only count transitions to this state. Leave empty for any.",
|
||
"trigger_target_changes": "Number of matching state changes before triggering maintenance.",
|
||
"interval_days": "Optional time-based safety interval in addition to the state change trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"go_back": "Return to trigger type selection without saving."
|
||
}
|
||
},
|
||
"trigger_runtime": {
|
||
"title": "Runtime Configuration",
|
||
"description": "Track accumulated runtime of {entity_id}. Maintenance triggers when total on-time reaches the target hours.",
|
||
"data": {
|
||
"trigger_runtime_hours": "Target runtime (hours)",
|
||
"trigger_on_states": "Active states (comma-separated)",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_runtime_hours": "Trigger maintenance after this many hours of accumulated runtime.",
|
||
"trigger_on_states": "Which sensor states count as 'active'. Leave empty for default: on, 1, true. Example: in_use, running",
|
||
"interval_days": "Optional time-based safety interval in addition to the runtime trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"go_back": "Return to trigger type selection without saving."
|
||
}
|
||
},
|
||
"compound_logic": {
|
||
"title": "Compound Trigger",
|
||
"description": "Choose how multiple conditions should be combined.",
|
||
"data": {
|
||
"compound_logic": "Logic",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"compound_logic": "AND = all conditions must trigger. OR = any condition triggers.",
|
||
"go_back": "Return to trigger type selection without saving."
|
||
}
|
||
},
|
||
"compound_condition_entity": {
|
||
"title": "Condition #{condition_num} — Entity",
|
||
"description": "Select the entity for this condition.",
|
||
"data": {
|
||
"trigger_entity": "Entity",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_entity": "The sensor entity to monitor for this condition.",
|
||
"go_back": "Return to previous step without saving."
|
||
}
|
||
},
|
||
"compound_condition_type": {
|
||
"title": "Condition #{condition_num} — Type",
|
||
"description": "How should this condition evaluate the sensor?",
|
||
"data": {
|
||
"trigger_type": "Trigger type",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_type": "The method used to determine when this condition triggers.",
|
||
"go_back": "Return to entity selection without saving."
|
||
}
|
||
},
|
||
"compound_condition_threshold": {
|
||
"title": "Condition — Threshold",
|
||
"data": {
|
||
"trigger_above": "Trigger above",
|
||
"trigger_below": "Trigger below",
|
||
"trigger_for_minutes": "Duration (minutes)",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_above": "Trigger when value exceeds this threshold.",
|
||
"trigger_below": "Trigger when value drops below this threshold.",
|
||
"trigger_for_minutes": "Value must remain beyond threshold for this duration.",
|
||
"go_back": "Return to condition type selection without saving."
|
||
}
|
||
},
|
||
"compound_condition_counter": {
|
||
"title": "Condition — Counter",
|
||
"data": {
|
||
"trigger_target_value": "Target value",
|
||
"trigger_delta_mode": "Delta mode",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_target_value": "Trigger when accumulated value reaches this target.",
|
||
"trigger_delta_mode": "Count changes from a baseline instead of the absolute value.",
|
||
"go_back": "Return to condition type selection without saving."
|
||
}
|
||
},
|
||
"compound_condition_state_change": {
|
||
"title": "Condition — State Change",
|
||
"data": {
|
||
"trigger_from_state": "From state",
|
||
"trigger_to_state": "To state",
|
||
"trigger_target_changes": "Number of changes",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_from_state": "Only count transitions from this state. Leave empty for any.",
|
||
"trigger_to_state": "Only count transitions to this state. Leave empty for any.",
|
||
"trigger_target_changes": "Number of matching state changes before triggering.",
|
||
"go_back": "Return to condition type selection without saving."
|
||
}
|
||
},
|
||
"compound_condition_runtime": {
|
||
"title": "Condition — Runtime",
|
||
"data": {
|
||
"trigger_runtime_hours": "Target runtime (hours)",
|
||
"trigger_on_states": "Active states",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_runtime_hours": "Trigger after this many hours of accumulated runtime.",
|
||
"trigger_on_states": "Sensor states counted as 'active'. Leave empty for default.",
|
||
"go_back": "Return to condition type selection without saving."
|
||
}
|
||
},
|
||
"compound_review": {
|
||
"title": "Compound Trigger Review",
|
||
"description": "{condition_count} condition(s) configured with {compound_logic} logic.",
|
||
"data": {
|
||
"compound_action": "Action",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"go_back": "Return to logic selection without saving."
|
||
}
|
||
},
|
||
"manual": {
|
||
"title": "Manual Schedule",
|
||
"description": "This task has no automatic schedule. You can mark it as due manually.",
|
||
"data": {
|
||
"warning_days": "Warning days before due",
|
||
"notes": "Notes",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"notes": "Additional notes or instructions for this task.",
|
||
"go_back": "Return to task creation without saving."
|
||
}
|
||
},
|
||
"reconfigure": {
|
||
"title": "Reconfigure {name}",
|
||
"description": "Update the settings for this maintenance object.",
|
||
"data": {
|
||
"name": "Object name",
|
||
"area_id": "Area",
|
||
"manufacturer": "Manufacturer",
|
||
"model": "Model",
|
||
"serial_number": "Serial number",
|
||
"documentation_url": "Manual / documentation URL",
|
||
"notes": "Notes",
|
||
"installation_date": "Installation date",
|
||
"warranty_expiry": "Warranty expiry"
|
||
},
|
||
"data_description": {
|
||
"name": "The name of this maintenance object.",
|
||
"area_id": "The area where this object is located.",
|
||
"manufacturer": "The manufacturer of this object.",
|
||
"model": "The model of this object.",
|
||
"serial_number": "The serial number of this object.",
|
||
"documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
|
||
"notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
|
||
"installation_date": "When this object was installed.",
|
||
"warranty_expiry": "When the manufacturer warranty for this object expires."
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"name_exists": "A maintenance object with this name already exists.",
|
||
"no_tasks": "At least one maintenance task is required.",
|
||
"invalid_entity": "The selected entity does not exist or has no numeric data.",
|
||
"invalid_attribute": "The selected attribute is not available on this entity.",
|
||
"invalid_threshold": "At least one threshold (above or below) must be set.",
|
||
"invalid_interval": "Interval must be a positive number.",
|
||
"invalid_due_date": "A due date is required for one-time tasks.",
|
||
"min_exceeds_max": "Minimum interval must not exceed maximum interval.",
|
||
"invalid_notify_service": "Invalid notification service format. Use 'notify.service_name' (e.g., notify.mobile_app_phone).",
|
||
"notify_service_not_found": "This notification service was not found in Home Assistant. Please verify the service name.",
|
||
"nfc_tag_duplicate": "This NFC tag is already linked to another task."
|
||
},
|
||
"abort": {
|
||
"already_configured": "This maintenance object is already configured.",
|
||
"global_already_exists": "Global settings already configured.",
|
||
"template_not_found": "The selected template was not found.",
|
||
"missing_data": "Required data was not provided.",
|
||
"reconfigure_successful": "Configuration updated successfully.",
|
||
"reconfigure_cancelled": "Reconfiguration cancelled."
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Maintenance Options",
|
||
"description": "{object_info}",
|
||
"menu_options": {
|
||
"manage_tasks": "Manage Tasks",
|
||
"add_task": "Add New Task",
|
||
"object_settings": "Object Settings",
|
||
"done": "Done"
|
||
}
|
||
},
|
||
"global_init": {
|
||
"title": "Global Settings",
|
||
"description": "Configure global maintenance settings.",
|
||
"menu_options": {
|
||
"general_settings": "General Settings",
|
||
"advanced_features": "Advanced Features",
|
||
"panel_access": "Panel Access",
|
||
"budget_settings": "Budget Settings",
|
||
"manage_groups": "Manage Groups",
|
||
"notification_settings": "Notification Settings",
|
||
"notification_actions": "Interactive Actions",
|
||
"test_notification": "Send Test Notification",
|
||
"done": "Done"
|
||
}
|
||
},
|
||
"advanced_features": {
|
||
"title": "Advanced Features",
|
||
"description": "Choose which advanced features to show in the UI. Disabling a feature hides it from the interface but does not delete any data.",
|
||
"data": {
|
||
"advanced_adaptive_visible": "Adaptive Scheduling",
|
||
"advanced_predictions_visible": "Sensor Predictions",
|
||
"advanced_seasonal_visible": "Seasonal Adjustments",
|
||
"advanced_environmental_visible": "Environmental Correlation",
|
||
"advanced_budget_visible": "Budget Tracking",
|
||
"advanced_groups_visible": "Groups",
|
||
"advanced_checklists_visible": "Checklists",
|
||
"advanced_schedule_time_visible": "Time-of-day scheduling"
|
||
},
|
||
"data_description": {
|
||
"advanced_adaptive_visible": "Show EWA, Weibull analysis, and interval suggestions for tasks.",
|
||
"advanced_predictions_visible": "Show sensor degradation analysis and threshold prediction charts.",
|
||
"advanced_seasonal_visible": "Show seasonal factor charts and monthly adjustment data.",
|
||
"advanced_environmental_visible": "Show environmental correlation (temperature, humidity) adjustments.",
|
||
"advanced_budget_visible": "Show monthly/yearly budget tracking and alerts.",
|
||
"advanced_groups_visible": "Show maintenance group management.",
|
||
"advanced_checklists_visible": "Show task checklists for step-by-step completion.",
|
||
"advanced_schedule_time_visible": "Allow tasks to become overdue at a specific time of day instead of midnight."
|
||
}
|
||
},
|
||
"panel_access": {
|
||
"title": "Panel Access",
|
||
"description": "Admins always have full access. To delegate create, edit and delete to specific non-admins, turn on the option below and select them — everyone else sees only Complete and Skip. Found {user_count} non-admin user(s).",
|
||
"data": {
|
||
"operator_write_enabled": "Allow selected users to create, edit and delete",
|
||
"admin_panel_user_ids": "Users with full panel access"
|
||
},
|
||
"data_description": {
|
||
"operator_write_enabled": "Off (default): only admins can modify content. On: the users selected below also get full create/edit/delete access.",
|
||
"admin_panel_user_ids": "Listed users see the full panel; everyone else sees only Complete and Skip on each task."
|
||
}
|
||
},
|
||
"general_settings": {
|
||
"title": "General Settings",
|
||
"description": "Configure basic settings for Maintenance Supporter.",
|
||
"data": {
|
||
"default_warning_days": "Default warning days before due",
|
||
"notifications_enabled": "Enable notifications",
|
||
"notify_service": "Notification service",
|
||
"panel_enabled": "Show sidebar panel",
|
||
"panel_title": "Sidebar panel title"
|
||
},
|
||
"data_description": {
|
||
"default_warning_days": "Number of days before a maintenance task is due to show a warning.",
|
||
"notifications_enabled": "Send notifications when maintenance tasks become due or are overdue.",
|
||
"notify_service": "The notification service to use (e.g., notify.mobile_app_phone).",
|
||
"panel_enabled": "Show a Maintenance Supporter panel in the sidebar.",
|
||
"panel_title": "Custom name for the sidebar entry. Leave blank to use \"Maintenance\". Useful to avoid clashing with Home Assistant's built-in Maintenance dashboard."
|
||
}
|
||
},
|
||
"notification_settings": {
|
||
"title": "Notification Settings",
|
||
"description": "Configure when and how often notifications are sent for each status.",
|
||
"data": {
|
||
"notify_due_soon_enabled": "Notify when due soon",
|
||
"notify_due_soon_interval_hours": "Due soon reminder interval (hours)",
|
||
"notify_overdue_enabled": "Notify when overdue",
|
||
"notify_overdue_interval_hours": "Overdue reminder interval (hours)",
|
||
"notify_triggered_enabled": "Notify when triggered",
|
||
"notify_triggered_interval_hours": "Triggered reminder interval (hours)",
|
||
"quiet_hours_enabled": "Enable quiet hours",
|
||
"quiet_hours_start": "Quiet hours start",
|
||
"quiet_hours_end": "Quiet hours end",
|
||
"max_notifications_per_day": "Max notifications per day",
|
||
"notification_bundling_enabled": "Bundle notifications",
|
||
"notification_bundle_threshold": "Bundle threshold",
|
||
"notification_title_style": "Notification title style"
|
||
},
|
||
"data_description": {
|
||
"notify_due_soon_interval_hours": "How often to repeat the due-soon reminder. Set to 0 for a single notification.",
|
||
"notify_overdue_interval_hours": "How often to repeat the overdue reminder. Set to 0 for a single notification.",
|
||
"notify_triggered_interval_hours": "How often to repeat the triggered notification. Set to 0 for a single notification.",
|
||
"quiet_hours_enabled": "Suppress notifications during quiet hours.",
|
||
"max_notifications_per_day": "Maximum number of notifications per day. Set to 0 for unlimited.",
|
||
"notification_bundling_enabled": "Send a single summary notification when multiple tasks need attention.",
|
||
"notification_bundle_threshold": "Minimum number of tasks to trigger a bundled notification.",
|
||
"notification_title_style": "What appears as the notification's TITLE. Default keeps the per-status text (e.g. 'Maintenance overdue!'). Object name / Task name help when phone notifications stack."
|
||
}
|
||
},
|
||
"budget_settings": {
|
||
"title": "Budget Settings",
|
||
"description": "Set monthly and yearly maintenance budgets to track spending.",
|
||
"data": {
|
||
"budget_currency": "Currency",
|
||
"budget_monthly": "Monthly budget",
|
||
"budget_yearly": "Yearly budget",
|
||
"budget_alerts_enabled": "Enable budget alerts",
|
||
"budget_alert_threshold": "Alert threshold (%)"
|
||
},
|
||
"data_description": {
|
||
"budget_currency": "Currency used for budget display and notifications.",
|
||
"budget_monthly": "Maximum monthly maintenance spending. Set to 0 to disable.",
|
||
"budget_yearly": "Maximum yearly maintenance spending. Set to 0 to disable.",
|
||
"budget_alerts_enabled": "Send a notification when spending exceeds the alert threshold.",
|
||
"budget_alert_threshold": "Percentage of budget at which to send an alert."
|
||
}
|
||
},
|
||
"notification_actions": {
|
||
"title": "Interactive Actions",
|
||
"description": "Configure action buttons shown on mobile notifications (requires Companion App).",
|
||
"data": {
|
||
"action_complete_enabled": "Show 'Complete' button",
|
||
"action_skip_enabled": "Show 'Skip' button",
|
||
"action_snooze_enabled": "Show 'Snooze' button",
|
||
"snooze_duration_hours": "Snooze duration (hours)"
|
||
},
|
||
"data_description": {
|
||
"action_complete_enabled": "Adds a button to mark the task as completed directly from the notification.",
|
||
"action_skip_enabled": "Adds a button to skip the current maintenance cycle from the notification.",
|
||
"action_snooze_enabled": "Adds a button to postpone the notification reminder.",
|
||
"snooze_duration_hours": "How long to postpone notifications when snooze is pressed."
|
||
}
|
||
},
|
||
"test_notification": {
|
||
"title": "Test Notification",
|
||
"description": "{result}"
|
||
},
|
||
"manage_groups": {
|
||
"title": "Manage Groups",
|
||
"description": "Select a group to manage or create a new one.",
|
||
"data": {
|
||
"selected_group": "Select group"
|
||
}
|
||
},
|
||
"add_group": {
|
||
"title": "Add Group",
|
||
"description": "Create a new maintenance group to organize related tasks.",
|
||
"data": {
|
||
"group_name": "Group name",
|
||
"group_description": "Description"
|
||
},
|
||
"data_description": {
|
||
"group_name": "A name for this group (e.g., 'Spring Maintenance').",
|
||
"group_description": "Optional description for this group."
|
||
}
|
||
},
|
||
"manage_tasks": {
|
||
"title": "Manage Tasks",
|
||
"description": "Select a task to edit or remove.",
|
||
"data": {
|
||
"selected_task": "Select task",
|
||
"go_back": "Go back"
|
||
}
|
||
},
|
||
"task_action": {
|
||
"title": "Task Actions",
|
||
"description": "Task: {task_name} — Choose an action.\n\nNext due dates: {next_dates}",
|
||
"menu_options": {
|
||
"edit_task": "Edit Task",
|
||
"edit_trigger": "Edit Trigger",
|
||
"remove_trigger": "Remove Trigger",
|
||
"edit_checklist": "Edit Checklist",
|
||
"adaptive_scheduling": "Adaptive Scheduling",
|
||
"delete_task": "Delete Task",
|
||
"manage_tasks": "Back"
|
||
}
|
||
},
|
||
"edit_task": {
|
||
"title": "Edit Task",
|
||
"description": "Edit settings for **{task_name}**.",
|
||
"data": {
|
||
"name": "Task name",
|
||
"type": "Maintenance type",
|
||
"interval_days": "Interval",
|
||
"interval_unit": "Interval unit",
|
||
"due_date": "Due date",
|
||
"interval_anchor": "Interval anchor",
|
||
"warning_days": "Warning days before due",
|
||
"enabled": "Enabled",
|
||
"notes": "Notes",
|
||
"documentation_url": "Documentation URL",
|
||
"last_performed": "Last performed",
|
||
"responsible_user_id": "Responsible user",
|
||
"custom_icon": "Task icon",
|
||
"nfc_tag_id": "NFC tag ID",
|
||
"go_back": "Go back",
|
||
"reading_unit": "Reading unit (for reading tasks, e.g. kWh)",
|
||
"season_months": "Seasonal window (months)",
|
||
"ends_count": "Ends after (number of times)",
|
||
"ends_until": "Ends on date"
|
||
},
|
||
"data_description": {
|
||
"name": "A descriptive name for this task (e.g., 'Filter Cleaning', 'Oil Change').",
|
||
"type": "The category of maintenance work.",
|
||
"interval_days": "How often this maintenance repeats, combined with the interval unit.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"due_date": "The date this one-time task is due.",
|
||
"interval_anchor": "How the next due date is calculated after completion. 'Planned' prevents schedule drift by anchoring to the original due date.",
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"enabled": "When disabled, scheduling and triggers are paused. The task is not deleted.",
|
||
"notes": "Additional notes or instructions for this task.",
|
||
"documentation_url": "Link to external documentation or manual for this task.",
|
||
"last_performed": "When this maintenance was last performed. Leave empty if never done.",
|
||
"responsible_user_id": "The Home Assistant user responsible for this task.",
|
||
"custom_icon": "Optional custom icon for this task (e.g., mdi:oil, mdi:filter-variant).",
|
||
"nfc_tag_id": "Link an NFC tag to this task. Scanning the tag will automatically mark the task as completed.",
|
||
"go_back": "Return to task actions without saving.",
|
||
"season_months": "Only due in the selected months; off-season dates roll to the next active month. Leave empty for all year.",
|
||
"ends_count": "Stop repeating after this many completions (a finite series). Leave empty for no limit.",
|
||
"ends_until": "Stop repeating once the next occurrence would fall after this date. Ignored if 'Ends after' is set."
|
||
}
|
||
},
|
||
"edit_checklist": {
|
||
"title": "Edit Checklist",
|
||
"description": "Define checklist steps for {task_name}. Enter one step per line.",
|
||
"data": {
|
||
"checklist_text": "Checklist steps",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"checklist_text": "Enter each checklist step on a separate line. These steps will be shown when completing the task.",
|
||
"go_back": "Return to task actions without saving."
|
||
}
|
||
},
|
||
"delete_task": {
|
||
"title": "Delete Task",
|
||
"description": "Are you sure you want to delete the task {task_name}? This cannot be undone.",
|
||
"data": {
|
||
"confirm": "Confirm deletion",
|
||
"go_back": "Go back"
|
||
}
|
||
},
|
||
"remove_trigger": {
|
||
"title": "Remove Trigger",
|
||
"description": "Remove trigger from **{task_name}**?\n\n**Entity:** {entity_ids}\n**Type:** {trigger_type}\n**Config:** {config_details}\n\nIf all entities are removed, the schedule will revert to time-based.",
|
||
"data": {
|
||
"entities_to_remove": "Entities to remove",
|
||
"confirm": "Confirm removal",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"entities_to_remove": "Select which entities to remove from this trigger. If all are removed, the entire trigger is deleted.",
|
||
"go_back": "Return to task actions without saving."
|
||
}
|
||
},
|
||
"trigger_summary": {
|
||
"title": "Current Trigger",
|
||
"description": "Trigger for **{task_name}**:\n\n**Entity:** {entity_ids}\n**Current state:** {current_states}\n**Type:** {trigger_type} (attribute: {attribute})\n**Config:** {config_details}",
|
||
"menu_options": {
|
||
"edit_trigger_proceed": "Edit Trigger",
|
||
"task_action": "Back"
|
||
}
|
||
},
|
||
"add_task": {
|
||
"title": "Add Maintenance Task",
|
||
"description": "Define a new maintenance task for this object.",
|
||
"data": {
|
||
"name": "Task name",
|
||
"type": "Maintenance type",
|
||
"schedule_type": "Schedule type",
|
||
"custom_icon": "Task icon",
|
||
"go_back": "Go back",
|
||
"reading_unit": "Reading unit (for reading tasks, e.g. kWh)"
|
||
},
|
||
"data_description": {
|
||
"name": "A descriptive name for this task (e.g., 'Filter Cleaning', 'Oil Change').",
|
||
"type": "The category of maintenance work.",
|
||
"schedule_type": "How this task should be scheduled.",
|
||
"custom_icon": "Optional custom icon for this task (e.g., mdi:oil, mdi:filter-variant).",
|
||
"go_back": "Return to the main menu without saving."
|
||
}
|
||
},
|
||
"opt_time_based": {
|
||
"title": "Time-based Schedule",
|
||
"description": "Configure the time interval for this task.",
|
||
"data": {
|
||
"interval_days": "Interval",
|
||
"interval_unit": "Interval unit",
|
||
"interval_anchor": "Interval anchor",
|
||
"last_performed": "Last performed",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"interval_days": "How often this maintenance repeats, combined with the interval unit.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"interval_anchor": "How the next due date is calculated after completion. 'Planned' prevents schedule drift by anchoring to the original due date.",
|
||
"last_performed": "When this maintenance was last performed. Leave empty if never done.",
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"go_back": "Return to the main menu without saving."
|
||
}
|
||
},
|
||
"opt_one_time": {
|
||
"title": "One-time Task",
|
||
"description": "Configure a single, non-recurring maintenance task. It is archived once completed.",
|
||
"data": {
|
||
"due_date": "Due date",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"due_date": "The date this one-time task is due.",
|
||
"warning_days": "Number of days before the due date to show a warning.",
|
||
"go_back": "Return to the main menu without saving."
|
||
}
|
||
},
|
||
"opt_calendar": {
|
||
"title": "Calendar Schedule",
|
||
"description": "Configure a calendar-based recurrence (weekdays, nth weekday of the month, or a day of the month).",
|
||
"data": {
|
||
"weekdays": "On these weekdays",
|
||
"nth": "Which occurrence",
|
||
"weekday": "Weekday",
|
||
"day": "Day of month",
|
||
"last_performed": "Last performed",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back",
|
||
"last_day": "Last day of the month",
|
||
"business": "Business days only",
|
||
"offset": "Offset (days)"
|
||
},
|
||
"data_description": {
|
||
"weekdays": "The task repeats on each selected weekday.",
|
||
"nth": "Which occurrence in the month (e.g. 1st, or Last).",
|
||
"weekday": "The weekday for the nth-weekday rule (e.g. Saturday).",
|
||
"day": "Day of the month (1-31; clamped to the month's length).",
|
||
"last_performed": "When this maintenance was last performed. Leave empty if never done.",
|
||
"warning_days": "Number of days before the due date to show a warning.",
|
||
"go_back": "Return to the main menu without saving.",
|
||
"last_day": "Overrides the day number: the task is due on the month's last day.",
|
||
"business": "Roll a weekend date back to the preceding Friday (e.g. last business day).",
|
||
"offset": "Shift the computed date by ±N days (e.g. -2 = two days before)."
|
||
}
|
||
},
|
||
"opt_manual": {
|
||
"title": "Manual Schedule",
|
||
"description": "This task has no automatic schedule. You can mark it as due manually.",
|
||
"data": {
|
||
"warning_days": "Warning days before due",
|
||
"notes": "Notes",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"warning_days": "Number of days before due date to show a warning.",
|
||
"notes": "Additional notes or instructions for this task.",
|
||
"go_back": "Return to the main menu without saving."
|
||
}
|
||
},
|
||
"opt_sensor_select": {
|
||
"title": "Select Trigger Sensor",
|
||
"description": "Choose a Home Assistant entity to monitor.",
|
||
"data": {
|
||
"trigger_entity": "Entity to monitor",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_entity": "Select the sensor entity that should trigger this maintenance task."
|
||
}
|
||
},
|
||
"opt_sensor_attribute": {
|
||
"title": "Select Attribute",
|
||
"description": "Choose which value to monitor from {entity_id}. Current state: {current_state} {unit}",
|
||
"data": {
|
||
"trigger_attribute": "Value to monitor",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_attribute": "Select the entity state or a specific attribute to monitor."
|
||
}
|
||
},
|
||
"opt_trigger_type": {
|
||
"title": "Trigger Type",
|
||
"description": "How should the sensor value trigger maintenance?",
|
||
"data": {
|
||
"trigger_type": "Trigger type",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_type": "Threshold: triggers when value exceeds limits. Counter: triggers after accumulating a target value. State Change: triggers after a number of state transitions."
|
||
}
|
||
},
|
||
"opt_trigger_threshold": {
|
||
"title": "Threshold Configuration",
|
||
"description": "Set threshold values for **{entity_id}** ({attribute}).\nCurrent: **{current_value} {unit}** | Avg: {average} | Range: {minimum}–{maximum} ({data_period}d)\nSuggested above: {suggested_above} | Suggested below: {suggested_below}",
|
||
"data": {
|
||
"trigger_above": "Trigger when above",
|
||
"trigger_below": "Trigger when below",
|
||
"trigger_for_minutes": "For at least (minutes)",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_above": "Trigger maintenance when value exceeds this threshold.",
|
||
"trigger_below": "Trigger maintenance when value falls below this threshold.",
|
||
"trigger_for_minutes": "Value must exceed threshold for this many minutes before triggering.",
|
||
"interval_days": "Optional time-based safety interval in addition to the sensor trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning."
|
||
}
|
||
},
|
||
"opt_trigger_counter": {
|
||
"title": "Counter Configuration",
|
||
"description": "Set counter target for {entity_id} ({attribute}). Current: {current_value} {unit}.",
|
||
"data": {
|
||
"trigger_target_value": "Target value",
|
||
"trigger_delta_mode": "Delta mode (count changes, not absolute)",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_target_value": "Trigger maintenance when this accumulated value is reached.",
|
||
"trigger_delta_mode": "If enabled, counts the difference from a baseline instead of the absolute value.",
|
||
"interval_days": "Optional time-based safety interval in addition to the counter trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning."
|
||
}
|
||
},
|
||
"opt_trigger_state_change": {
|
||
"title": "State Change Configuration",
|
||
"description": "Count state transitions of {entity_id}.",
|
||
"data": {
|
||
"trigger_from_state": "From state (optional)",
|
||
"trigger_to_state": "To state (optional)",
|
||
"trigger_target_changes": "Number of changes to trigger",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_from_state": "Only count transitions from this state. Leave empty for any.",
|
||
"trigger_to_state": "Only count transitions to this state. Leave empty for any.",
|
||
"trigger_target_changes": "Number of matching state changes before triggering maintenance.",
|
||
"interval_days": "Optional time-based safety interval in addition to the state change trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning."
|
||
}
|
||
},
|
||
"opt_trigger_runtime": {
|
||
"title": "Runtime Configuration",
|
||
"description": "Track accumulated runtime of {entity_id}.",
|
||
"data": {
|
||
"trigger_runtime_hours": "Target runtime (hours)",
|
||
"trigger_on_states": "Active states (comma-separated)",
|
||
"interval_days": "Safety interval",
|
||
"interval_unit": "Interval unit",
|
||
"warning_days": "Warning days before due",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_runtime_hours": "Trigger maintenance after this many hours of accumulated runtime.",
|
||
"trigger_on_states": "Which sensor states count as 'active'. Leave empty for default: on, 1, true. Example: in_use, running",
|
||
"interval_days": "Optional time-based safety interval in addition to the runtime trigger.",
|
||
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
|
||
"warning_days": "Number of days before due date to show a warning."
|
||
}
|
||
},
|
||
"compound_logic": {
|
||
"title": "Compound Trigger",
|
||
"description": "Choose how multiple conditions should be combined.",
|
||
"data": {
|
||
"compound_logic": "Logic",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"compound_logic": "AND = all conditions must trigger. OR = any condition triggers."
|
||
}
|
||
},
|
||
"compound_condition_entity": {
|
||
"title": "Condition #{condition_num} — Entity",
|
||
"description": "Select the entity for this condition.",
|
||
"data": {
|
||
"trigger_entity": "Entity",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_entity": "The sensor entity to monitor for this condition."
|
||
}
|
||
},
|
||
"compound_condition_type": {
|
||
"title": "Condition #{condition_num} — Type",
|
||
"description": "How should this condition evaluate the sensor?",
|
||
"data": {
|
||
"trigger_type": "Trigger type",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_type": "The method used to determine when this condition triggers."
|
||
}
|
||
},
|
||
"compound_condition_threshold": {
|
||
"title": "Condition — Threshold",
|
||
"data": {
|
||
"trigger_above": "Trigger above",
|
||
"trigger_below": "Trigger below",
|
||
"trigger_for_minutes": "Duration (minutes)",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_above": "Trigger when value exceeds this threshold.",
|
||
"trigger_below": "Trigger when value drops below this threshold.",
|
||
"trigger_for_minutes": "Value must remain beyond threshold for this duration."
|
||
}
|
||
},
|
||
"compound_condition_counter": {
|
||
"title": "Condition — Counter",
|
||
"data": {
|
||
"trigger_target_value": "Target value",
|
||
"trigger_delta_mode": "Delta mode",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_target_value": "Trigger when accumulated value reaches this target.",
|
||
"trigger_delta_mode": "Count changes from a baseline instead of the absolute value."
|
||
}
|
||
},
|
||
"compound_condition_state_change": {
|
||
"title": "Condition — State Change",
|
||
"data": {
|
||
"trigger_from_state": "From state",
|
||
"trigger_to_state": "To state",
|
||
"trigger_target_changes": "Number of changes",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_from_state": "Only count transitions from this state. Leave empty for any.",
|
||
"trigger_to_state": "Only count transitions to this state. Leave empty for any.",
|
||
"trigger_target_changes": "Number of matching state changes before triggering."
|
||
}
|
||
},
|
||
"compound_condition_runtime": {
|
||
"title": "Condition — Runtime",
|
||
"data": {
|
||
"trigger_runtime_hours": "Target runtime (hours)",
|
||
"trigger_on_states": "Active states",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"trigger_runtime_hours": "Trigger after this many hours of accumulated runtime.",
|
||
"trigger_on_states": "Sensor states counted as 'active'. Leave empty for default."
|
||
}
|
||
},
|
||
"compound_review": {
|
||
"title": "Compound Trigger Review",
|
||
"description": "{condition_count} condition(s) configured with {compound_logic} logic.",
|
||
"data": {
|
||
"compound_action": "Action",
|
||
"go_back": "Go back"
|
||
}
|
||
},
|
||
"adaptive_scheduling": {
|
||
"title": "Adaptive Scheduling",
|
||
"description": "Configure smart interval adaptation for {task_name}. The system learns from your completion feedback to suggest better intervals.",
|
||
"data": {
|
||
"adaptive_enabled": "Enable adaptive scheduling",
|
||
"ewa_alpha": "Learning rate (alpha)",
|
||
"min_interval_days": "Minimum interval (days)",
|
||
"max_interval_days": "Maximum interval (days)",
|
||
"seasonal_enabled": "Enable seasonal awareness",
|
||
"sensor_prediction_enabled": "Enable sensor-driven predictions",
|
||
"environmental_entity": "Environmental sensor (optional)",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"adaptive_enabled": "When enabled, the system will learn from your feedback and suggest optimal maintenance intervals.",
|
||
"ewa_alpha": "How quickly the algorithm adapts to new data. Higher = more responsive, lower = more stable.",
|
||
"min_interval_days": "The shortest interval the system will ever recommend.",
|
||
"max_interval_days": "The longest interval the system will ever recommend.",
|
||
"seasonal_enabled": "Adjust recommendations based on seasonal patterns learned from your maintenance history.",
|
||
"sensor_prediction_enabled": "Analyze sensor trends to predict when thresholds will be reached and suggest earlier maintenance if needed.",
|
||
"environmental_entity": "Link a temperature, humidity or pressure sensor to correlate environmental conditions with maintenance intervals.",
|
||
"go_back": "Return to task actions without saving."
|
||
}
|
||
},
|
||
"object_settings": {
|
||
"title": "Object Settings",
|
||
"description": "Edit object details.",
|
||
"data": {
|
||
"name": "Object name",
|
||
"manufacturer": "Manufacturer",
|
||
"model": "Model",
|
||
"serial_number": "Serial number",
|
||
"documentation_url": "Manual / documentation URL",
|
||
"notes": "Notes",
|
||
"area_id": "Area",
|
||
"installation_date": "Installation date",
|
||
"warranty_expiry": "Warranty expiry",
|
||
"go_back": "Go back"
|
||
},
|
||
"data_description": {
|
||
"name": "A unique name for this maintenance object (e.g., 'Pool Pump', 'Car').",
|
||
"manufacturer": "The manufacturer of the object.",
|
||
"model": "The model name or number.",
|
||
"serial_number": "The serial number of the object.",
|
||
"documentation_url": "Optional link to a PDF manual, vendor page, or any URL with reference info for this object.",
|
||
"notes": "Free-form notes about the object — part numbers, procedures, settings reminders, etc.",
|
||
"area_id": "The area in your home where this object is located.",
|
||
"installation_date": "When this object was installed or purchased.",
|
||
"warranty_expiry": "When the manufacturer warranty for this object expires.",
|
||
"go_back": "Return to the main menu without saving."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"entity": {
|
||
"button": {
|
||
"button_complete": {
|
||
"name": "{task_name} Complete"
|
||
},
|
||
"button_skip": {
|
||
"name": "{task_name} Skip"
|
||
},
|
||
"button_reset": {
|
||
"name": "{task_name} Reset"
|
||
}
|
||
},
|
||
"sensor": {
|
||
"maintenance_task": {
|
||
"name": "{task_name}",
|
||
"state": {
|
||
"ok": "OK",
|
||
"due_soon": "Due Soon",
|
||
"overdue": "Overdue",
|
||
"triggered": "Triggered",
|
||
"archived": "Archived",
|
||
"paused": "Paused"
|
||
},
|
||
"state_attributes": {
|
||
"maintenance_type": {
|
||
"name": "Maintenance type",
|
||
"state": {
|
||
"cleaning": "Cleaning",
|
||
"inspection": "Inspection",
|
||
"replacement": "Replacement",
|
||
"calibration": "Calibration",
|
||
"service": "Service",
|
||
"reading": "Reading",
|
||
"custom": "Custom"
|
||
}
|
||
},
|
||
"schedule_type": {
|
||
"name": "Schedule type",
|
||
"state": {
|
||
"time_based": "Time-based",
|
||
"sensor_based": "Sensor-based",
|
||
"one_time": "One-time",
|
||
"manual": "Manual"
|
||
}
|
||
},
|
||
"interval_days": {
|
||
"name": "Interval"
|
||
},
|
||
"interval_unit": {
|
||
"name": "Interval unit"
|
||
},
|
||
"interval_anchor": {
|
||
"name": "Interval anchor",
|
||
"state": {
|
||
"completion": "From completion",
|
||
"planned": "From planned date"
|
||
}
|
||
},
|
||
"due_date": {
|
||
"name": "Due date"
|
||
},
|
||
"warning_days": {
|
||
"name": "Warning days"
|
||
},
|
||
"last_performed": {
|
||
"name": "Last performed"
|
||
},
|
||
"next_due": {
|
||
"name": "Next due"
|
||
},
|
||
"days_until_due": {
|
||
"name": "Days until due"
|
||
},
|
||
"parent_object": {
|
||
"name": "Parent object"
|
||
},
|
||
"times_performed": {
|
||
"name": "Times performed"
|
||
},
|
||
"total_cost": {
|
||
"name": "Total cost"
|
||
},
|
||
"average_duration": {
|
||
"name": "Average duration (min)"
|
||
},
|
||
"notes": {
|
||
"name": "Notes"
|
||
},
|
||
"documentation_url": {
|
||
"name": "Documentation URL"
|
||
},
|
||
"trigger_entity": {
|
||
"name": "Trigger entity"
|
||
},
|
||
"trigger_attribute": {
|
||
"name": "Trigger attribute"
|
||
},
|
||
"trigger_type": {
|
||
"name": "Trigger type",
|
||
"state": {
|
||
"threshold": "Threshold",
|
||
"counter": "Counter",
|
||
"state_change": "State change",
|
||
"runtime": "Runtime",
|
||
"compound": "Compound"
|
||
}
|
||
},
|
||
"trigger_active": {
|
||
"name": "Trigger active"
|
||
},
|
||
"trigger_current_value": {
|
||
"name": "Trigger current value"
|
||
},
|
||
"trigger_entity_state": {
|
||
"name": "Trigger entity state",
|
||
"state": {
|
||
"available": "Available",
|
||
"unavailable": "Unavailable",
|
||
"missing": "Missing",
|
||
"startup": "Startup"
|
||
}
|
||
},
|
||
"trigger_above": {
|
||
"name": "Trigger above"
|
||
},
|
||
"trigger_below": {
|
||
"name": "Trigger below"
|
||
},
|
||
"trigger_for_minutes": {
|
||
"name": "Trigger for (minutes)"
|
||
},
|
||
"trigger_target_value": {
|
||
"name": "Trigger target value"
|
||
},
|
||
"trigger_delta_mode": {
|
||
"name": "Trigger delta mode"
|
||
},
|
||
"trigger_baseline_value": {
|
||
"name": "Trigger baseline value"
|
||
},
|
||
"trigger_current_delta": {
|
||
"name": "Trigger current delta"
|
||
},
|
||
"trigger_from_state": {
|
||
"name": "Trigger from state"
|
||
},
|
||
"trigger_to_state": {
|
||
"name": "Trigger to state"
|
||
},
|
||
"trigger_target_changes": {
|
||
"name": "Trigger target changes"
|
||
},
|
||
"trigger_change_count": {
|
||
"name": "Trigger change count"
|
||
},
|
||
"trigger_runtime_hours": {
|
||
"name": "Target runtime (hours)"
|
||
},
|
||
"trigger_accumulated_hours": {
|
||
"name": "Accumulated runtime (hours)"
|
||
},
|
||
"trigger_remaining_hours": {
|
||
"name": "Remaining runtime (hours)"
|
||
},
|
||
"last_entry": {
|
||
"name": "Last entry"
|
||
},
|
||
"suggested_interval": {
|
||
"name": "Suggested interval"
|
||
},
|
||
"interval_confidence": {
|
||
"name": "Interval confidence",
|
||
"state": {
|
||
"low": "Low",
|
||
"medium": "Medium",
|
||
"high": "High"
|
||
}
|
||
},
|
||
"adaptive_scheduling_enabled": {
|
||
"name": "Adaptive scheduling enabled"
|
||
},
|
||
"seasonal_factor": {
|
||
"name": "Seasonal factor"
|
||
},
|
||
"seasonal_reason": {
|
||
"name": "Seasonal reason",
|
||
"state": {
|
||
"learned": "Learned",
|
||
"manual": "Manual"
|
||
}
|
||
},
|
||
"degradation_rate": {
|
||
"name": "Degradation rate"
|
||
},
|
||
"degradation_trend": {
|
||
"name": "Degradation trend",
|
||
"state": {
|
||
"rising": "Rising",
|
||
"falling": "Falling",
|
||
"stable": "Stable",
|
||
"insufficient_data": "Insufficient data"
|
||
}
|
||
},
|
||
"days_until_threshold": {
|
||
"name": "Days until threshold"
|
||
},
|
||
"threshold_prediction_confidence": {
|
||
"name": "Prediction confidence",
|
||
"state": {
|
||
"low": "Low",
|
||
"medium": "Medium",
|
||
"high": "High"
|
||
}
|
||
},
|
||
"environmental_factor": {
|
||
"name": "Environmental factor"
|
||
},
|
||
"environmental_entity": {
|
||
"name": "Environmental entity"
|
||
},
|
||
"weibull_beta": {
|
||
"name": "Weibull shape (β)"
|
||
},
|
||
"weibull_eta": {
|
||
"name": "Weibull scale (η)"
|
||
},
|
||
"weibull_r_squared": {
|
||
"name": "Weibull R²"
|
||
},
|
||
"weibull_beta_interpretation": {
|
||
"name": "Failure pattern",
|
||
"state": {
|
||
"early_failures": "Early failures",
|
||
"random_failures": "Random failures",
|
||
"wear_out": "Wear-out",
|
||
"highly_predictable": "Highly predictable"
|
||
}
|
||
},
|
||
"confidence_interval_low": {
|
||
"name": "Confidence interval (low)"
|
||
},
|
||
"confidence_interval_high": {
|
||
"name": "Confidence interval (high)"
|
||
}
|
||
}
|
||
},
|
||
"summary_overdue": {
|
||
"name": "Overdue"
|
||
},
|
||
"summary_due_soon": {
|
||
"name": "Due Soon"
|
||
},
|
||
"summary_triggered": {
|
||
"name": "Triggered"
|
||
},
|
||
"summary_needs_attention": {
|
||
"name": "Needs attention"
|
||
},
|
||
"summary_ok": {
|
||
"name": "OK"
|
||
},
|
||
"document_storage": {
|
||
"name": "Document storage"
|
||
},
|
||
"summary_total_tasks": {
|
||
"name": "Total tasks"
|
||
},
|
||
"next_due": {
|
||
"name": "{task_name} Next due"
|
||
},
|
||
"parts_to_reorder": {
|
||
"name": "Parts to reorder"
|
||
},
|
||
"batteries_to_replace": {
|
||
"name": "Batteries to replace"
|
||
}
|
||
},
|
||
"binary_sensor": {
|
||
"maintenance_task_due": {
|
||
"name": "{task_name} overdue",
|
||
"state_attributes": {
|
||
"maintenance_status": {
|
||
"name": "Maintenance status",
|
||
"state": {
|
||
"ok": "OK",
|
||
"due_soon": "Due Soon",
|
||
"overdue": "Overdue",
|
||
"triggered": "Triggered",
|
||
"archived": "Archived"
|
||
}
|
||
},
|
||
"days_until_due": {
|
||
"name": "Days until due"
|
||
},
|
||
"next_due": {
|
||
"name": "Next due"
|
||
},
|
||
"parent_object": {
|
||
"name": "Parent object"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"calendar": {
|
||
"maintenance_schedule": {
|
||
"name": "Maintenance Schedule"
|
||
}
|
||
},
|
||
"todo": {
|
||
"maintenance_todo": {
|
||
"name": "Maintenance"
|
||
}
|
||
}
|
||
},
|
||
"services": {
|
||
"complete": {
|
||
"name": "Complete Maintenance",
|
||
"description": "Mark a maintenance task as completed.",
|
||
"fields": {
|
||
"entity_id": {
|
||
"name": "Entity",
|
||
"description": "The maintenance sensor entity to complete."
|
||
},
|
||
"notes": {
|
||
"name": "Notes",
|
||
"description": "Optional notes about the maintenance performed."
|
||
},
|
||
"cost": {
|
||
"name": "Cost",
|
||
"description": "Cost of the maintenance performed."
|
||
},
|
||
"duration": {
|
||
"name": "Duration",
|
||
"description": "Duration of the maintenance in minutes."
|
||
},
|
||
"reading_value": {
|
||
"name": "Reading value",
|
||
"description": "Recorded value for reading-type tasks (meter reading, level check)."
|
||
}
|
||
}
|
||
},
|
||
"reset": {
|
||
"name": "Reset Maintenance",
|
||
"description": "Reset the last performed date of a maintenance task.",
|
||
"fields": {
|
||
"entity_id": {
|
||
"name": "Entity",
|
||
"description": "The maintenance sensor entity to reset."
|
||
},
|
||
"date": {
|
||
"name": "Date",
|
||
"description": "The date to set as last performed. Defaults to today."
|
||
}
|
||
}
|
||
},
|
||
"skip": {
|
||
"name": "Skip Maintenance",
|
||
"description": "Skip the current maintenance cycle.",
|
||
"fields": {
|
||
"entity_id": {
|
||
"name": "Entity",
|
||
"description": "The maintenance sensor entity to skip."
|
||
},
|
||
"reason": {
|
||
"name": "Reason",
|
||
"description": "Optional reason for skipping the maintenance."
|
||
}
|
||
}
|
||
},
|
||
"export_data": {
|
||
"name": "Export Data",
|
||
"description": "Export all maintenance data as JSON or YAML.",
|
||
"fields": {
|
||
"format": {
|
||
"name": "Format",
|
||
"description": "Output format for the exported data (json or yaml)."
|
||
},
|
||
"include_history": {
|
||
"name": "Include History",
|
||
"description": "Whether to include task history entries in the export."
|
||
}
|
||
}
|
||
},
|
||
"add_object": {
|
||
"name": "Add Object",
|
||
"description": "Create a new maintenance object (device). Returns the new entry_id.",
|
||
"fields": {
|
||
"name": {
|
||
"name": "Name",
|
||
"description": "Name of the object/device."
|
||
},
|
||
"area_id": {
|
||
"name": "Area",
|
||
"description": "Area to assign the device to."
|
||
},
|
||
"manufacturer": {
|
||
"name": "Manufacturer"
|
||
},
|
||
"model": {
|
||
"name": "Model"
|
||
},
|
||
"serial_number": {
|
||
"name": "Serial number"
|
||
},
|
||
"installation_date": {
|
||
"name": "Installation date"
|
||
},
|
||
"warranty_expiry": {
|
||
"name": "Warranty expiry",
|
||
"description": "Warranty expiry date (used for asset tracking and reminders)."
|
||
},
|
||
"documentation_url": {
|
||
"name": "Documentation URL",
|
||
"description": "Link to a manual or vendor page (http/https only)."
|
||
},
|
||
"notes": {
|
||
"name": "Notes"
|
||
}
|
||
}
|
||
},
|
||
"add_task": {
|
||
"name": "Add Task",
|
||
"description": "Add a maintenance task to an existing object. Returns the new task_id.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Object",
|
||
"description": "The maintenance object to add the task to."
|
||
},
|
||
"name": {
|
||
"name": "Name",
|
||
"description": "Name of the task."
|
||
},
|
||
"task_type": {
|
||
"name": "Task type",
|
||
"description": "Free-form category (e.g. inspection, service, custom)."
|
||
},
|
||
"schedule_type": {
|
||
"name": "Schedule type",
|
||
"description": "time_based (interval) or sensor_based. Default: time_based."
|
||
},
|
||
"interval_days": {
|
||
"name": "Interval",
|
||
"description": "Interval length between occurrences (for time-based tasks), combined with interval_unit."
|
||
},
|
||
"interval_unit": {
|
||
"name": "Interval unit",
|
||
"description": "Unit for the interval: days, weeks, months or years. Default: days."
|
||
},
|
||
"due_date": {
|
||
"name": "Due date",
|
||
"description": "Due date (YYYY-MM-DD) for a one-time task (schedule_type one_time)."
|
||
},
|
||
"schedule": {
|
||
"name": "Calendar schedule",
|
||
"description": "Nested recurrence for the calendar kinds, e.g. kind=nth_weekday, nth=1, weekday=5 for the 1st Saturday (weekday 0=Mon ... 6=Sun), kind=weekdays, weekdays=[0, 3] for Mon & Thu, or kind=day_of_month, day=15. Takes precedence over interval_days / schedule_type."
|
||
},
|
||
"warning_days": {
|
||
"name": "Warning (days)",
|
||
"description": "Days before due to enter the due-soon window."
|
||
},
|
||
"enabled": {
|
||
"name": "Enabled"
|
||
},
|
||
"notes": {
|
||
"name": "Notes"
|
||
}
|
||
}
|
||
},
|
||
"update_task": {
|
||
"name": "Update Task",
|
||
"description": "Update the common fields of an existing maintenance task. Only the provided fields change.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Object",
|
||
"description": "The maintenance object the task belongs to."
|
||
},
|
||
"task_id": {
|
||
"name": "Task ID",
|
||
"description": "The id of the task to update (see list_tasks)."
|
||
},
|
||
"name": {
|
||
"name": "Name",
|
||
"description": "New name of the task."
|
||
},
|
||
"task_type": {
|
||
"name": "Task type",
|
||
"description": "Category (cleaning, inspection, replacement, calibration, service, reading, custom)."
|
||
},
|
||
"schedule_type": {
|
||
"name": "Schedule type",
|
||
"description": "time_based (interval), sensor_based, one_time or manual."
|
||
},
|
||
"interval_days": {
|
||
"name": "Interval",
|
||
"description": "Interval length between occurrences, combined with interval_unit."
|
||
},
|
||
"interval_unit": {
|
||
"name": "Interval unit",
|
||
"description": "days, weeks, months or years."
|
||
},
|
||
"due_date": {
|
||
"name": "Due date",
|
||
"description": "Due date for one-time tasks (YYYY-MM-DD)."
|
||
},
|
||
"schedule": {
|
||
"name": "Schedule (calendar recurrence)",
|
||
"description": "Nested recurrence object for the calendar kinds, e.g. kind=day_of_month, day=-1, business=true. Takes precedence over the flat fields."
|
||
},
|
||
"warning_days": {
|
||
"name": "Warning days",
|
||
"description": "Days before due when the task turns due-soon."
|
||
},
|
||
"enabled": {
|
||
"name": "Enabled",
|
||
"description": "Whether the task is active."
|
||
},
|
||
"notes": {
|
||
"name": "Notes",
|
||
"description": "Free-form notes on the task."
|
||
},
|
||
"priority": {
|
||
"name": "Priority",
|
||
"description": "low, normal or high."
|
||
},
|
||
"labels": {
|
||
"name": "Labels",
|
||
"description": "List of tags for filtering and reporting."
|
||
}
|
||
}
|
||
},
|
||
"delete_task": {
|
||
"name": "Delete Task",
|
||
"description": "Delete a maintenance task including its history. This cannot be undone - consider archiving via the panel instead.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Object",
|
||
"description": "The maintenance object the task belongs to."
|
||
},
|
||
"task_id": {
|
||
"name": "Task ID",
|
||
"description": "The id of the task to delete (see list_tasks)."
|
||
}
|
||
}
|
||
},
|
||
"list_tasks": {
|
||
"name": "List Tasks",
|
||
"description": "Return a snapshot of active maintenance tasks (id, name, status, next due) for automations, scripts and voice. Supports filtering by object and status.",
|
||
"fields": {
|
||
"entry_id": {
|
||
"name": "Object",
|
||
"description": "Only return tasks of this maintenance object."
|
||
},
|
||
"status": {
|
||
"name": "Status",
|
||
"description": "Only return tasks with this status."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"selector": {
|
||
"maintenance_type": {
|
||
"options": {
|
||
"cleaning": "Cleaning",
|
||
"inspection": "Inspection",
|
||
"replacement": "Replacement",
|
||
"calibration": "Calibration",
|
||
"service": "Service",
|
||
"reading": "Reading",
|
||
"custom": "Custom"
|
||
}
|
||
},
|
||
"schedule_type": {
|
||
"options": {
|
||
"time_based": "Time-based",
|
||
"weekdays": "Weekdays",
|
||
"nth_weekday": "Nth weekday of month",
|
||
"day_of_month": "Day of month",
|
||
"sensor_based": "Sensor-based",
|
||
"one_time": "One-time",
|
||
"manual": "Manual"
|
||
}
|
||
},
|
||
"interval_unit": {
|
||
"options": {
|
||
"days": "Days",
|
||
"weeks": "Weeks",
|
||
"months": "Months",
|
||
"years": "Years"
|
||
}
|
||
},
|
||
"trigger_type": {
|
||
"options": {
|
||
"threshold": "Threshold",
|
||
"counter": "Counter",
|
||
"state_change": "State Change",
|
||
"runtime": "Runtime",
|
||
"compound": "Compound (Multiple Conditions)"
|
||
}
|
||
},
|
||
"compound_logic": {
|
||
"options": {
|
||
"and": "AND (all conditions must trigger)",
|
||
"or": "OR (any condition triggers)"
|
||
}
|
||
},
|
||
"entity_logic": {
|
||
"options": {
|
||
"any": "Any entity triggers",
|
||
"all": "All entities must trigger"
|
||
}
|
||
},
|
||
"notification_title_style": {
|
||
"options": {
|
||
"default": "Default (per-status title)",
|
||
"object_name": "Object name as title",
|
||
"task_name": "Task name as title"
|
||
}
|
||
}
|
||
},
|
||
"issues": {
|
||
"missing_global_entry": {
|
||
"title": "Maintenance Supporter global configuration is missing",
|
||
"fix_flow": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Restore the global configuration",
|
||
"description": "Your maintenance objects still exist, but the global \"Maintenance Supporter\" entry was deleted — so the summary sensors, the sidebar panel and the dashboard counts are gone, and the KPI chips read \"unknown\".\n\nClick **Submit** to recreate the global configuration with default settings. Your objects and tasks are left untouched. You can adjust notifications and defaults afterwards under Settings → Devices & Services.\n\n(To leave things as they are, use Home Assistant's **Ignore** button.)"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"document_storage_issues": {
|
||
"title": "Document storage needs cleanup",
|
||
"fix_flow": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Reclaim document storage",
|
||
"description": "Maintenance Supporter found unreferenced files and/or dead records in document storage — usually the aftermath of a crash, an external file deletion, or a partial restore.\n\nClick **Submit** to reclaim the space: unreferenced and stale files are deleted and dead document records are removed. Files still referenced by a document are never touched.\n\n(To dismiss without cleaning up, use Home Assistant's **Ignore** button on the Repairs page.)"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"missing_trigger_entity": {
|
||
"title": "Trigger sensor not found: {task_name}",
|
||
"fix_flow": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Missing trigger entity",
|
||
"description": "The sensor entity `{entity_id}` configured as trigger for task \"{task_name}\" on object \"{object_name}\" is no longer available.\n\nChoose how to resolve this issue:",
|
||
"menu_options": {
|
||
"replace_entity": "Replace with a different entity",
|
||
"remove_trigger": "Remove the sensor trigger",
|
||
"dismiss": "Dismiss (will reappear)"
|
||
}
|
||
},
|
||
"replace_entity": {
|
||
"title": "Replace trigger entity",
|
||
"description": "Select a new entity to replace `{entity_id}` as trigger for task \"{task_name}\" on \"{object_name}\".",
|
||
"data": {
|
||
"new_entity_id": "New trigger entity"
|
||
},
|
||
"data_description": {
|
||
"new_entity_id": "Select the new sensor entity to use as trigger."
|
||
}
|
||
},
|
||
"remove_trigger": {
|
||
"title": "Remove sensor trigger",
|
||
"description": "This will remove the sensor trigger from task \"{task_name}\" on \"{object_name}\" and convert the schedule to time-based or manual. The maintenance history will be preserved.\n\nPrevious trigger entity: `{entity_id}`"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"orphan_admin_panel_user": {
|
||
"title": "Panel-access user no longer exists",
|
||
"fix_flow": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Orphaned user in panel-access list",
|
||
"description": "User `{user_id}…` is in the Maintenance Supporter panel-access list but no longer exists in Home Assistant. Probably the user was deleted.\n\nClick **Submit** to remove this user from the list. (To leave the issue alone, use Home Assistant's **Ignore** button on the Repairs page instead.)"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"stale_action_entity": {
|
||
"title": "Completion action references a deleted entity",
|
||
"fix_flow": {
|
||
"step": {
|
||
"init": {
|
||
"title": "Completion action: {stale_entity} no longer exists",
|
||
"description": "The task **{task_name}** has an `on_complete_action` configured to call a service on `{stale_entity}`, but that entity is no longer registered in Home Assistant.\n\nChoose how to repair:",
|
||
"menu_options": {
|
||
"replace_entity": "Replace with a different entity",
|
||
"remove_action": "Remove the completion action"
|
||
}
|
||
},
|
||
"replace_entity": {
|
||
"title": "Replace target entity",
|
||
"description": "Pick the entity to use instead of `{stale_entity}` for task **{task_name}**.",
|
||
"data": {
|
||
"new_entity": "New target entity"
|
||
}
|
||
},
|
||
"remove_action": {
|
||
"title": "Remove completion action",
|
||
"description": "Clear the `on_complete_action` from task **{task_name}** entirely. The task itself is unaffected — only the on-complete service-call is removed."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"notify_service_missing": {
|
||
"title": "Notification service `{service}` not found",
|
||
"description": "Maintenance Supporter is configured to send notifications via `{service}`, but that service does not currently exist in Home Assistant, so reminders fail silently.\n\nThis usually means the service was renamed, or the integration behind it (a mobile app, a notify group, …) was removed. To fix it: restore that service, or open **Settings → Devices & Services → Maintenance Supporter → Configure → General settings** and pick a valid `notify.*` service.\n\nNote: this only checks the configured service itself. If notifications reach some devices but not others, a member *inside* your notify group is likely misconfigured — that is not visible here; check Home Assistant's **system log** (Settings → System → Logs)."
|
||
}
|
||
},
|
||
"exceptions": {
|
||
"no_coordinator_for_entity": {
|
||
"message": "No maintenance coordinator found for entity {entity_id}."
|
||
},
|
||
"no_task_for_entity": {
|
||
"message": "No maintenance task found for entity {entity_id}."
|
||
}
|
||
},
|
||
"triggers": {
|
||
"task_became_overdue": {
|
||
"name": "A maintenance task became overdue",
|
||
"description": "Triggers when a maintenance task's status changes to overdue.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
},
|
||
"task_became_due_soon": {
|
||
"name": "A maintenance task became due soon",
|
||
"description": "Triggers when a maintenance task enters its warning window.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
},
|
||
"sensor_trigger_activated": {
|
||
"name": "A sensor trigger activated",
|
||
"description": "Triggers when a sensor-based maintenance task activates.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
},
|
||
"task_became_ok": {
|
||
"name": "A maintenance task returned to OK",
|
||
"description": "Triggers when a maintenance task no longer needs attention.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"conditions": {
|
||
"task_is_overdue": {
|
||
"name": "A maintenance task is overdue",
|
||
"description": "Tests if a maintenance task is overdue.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
},
|
||
"task_is_due_soon": {
|
||
"name": "A maintenance task is due soon",
|
||
"description": "Tests if a maintenance task is in its warning window.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
},
|
||
"task_is_triggered": {
|
||
"name": "A sensor trigger is active",
|
||
"description": "Tests if a sensor-based maintenance task is triggered.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
},
|
||
"task_needs_attention": {
|
||
"name": "A maintenance task needs attention",
|
||
"description": "Tests if a maintenance task is overdue or triggered.",
|
||
"fields": {
|
||
"behavior": {
|
||
"name": "Behavior"
|
||
},
|
||
"for": {
|
||
"name": "For"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|