441 lines
15 KiB
JSON
441 lines
15 KiB
JSON
{
|
|
"config": {
|
|
"step": {
|
|
"user": {
|
|
"title": "Configuração WashData",
|
|
"description": "Configure a sua máquina de lavar ou outro electrodoméstico.\n\nÉ necessário um sensor de potência.\n\n**De seguida, ser-lhe-á perguntado se deseja criar o seu primeiro perfil.**",
|
|
"data": {
|
|
"name": "Nome do dispositivo",
|
|
"device_type": "Tipo de dispositivo",
|
|
"power_sensor": "Sensor de potência",
|
|
"min_power": "Limiar mínimo de potência (W)"
|
|
},
|
|
"data_description": {
|
|
"name": "Um nome descritivo para este dispositivo (por exemplo, 'Máquina de lavar', 'Máquina de lavar loiça').",
|
|
"device_type": "Que tipo de electrodoméstico é este? Ajuda a personalizar a detecção e a rotulagem.",
|
|
"power_sensor": "A entidade do sensor que reporta o consumo de energia em tempo real (em watts) da sua tomada inteligente.",
|
|
"min_power": "Leituras de potência acima deste limiar (em watts) indicam que o electrodoméstico está a funcionar. Comece com 2W para a maioria dos dispositivos."
|
|
}
|
|
},
|
|
"reconfigure": {
|
|
"title": "Reconfigurar WashData",
|
|
"description": "Actualizar o nome do dispositivo, tipo de electrodoméstico ou sensor de potência.",
|
|
"data": {
|
|
"name": "Nome do dispositivo",
|
|
"device_type": "Tipo de dispositivo",
|
|
"power_sensor": "Sensor de potência",
|
|
"min_power": "Limiar mínimo de potência (W)"
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"cannot_connect": "Falha ao ligar",
|
|
"invalid_auth": "Autenticação inválida",
|
|
"unknown": "Erro inesperado",
|
|
"invalid_power": "O limiar de potência tem de ser maior do que 0"
|
|
},
|
|
"abort": {
|
|
"already_configured": "O dispositivo já está configurado",
|
|
"reconfigure_successful": "A reconfiguração foi bem-sucedida"
|
|
}
|
|
},
|
|
"options": {
|
|
"step": {
|
|
"init": {
|
|
"title": "Definições WashData",
|
|
"description": "Todas as definições -- detecção, correspondência, temporização, notificações, perfis e ciclos -- estão disponíveis no painel WashData. Utilize este formulário apenas para alterar o sensor de potência, tipo de dispositivo ou limiar de standby.",
|
|
"data": {
|
|
"name": "Nome do dispositivo",
|
|
"device_type": "Tipo de dispositivo",
|
|
"power_sensor": "Sensor de potência",
|
|
"min_power": "Limiar mínimo de potência (W)"
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"timer_default_message": "{device}: temporizador de {minutes} min",
|
|
"timer_pause_action_title": "Retomar ciclo",
|
|
"timer_pause_body_suffix": "O ciclo está em pausa. Abra o painel WashData para retomar.",
|
|
"notify_live_waiting_message": "{device}: ainda nenhum perfil reconhecido.",
|
|
"vs_typical_longer": "{pct}% mais longo do que o habitual",
|
|
"vs_typical_shorter": "{pct}% mais curto do que o habitual",
|
|
"invalid_power": "O limiar de potência tem de ser maior do que 0"
|
|
}
|
|
},
|
|
"selector": {
|
|
"device_type": {
|
|
"options": {
|
|
"washing_machine": "Máquina de lavar",
|
|
"dryer": "Secador",
|
|
"washer_dryer": "Combinação Lavadora e Secadora",
|
|
"dishwasher": "Máquina de lavar louça",
|
|
"air_fryer": "Fritadeira de ar",
|
|
"bread_maker": "Máquina de fazer pão",
|
|
"pump": "Bomba / Bomba de depósito",
|
|
"generic": "Outro (avançado)",
|
|
"other": "Dispositivo de limite"
|
|
}
|
|
}
|
|
},
|
|
"services": {
|
|
"label_cycle": {
|
|
"name": "Rotular ciclo",
|
|
"description": "Atribua um perfil existente a um ciclo anterior ou remova o rótulo.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData a rotular."
|
|
},
|
|
"cycle_id": {
|
|
"name": "ID do ciclo",
|
|
"description": "O ID do ciclo a rotular."
|
|
},
|
|
"profile_name": {
|
|
"name": "Nome do perfil",
|
|
"description": "O nome de um perfil existente (crie perfis no menu Gerir perfis). Deixe em branco para remover o rótulo."
|
|
}
|
|
}
|
|
},
|
|
"create_profile": {
|
|
"name": "Criar perfil",
|
|
"description": "Crie um novo perfil (autónomo ou baseado num ciclo de referência).",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData."
|
|
},
|
|
"profile_name": {
|
|
"name": "Nome do perfil",
|
|
"description": "Nome do novo perfil (ex.: 'Intensivo', 'Delicados')."
|
|
},
|
|
"reference_cycle_id": {
|
|
"name": "ID do ciclo de referência",
|
|
"description": "ID de ciclo opcional para basear este perfil."
|
|
}
|
|
}
|
|
},
|
|
"delete_profile": {
|
|
"name": "Eliminar perfil",
|
|
"description": "Elimine um perfil e opcionalmente remova o rótulo dos ciclos que o utilizam.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData."
|
|
},
|
|
"profile_name": {
|
|
"name": "Nome do perfil",
|
|
"description": "O perfil a eliminar."
|
|
},
|
|
"unlabel_cycles": {
|
|
"name": "Remover rótulo dos ciclos",
|
|
"description": "Remova o rótulo do perfil dos ciclos que utilizam este perfil."
|
|
}
|
|
}
|
|
},
|
|
"auto_label_cycles": {
|
|
"name": "Rotular automaticamente ciclos antigos",
|
|
"description": "Rotule retroactivamente ciclos sem rótulo usando correspondência de perfil.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData."
|
|
},
|
|
"confidence_threshold": {
|
|
"name": "Limiar de confiança",
|
|
"description": "Confiança mínima de correspondência (0,50-0,95) para aplicar rótulos."
|
|
}
|
|
}
|
|
},
|
|
"export_config": {
|
|
"name": "Exportar configuração",
|
|
"description": "Exporte os perfis, ciclos e definições deste dispositivo para um ficheiro JSON (por dispositivo).",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData a exportar."
|
|
},
|
|
"path": {
|
|
"name": "Caminho",
|
|
"description": "Caminho de ficheiro absoluto opcional para escrever (predefinição: /config/ha_washdata_export_{entry}.json)."
|
|
}
|
|
}
|
|
},
|
|
"import_config": {
|
|
"name": "Importar configuração",
|
|
"description": "Importe perfis, ciclos e definições para este dispositivo a partir de um ficheiro JSON de exportação (as definições podem ser substituídas).",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData para onde importar."
|
|
},
|
|
"path": {
|
|
"name": "Caminho",
|
|
"description": "Caminho absoluto para o ficheiro JSON de exportação a importar."
|
|
}
|
|
}
|
|
},
|
|
"submit_cycle_feedback": {
|
|
"name": "Enviar feedback do ciclo",
|
|
"description": "Confirme ou corrija um programa detectado automaticamente após um ciclo concluído. Forneça `entry_id` (avançado) ou `device_id` (recomendado).",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData (recomendado em vez de entry_id)."
|
|
},
|
|
"entry_id": {
|
|
"name": "ID de entrada",
|
|
"description": "O ID de entrada de configuração do dispositivo (alternativa ao device_id)."
|
|
},
|
|
"cycle_id": {
|
|
"name": "ID do ciclo",
|
|
"description": "O ID do ciclo mostrado na notificação/registos de feedback."
|
|
},
|
|
"user_confirmed": {
|
|
"name": "Confirmar programa detectado",
|
|
"description": "Defina como verdadeiro se o programa detectado estiver correcto."
|
|
},
|
|
"corrected_profile": {
|
|
"name": "Perfil corrigido",
|
|
"description": "Se não confirmar, forneça o nome correcto do perfil/programa."
|
|
},
|
|
"corrected_duration": {
|
|
"name": "Duração corrigida (segundos)",
|
|
"description": "Duração corrigida opcional em segundos."
|
|
},
|
|
"notes": {
|
|
"name": "Notas",
|
|
"description": "Notas opcionais sobre este ciclo."
|
|
}
|
|
}
|
|
},
|
|
"record_start": {
|
|
"name": "Gravar início do ciclo",
|
|
"description": "Comece a gravar manualmente um ciclo limpo (ignora toda a lógica de correspondência).",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData a gravar."
|
|
}
|
|
}
|
|
},
|
|
"record_stop": {
|
|
"name": "Gravar paragem do ciclo",
|
|
"description": "Parar a gravação manual.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData para parar a gravação."
|
|
}
|
|
}
|
|
},
|
|
"trim_cycle": {
|
|
"name": "Cortar ciclo",
|
|
"description": "Corte os dados de potência de um ciclo anterior para uma janela temporal específica.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData."
|
|
},
|
|
"cycle_id": {
|
|
"name": "ID do ciclo",
|
|
"description": "O ID do ciclo a cortar."
|
|
},
|
|
"trim_start_s": {
|
|
"name": "Início do corte (segundos)",
|
|
"description": "Manter dados a partir deste deslocamento em segundos. Predefinição: 0."
|
|
},
|
|
"trim_end_s": {
|
|
"name": "Fim do corte (segundos)",
|
|
"description": "Manter dados até este deslocamento em segundos. Predefinição = duração total."
|
|
}
|
|
}
|
|
},
|
|
"pause_cycle": {
|
|
"name": "Pausar ciclo",
|
|
"description": "Pause o ciclo ativo para um dispositivo WashData.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData a ser pausado."
|
|
}
|
|
}
|
|
},
|
|
"resume_cycle": {
|
|
"name": "Retomar ciclo",
|
|
"description": "Retome um ciclo pausado para um dispositivo WashData.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData a ser retomado."
|
|
}
|
|
}
|
|
},
|
|
"trigger_ml_training": {
|
|
"name": "Iniciar treino de ML",
|
|
"description": "Retreinar manualmente os modelos de ML no dispositivo a partir dos ciclos rotulados do próprio dispositivo (experimental).",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Dispositivo",
|
|
"description": "O dispositivo WashData para retreinar modelos."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"entity": {
|
|
"binary_sensor": {
|
|
"running": {
|
|
"name": "A funcionar"
|
|
},
|
|
"match_ambiguity": {
|
|
"name": "Ambiguidade de correspondência"
|
|
}
|
|
},
|
|
"sensor": {
|
|
"washer_state": {
|
|
"name": "Estado",
|
|
"state": {
|
|
"off": "Desligado",
|
|
"idle": "Inactivo",
|
|
"starting": "A iniciar",
|
|
"running": "A funcionar",
|
|
"paused": "Em pausa",
|
|
"user_paused": "Em pausa pelo utilizador",
|
|
"ending": "A terminar",
|
|
"finished": "Concluído",
|
|
"anti_wrinkle": "Anti-vincos",
|
|
"interrupted": "Interrompido",
|
|
"force_stopped": "Parado forçosamente",
|
|
"rinse": "Enxaguar",
|
|
"unknown": "Desconhecido",
|
|
"clean": "Limpar",
|
|
"delay_wait": "Esperando para começar"
|
|
}
|
|
},
|
|
"washer_program": {
|
|
"name": "Programa"
|
|
},
|
|
"time_remaining": {
|
|
"name": "Tempo restante"
|
|
},
|
|
"total_duration": {
|
|
"name": "Duração total"
|
|
},
|
|
"cycle_progress": {
|
|
"name": "Progresso"
|
|
},
|
|
"current_power": {
|
|
"name": "Potência actual"
|
|
},
|
|
"elapsed_time": {
|
|
"name": "Tempo decorrido"
|
|
},
|
|
"debug_info": {
|
|
"name": "Informação de depuração"
|
|
},
|
|
"match_confidence": {
|
|
"name": "Confiança na correspondência"
|
|
},
|
|
"top_candidates": {
|
|
"name": "Principais candidatos",
|
|
"state": {
|
|
"none": "Nenhum"
|
|
}
|
|
},
|
|
"ambiguity": {
|
|
"name": "Pontuação de ambiguidade"
|
|
},
|
|
"current_phase": {
|
|
"name": "Fase actual"
|
|
},
|
|
"profile_cycle_count": {
|
|
"name": "Perfil {profile_name} - contagem",
|
|
"unit_of_measurement": "ciclos"
|
|
},
|
|
"suggestions": {
|
|
"name": "Definições sugeridas disponíveis"
|
|
},
|
|
"pump_runs_today": {
|
|
"name": "Funcionamento da bomba (últimas 24 horas)"
|
|
},
|
|
"cycle_count": {
|
|
"name": "Contagem de ciclos"
|
|
},
|
|
"energy_total": {
|
|
"name": "Energia total"
|
|
}
|
|
},
|
|
"select": {
|
|
"program_select": {
|
|
"name": "Programa do ciclo",
|
|
"state": {
|
|
"auto_detect": "Detecção automática"
|
|
}
|
|
}
|
|
},
|
|
"button": {
|
|
"force_end_cycle": {
|
|
"name": "Forçar fim do ciclo"
|
|
},
|
|
"pause_cycle": {
|
|
"name": "Pausar ciclo"
|
|
},
|
|
"resume_cycle": {
|
|
"name": "Retomar ciclo"
|
|
},
|
|
"record_start": {
|
|
"name": "Iniciar gravação do ciclo"
|
|
},
|
|
"record_stop": {
|
|
"name": "Parar gravação do ciclo"
|
|
}
|
|
}
|
|
},
|
|
"exceptions": {
|
|
"device_id_required": {
|
|
"message": "É necessário um device_id válido."
|
|
},
|
|
"cycle_id_required": {
|
|
"message": "É necessário um cycle_id válido."
|
|
},
|
|
"profile_name_required": {
|
|
"message": "É necessário um profile_name válido."
|
|
},
|
|
"device_not_found": {
|
|
"message": "Dispositivo não encontrado."
|
|
},
|
|
"no_config_entry": {
|
|
"message": "Nenhuma entrada de configuração encontrada para o dispositivo."
|
|
},
|
|
"integration_not_loaded": {
|
|
"message": "Integração não carregada para este dispositivo."
|
|
},
|
|
"cycle_not_found_or_no_power": {
|
|
"message": "Ciclo não encontrado ou não possui dados de potência."
|
|
},
|
|
"trim_failed_empty_window": {
|
|
"message": "Corte falhou - ciclo não encontrado, sem dados de potência ou a janela resultante está vazia."
|
|
},
|
|
"trim_invalid_range": {
|
|
"message": "trim_end_s deve ser maior que trim_start_s."
|
|
},
|
|
"no_active_cycle": {
|
|
"message": "Nenhum ciclo ativo para pausar ou retomar."
|
|
},
|
|
"path_not_allowed": {
|
|
"message": "Caminho não permitido: {path}. Adicione o respetivo diretório a 'allowlist_external_dirs' no configuration.yaml."
|
|
},
|
|
"create_profile_failed": {
|
|
"message": "Não foi possível criar o perfil: {error}"
|
|
},
|
|
"export_path_exists": {
|
|
"message": "O destino de exportação já existe: {path}. Escolha um caminho diferente ou remova primeiro o ficheiro existente."
|
|
},
|
|
"export_write_failed": {
|
|
"message": "Não foi possível escrever a exportação em {path}: {error}"
|
|
},
|
|
"assign_profile_failed": {
|
|
"message": "Não foi possível atribuir o perfil: {error}"
|
|
}
|
|
}
|
|
}
|