{ "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." } }, "first_profile": { "title": "Criar primeiro perfil", "description": "Um **Ciclo** é uma operação completa do seu electrodoméstico (por exemplo, uma carga de roupa). Um **Perfil** agrupa esses ciclos por tipo (por exemplo, 'Algodão', 'Lavagem Rápida'). Criar um perfil agora ajuda a integração a estimar a duração de imediato.\n\nPode seleccionar manualmente este perfil nos controlos do dispositivo se não for detectado automaticamente.\n\n**Deixe 'Nome do perfil' em branco para ignorar este passo.**", "data": { "profile_name": "Nome do perfil (opcional)", "manual_duration": "Duração estimada (minutos)" } }, "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}" } } }