1342 lines
79 KiB
JSON
1342 lines
79 KiB
JSON
{
|
||
"config": {
|
||
"step": {
|
||
"user": {
|
||
"title": "WashData-Setup",
|
||
"description": "Konfigurieren Sie Ihre Waschmaschine oder ein anderes Gerät.\n\nLeistungssensor ist erforderlich.\n\n**Als nächstes werden Sie gefragt, ob Sie Ihr erstes Profil erstellen möchten.**",
|
||
"data": {
|
||
"name": "Gerätename",
|
||
"device_type": "Gerätetyp",
|
||
"power_sensor": "Leistungssensor",
|
||
"min_power": "Mindestleistungsschwelle (W)"
|
||
},
|
||
"data_description": {
|
||
"name": "Ein benutzerfreundlicher Name für dieses Gerät (z. B. „Waschmaschine“, „Geschirrspüler“).",
|
||
"device_type": "Um welche Art von Gerät handelt es sich? Dies hilft bei der individuellen Erkennung und Zuordnung.",
|
||
"power_sensor": "Die Sensoreinheit, die den Stromverbrauch (in Watt) Ihres Smart Plugs in Echtzeit meldet.",
|
||
"min_power": "Leistungswerte über diesem Schwellwert (in Watt) zeigen an, dass das Gerät läuft. Für die meisten Geräte ist 2W ein guter Anfang."
|
||
}
|
||
},
|
||
"first_profile": {
|
||
"title": "Erstes Profil erstellen",
|
||
"description": "Ein **Zyklus** ist ein vollständiger Durchlauf Ihres Geräts (z. B. eine Ladung Wäsche). Ein **Profil** gruppiert diese Programme nach Typ (z. B. „Baumwolle“, „Schnellwäsche“). Wenn Sie jetzt ein Profil erstellen, kann die Integrationsdauer sofort geschätzt werden.\n\nSie können dieses Profil in der Gerätesteuerung manuell auswählen, wenn es nicht automatisch erkannt wird.\n\n**Lassen Sie „Profilname“ leer, um diesen Schritt zu überspringen.**",
|
||
"data": {
|
||
"profile_name": "Profilname (optional)",
|
||
"manual_duration": "Geschätzte Dauer (Minuten)"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"cannot_connect": "Verbindung konnte nicht hergestellt werden",
|
||
"invalid_auth": "Ungültige Authentifizierung",
|
||
"unknown": "Unerwarteter Fehler"
|
||
},
|
||
"abort": {
|
||
"already_configured": "Gerät ist bereits konfiguriert"
|
||
}
|
||
},
|
||
"options": {
|
||
"step": {
|
||
"init": {
|
||
"menu_options": {
|
||
"learning_feedbacks": "Lern-Feedbacks überprüfen",
|
||
"settings": "Einstellungen",
|
||
"notifications": "Benachrichtigungen",
|
||
"manage_cycles": "Zyklen verwalten",
|
||
"manage_profiles": "Profile verwalten",
|
||
"manage_phase_catalog": "Phasenkatalog verwalten",
|
||
"record_cycle": "Aufnahmezyklus (manuell)",
|
||
"diagnostics": "Diagnose und Wartung"
|
||
}
|
||
},
|
||
"apply_suggestions": {
|
||
"title": "Vorgeschlagene Werte kopieren",
|
||
"description": "Dadurch werden die aktuellen Vorschlagswerte in Ihre gespeicherten Einstellungen kopiert. Dies ist eine einmalige Aktion und ermöglicht keine automatischen Überschreibungen.\n\nVorgeschlagene Werte zum Kopieren:\n{suggested}",
|
||
"data": {
|
||
"confirm": "Kopiervorgang bestätigen"
|
||
}
|
||
},
|
||
"apply_suggestions_confirm": {
|
||
"title": "Vorgeschlagenen Änderungen überprüfen",
|
||
"description": "WashData hat **{pending_count}** vorgeschlagene(n) Wert(e) gefunden, die angewendet werden sollen.\n\nÄnderungen:\n{changes}\n\n✅ Aktivieren Sie das Kontrollkästchen unten und klicken Sie auf **Senden**, um diese Änderungen sofort zu übernehmen und zu speichern.\n❌ Lassen Sie es deaktiviert und klicken Sie auf **Senden**, um den Vorgang abzubrechen und zurückzukehren.",
|
||
"data": {
|
||
"confirm_apply_suggestions": "Übernehmen und speichern Sie diese Änderungen"
|
||
}
|
||
},
|
||
"settings": {
|
||
"title": "Einstellungen",
|
||
"description": "{deprecation_warning}Erkennungsschwellwerte optimieren, Lernen und erweitertes Verhalten. Die Standardeinstellungen funktionieren für die meisten Setups gut.\n\nDerzeit verfügbare empfohlene Einstellungen: {suggestions_count}.\nWenn dies über 0 liegt, öffnen Sie die Erweiterten Einstellungen und verwenden Sie 'Vorgeschlagene Werte anwenden', um die Empfehlungen zu überprüfen.",
|
||
"data": {
|
||
"apply_suggestions": "Vorgeschlagene Werte anwenden",
|
||
"device_type": "Gerätetyp",
|
||
"power_sensor": "Leistungssensoreinheit",
|
||
"min_power": "Mindestleistung (W)",
|
||
"off_delay": "Zyklusendeverzögerung (s)",
|
||
"notify_actions": "Benachrichtigungsaktionen",
|
||
"notify_people": "Benachrichtigungen warten auf folgende Personen",
|
||
"notify_only_when_home": "Benachrichtigungen zurückhalten, bis ausgewählte Person zu Hause ist",
|
||
"notify_fire_events": "Home Assistant-Ereignisse auslösen",
|
||
"notify_start_services": "Zyklusstart – Benachrichtigungsziele",
|
||
"notify_finish_services": "Zyklusende – Benachrichtigungsziele",
|
||
"notify_live_services": "Live-Fortschritt – Benachrichtigungsziele",
|
||
"notify_before_end_minutes": "Benachrichtigung vor Abschluss (Minuten vor Ende)",
|
||
"notify_title": "Titel der Benachrichtigung",
|
||
"notify_icon": "Benachrichtigungssymbol",
|
||
"notify_start_message": "Format für Start-Benachrichtigung",
|
||
"notify_finish_message": "Format für Abschluss-Benachrichtigung",
|
||
"notify_pre_complete_message": "Format für Hinweis-Benachrichtigung",
|
||
"show_advanced": "Erweiterte Einstellungen bearbeiten (nächster Schritt)"
|
||
},
|
||
"data_description": {
|
||
"apply_suggestions": "Aktivieren um vom Lernalgorithmus vorgeschlagene Werte in das Formular zu kopieren. Vor dem Speichern überprüfen.\n\nEmpfohlen (vom Lernen):\n- min_power: {suggested_min_power} W\n- off_delay: {suggested_off_delay} s\n- watchdog_interval: {suggested_watchdog_interval} s\n- no_update_active_timeout: {suggested_no_update_active_timeout} s\n- profile_match_interval: {suggested_profile_match_interval} s\n- auto_label_confidence: {suggested_auto_label_confidence}\n- duration_tolerance: {suggested_duration_tolerance}\n- profile_duration_tolerance: {suggested_profile_duration_tolerance}\n- profile_match_min_duration_ratio: {suggested_profile_match_min_duration_ratio}\n- profile_match_max_duration_ratio: {suggested_profile_match_max_duration_ratio}\n- start_threshold_w: {suggested_start_threshold_w} W\n- stop_threshold_w: {suggested_stop_threshold_w} W\n- end_energy_threshold: {suggested_end_energy_threshold} Wh\n- running_dead_zone: {suggested_running_dead_zone} s\n{suggested_reason}",
|
||
"device_type": "Gerätetyp wählen (Waschmaschine, Trockner, Geschirrspüler, Kaffeemaschine, Elektroauto). Dieses Tag wird zur besseren Organisation bei jedem Zyklus gespeichert.",
|
||
"power_sensor": "Die Sensoreinheit meldet die Leistung in Echtzeit (in Watt). Sie können dies jederzeit ändern, ohne historische Daten zu verlieren – nützlich, wenn Sie einen Smart Plug austauschen.",
|
||
"min_power": "Leistungswerte über diesem Schwellwert (in Watt) zeigen an, dass das Gerät läuft. Für die meisten Geräte ist 2W ein guter Anfang.",
|
||
"off_delay": "Die geglättete Leistung muss für diesen Zeitraum (in Sekunden) unter dem Stoppschwellwert bleiben, um den Abschluss zu markieren. Standard: 120s.",
|
||
"notify_actions": "Optionale Home Assistant-Aktionssequenz zur Ausführung für Benachrichtigungen (Skripte, Benachrichtigung, TTS usw.). Wenn festgelegt, werden Aktionen vor dem Fallback-Benachrichtigungsdienst ausgeführt.",
|
||
"notify_people": "Personenentitäten für verzögerte Benachrichtigungen. Wenn diese Option aktiviert ist, wird die Benachrichtigung verzögert, bis mindestens eine ausgewählte Person zu Hause ist.",
|
||
"notify_only_when_home": "Wenn diese Option aktiviert ist, werden Benachrichtigungen verzögert, bis mindestens eine ausgewählte Person zu Hause ist.",
|
||
"notify_fire_events": "Wenn aktiviert, werden Home Assistant-Ereignisse für Zyklusstart und -ende (ha_washdata_cycle_started und ha_washdata_cycle_ended) ausgelöst, um Automatisierungen auszulösen.",
|
||
"notify_start_services": "Ein oder mehrere Benachrichtigungsdienste, die benachrichtigen, wenn ein Zyklus beginnt. Leer lassen, um Startbenachrichtigungen zu überspringen.",
|
||
"notify_finish_services": "Ein oder mehrere Benachrichtigungsdienste, die benachrichtigen, wenn ein Zyklus endet oder kurz vor dem Abschluss steht. Lassen Sie das Feld leer, um Abschlussbenachrichtigungen zu überspringen.",
|
||
"notify_live_services": "Ein oder mehrere Benachrichtigungsdienste, um während der Ausführung des Zyklus Live-Fortschrittsaktualisierungen zu erhalten (nur mobile Begleit-App). Leer lassen, um Live-Updates zu überspringen.",
|
||
"notify_before_end_minutes": "Wie viele Minuten vor dem voraussichtlichen Ende des Zyklus soll eine Benachrichtigung gesendet werden. Zum Deaktivieren auf 0 setzen. Standard: 0.",
|
||
"notify_title": "Benutzerdefinierter Titel für Benachrichtigungen. Unterstützt den Platzhalter {device}.",
|
||
"notify_icon": "Symbol zur Verwendung für Benachrichtigungen (z. B. mdi:washing-machine). Feld leer lassen, um ohne Symbol zu senden.",
|
||
"notify_start_message": "Nachricht wird gesendet, wenn ein Zyklus beginnt. Unterstützt den Platzhalter {device}.",
|
||
"notify_finish_message": "Nachricht wird gesendet, wenn ein Zyklus beendet ist. Unterstützt die Platzhalter {device}, {duration}, {program}, {energy_kwh}, {cost}.",
|
||
"notify_pre_complete_message": "Text der wiederkehrenden Live-Fortschrittsaktualisierungen während der Ausführung des Zyklus. Unterstützt die Platzhalter {device}, {minutes}, {program}."
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "Benachrichtigungen",
|
||
"description": "Benachrichtigungskanäle, Vorlagen und optionale Live-Fortschrittsaktualisierungen für Mobilgeräte konfigurieren.",
|
||
"data": {
|
||
"notify_actions": "Benachrichtigungsaktionen",
|
||
"notify_people": "Benachrichtigungen warten auf folgende Personen",
|
||
"notify_only_when_home": "Benachrichtigungen zurückhalten, bis ausgewählte Person zu Hause ist",
|
||
"notify_fire_events": "Home Assistant-Ereignisse auslösen",
|
||
"notify_start_services": "Zyklusstart – Benachrichtigungsziele",
|
||
"notify_finish_services": "Zyklusende – Benachrichtigungsziele",
|
||
"notify_live_services": "Live-Fortschritt – Benachrichtigungsziele",
|
||
"notify_before_end_minutes": "Benachrichtigung vor Abschluss (Minuten vor Ende)",
|
||
"notify_live_interval_seconds": "Live-Update-Intervall (Sekunden)",
|
||
"notify_live_overrun_percent": "Live-Update-Überschreitungszuschlag (%)",
|
||
"notify_live_chronometer": "Chronometer-Countdown-Timer",
|
||
"notify_title": "Titel der Benachrichtigung",
|
||
"notify_icon": "Benachrichtigungssymbol",
|
||
"notify_start_message": "Format für Start-Benachrichtigung",
|
||
"notify_finish_message": "Format für Abschluss-Benachrichtigung",
|
||
"notify_pre_complete_message": "Format für Hinweis-Benachrichtigung",
|
||
"energy_price_entity": "Energiepreis – Entität (optional)",
|
||
"energy_price_static": "Energiepreis – Statischer Wert (optional)",
|
||
"go_back": "Ohne Speichern zurückgehen",
|
||
"notify_reminder_message": "Reminder-Nachrichtenformat",
|
||
"notify_timeout_seconds": "Auto-Demiss Nach (Sekunden)",
|
||
"notify_channel": "Benachrichtigungskanal (Status/Live/Erinnerung)",
|
||
"notify_finish_channel": "Fertiger Notifizierungskanal"
|
||
},
|
||
"data_description": {
|
||
"go_back": "Aktivieren Sie dies und klicken Sie auf Senden, um alle obigen Änderungen zu verwerfen und zum Hauptmenü zurückzukehren.",
|
||
"notify_actions": "Optionale Home Assistant-Aktionssequenz zur Ausführung für Benachrichtigungen (Skripte, Benachrichtigung, TTS usw.). Wenn festgelegt, werden Aktionen vor dem Fallback-Benachrichtigungsdienst ausgeführt.",
|
||
"notify_people": "Personenentitäten für verzögerte Benachrichtigungen. Wenn diese Option aktiviert ist, wird die Benachrichtigung verzögert, bis mindestens eine ausgewählte Person zu Hause ist.",
|
||
"notify_only_when_home": "Wenn diese Option aktiviert ist, werden Benachrichtigungen verzögert, bis mindestens eine ausgewählte Person zu Hause ist.",
|
||
"notify_fire_events": "Wenn aktiviert, werden Home Assistant-Ereignisse für Zyklusstart und -ende (ha_washdata_cycle_started und ha_washdata_cycle_ended) ausgelöst, um Automatisierungen auszulösen.",
|
||
"notify_start_services": "Ein oder mehrere Benachrichtigungsdienste, die benachrichtigen, wenn ein Zyklus beginnt (z. B. notify.mobile_app_my_phone). Leer lassen, um Startbenachrichtigungen zu überspringen.",
|
||
"notify_finish_services": "Ein oder mehrere Benachrichtigungsdienste, die benachrichtigen, wenn ein Zyklus endet oder kurz vor dem Abschluss steht. Lassen Sie das Feld leer, um Abschlussbenachrichtigungen zu überspringen.",
|
||
"notify_live_services": "Ein oder mehrere Benachrichtigungsdienste, um während der Ausführung des Zyklus Live-Fortschrittsaktualisierungen zu erhalten (nur mobile Begleit-App). Leer lassen, um Live-Updates zu überspringen.",
|
||
"notify_before_end_minutes": "Wie viele Minuten vor dem voraussichtlichen Ende des Zyklus soll eine Benachrichtigung gesendet werden. Zum Deaktivieren auf 0 setzen. Standard: 0.",
|
||
"notify_live_interval_seconds": "Wie oft Fortschrittsaktualisierungen während der Ausführung gesendet werden. Niedrigere Werte führen zu einer schnelleren Reaktion, verbrauchen jedoch mehr Benachrichtigungen. Es wird ein Minimum von 30 Sekunden erzwungen – Werte unter 30 Sekunden werden automatisch auf 30 Sekunden aufgerundet.",
|
||
"notify_live_overrun_percent": "Sicherheitsmarge über der geschätzten Aktualisierungsanzahl für lange/überlaufende Zyklen (z. B. 20 % ermöglichen das 1,2-fache der geschätzten Aktualisierungen).",
|
||
"notify_live_chronometer": "Wenn diese Option aktiviert ist, beinhaltet jedes Live-Update einen Chronometer-Countdown bis zur voraussichtlichen Zielzeit. Der Benachrichtigungstimer läuft auf dem Gerät zwischen Aktualisierungen automatisch ab (nur Android-Begleit-App).",
|
||
"notify_title": "Benutzerdefinierter Titel für Benachrichtigungen. Unterstützt den Platzhalter {device}.",
|
||
"notify_icon": "Symbol zur Verwendung für Benachrichtigungen (z. B. mdi:washing-machine). Feld leer lassen, um ohne Symbol zu senden.",
|
||
"notify_start_message": "Nachricht wird gesendet, wenn ein Zyklus beginnt. Unterstützt den Platzhalter {device}.",
|
||
"notify_finish_message": "Nachricht wird gesendet, wenn ein Zyklus beendet ist. Unterstützt die Platzhalter {device}, {duration}, {program}, {energy_kwh}, {cost}.",
|
||
"energy_price_entity": "Wählen Sie eine numerische Entität aus, die den aktuellen Strompreis enthält (z. B. sensor.electricity_price, input_number.energy_rate). Wenn festgelegt, wird der Platzhalter {cost} aktiviert. Hat Vorrang vor dem statischen Wert, wenn beide konfiguriert sind.",
|
||
"energy_price_static": "Fester Strompreis pro kWh. Wenn festgelegt, wird der Platzhalter {cost} aktiviert. Wird ignoriert, wenn oben eine Entität konfiguriert ist. Fügen Sie Ihr Währungssymbol in die Nachrichtenvorlage ein, z. B. {cost} €.",
|
||
"notify_reminder_message": "Text der einmaligen Erinnerung schickte die konfigurierte Anzahl von Minuten vor dem geschätzten Ende. Unterscheiden Sie sich von den wiederkehrenden Live-Updates oben. Unterstützt {device}, {minutes}, {program} Platzhalter.",
|
||
"notify_timeout_seconds": "Automatische Kündigung von Benachrichtigungen nach diesen vielen Sekunden (vorüberwiesen als die Begleit-App 'Timeout'). Setzen Sie auf 0, um sie bis zur Entlassung zu halten. Standard: 0.",
|
||
"notify_channel": "Android Begleit-App-Benachrichtigungskanal für Status, Live-Fortschritt und Erinnerungs-Benachrichtigungen. Der Klang und die Bedeutung eines Kanals werden in der Begleit-App zum ersten Mal konfiguriert, wenn der Kanalname verwendet wird - WashData setzt nur den Kanalnamen. Lassen Sie für den App-Standard leer.",
|
||
"notify_finish_channel": "Separater Android-Kanal für den fertigen Alarm (auch von der Erinnerung und der Wäsche-Warte-Nag) so kann es seinen eigenen Klang haben. Lassen Sie leer, um den Kanal oben wieder zu verwenden.",
|
||
"notify_pre_complete_message": "Text der wiederkehrenden Live-Fortschrittsaktualisierungen während der Ausführung des Zyklus. Unterstützt die Platzhalter {device}, {minutes}, {program}."
|
||
}
|
||
},
|
||
"advanced_settings": {
|
||
"title": "Erweiterte Einstellungen",
|
||
"description": "Erkennungsschwellwerte, Lernen und erweitertes Verhalten optimieren. Die Standardeinstellungen funktionieren für die meisten Setups gut.",
|
||
"sections": {
|
||
"suggestions_section": {
|
||
"name": "Empfohlene Einstellungen",
|
||
"description": "{suggestions_count} gelernte Vorschläge verfügbar. Aktivieren Sie 'Vorgeschlagene Werte anwenden', um vorgeschlagene Änderungen vor dem Speichern zu überprüfen.",
|
||
"data": {
|
||
"apply_suggestions": "Vorgeschlagene Werte anwenden"
|
||
},
|
||
"data_description": {
|
||
"apply_suggestions": "Aktivieren um einen Überprüfungsschritt für vorgeschlagene Werte vom Lernalgorithmus zu öffnen. Es wird nichts automatisch gespeichert.\n\nEmpfohlen (vom Lernen):\n- min_power: {suggested_min_power} W\n- off_delay: {suggested_off_delay} s\n- watchdog_interval: {suggested_watchdog_interval} s\n- no_update_active_timeout: {suggested_no_update_active_timeout} s\n- profile_match_interval: {suggested_profile_match_interval} s\n- auto_label_confidence: {suggested_auto_label_confidence}\n- duration_tolerance: {suggested_duration_tolerance}\n- profile_duration_tolerance: {suggested_profile_duration_tolerance}\n- profile_match_min_duration_ratio: {suggested_profile_match_min_duration_ratio}\n- profile_match_max_duration_ratio: {suggested_profile_match_max_duration_ratio}\n- start_threshold_w: {suggested_start_threshold_w} W\n- stop_threshold_w: {suggested_stop_threshold_w} W\n- end_energy_threshold: {suggested_end_energy_threshold} Wh\n- running_dead_zone: {suggested_running_dead_zone} s\n{suggested_reason}"
|
||
}
|
||
},
|
||
"detection_section": {
|
||
"name": "Erkennung & Leistungsschwellen",
|
||
"description": "Wann das Gerät als EIN oder AUS gilt, Energieschwellen und Zeitsteuerung für Zustandsübergänge.",
|
||
"data": {
|
||
"start_duration_threshold": "Start-Entprellungsdauer (s)",
|
||
"start_energy_threshold": "Startenergieschwelle (Wh)",
|
||
"completion_min_seconds": "Mindestlaufzeit für den Abschluss (Sekunden)",
|
||
"start_threshold_w": "Startschwelle (W)",
|
||
"stop_threshold_w": "Stoppschwelle (W)",
|
||
"end_energy_threshold": "Endenergieschwelle (Wh)",
|
||
"running_dead_zone": "Running Dead Zone (Sekunden)",
|
||
"end_repeat_count": "Anzahl der Wiederholungen beenden",
|
||
"min_off_gap": "Min. Abstand zwischen Zyklen (s)",
|
||
"sampling_interval": "Abtastintervall (s)"
|
||
},
|
||
"data_description": {
|
||
"start_duration_threshold": "Kurze Leistungsspitzen ignorieren, die kürzer als diese Dauer (Sekunden) sind. Filtert Startspitzen (z. B. 60 W für 2 Sekunden) heraus, bevor der eigentliche Zyklus beginnt. Standard: 5s.",
|
||
"start_energy_threshold": "Um bestätigt zu werden, muss der Zyklus während der START-Phase mindestens so viel Energie (Wh) akkumulieren. Standard: 0,005 Wh.",
|
||
"completion_min_seconds": "Zyklen, die kürzer sind, werden als „unterbrochen“ markiert, auch wenn sie natürlich enden. Standard: 600s.",
|
||
"start_threshold_w": "Die Leistung muss ÜBER diesen Schwellwert ansteigen, um einen Zyklus zu starten. Höher einstellen als Ihre Standby-Leistung. Standard: min_power + 1 W.",
|
||
"stop_threshold_w": "Die Leistung muss UNTER diesen Schwellwert fallen, um einen Zyklus zu BEENDEN. Den Wert knapp über Null einstellen, um zu vermeiden, dass Rauschen falsche Enden auslöst. Standard: 0,6 * min_power.",
|
||
"end_energy_threshold": "Der Zyklus endet nur, wenn die Energie im letzten Ausschaltverzögerungsfenster unter diesem Wert (Wh) liegt. Verhindert falsche Enden, wenn die Leistung nahe Null schwankt. Standard: 0,05 Wh.",
|
||
"running_dead_zone": "Nach dem Start des Zyklus Stromeinbrüche für diesen Zeitraum (in Sekunden) ignorieren, um eine falsche Enderkennung während der anfänglichen Hochlaufphase zu verhindern. Zum Deaktivieren auf 0 setzen. Standard: 0s.",
|
||
"end_repeat_count": "Gibt an, wie oft die Endbedingung (Leistung unter dem Schwellwert für Ausschaltverzögerung) nacheinander erfüllt sein muss, bevor der Zyklus beendet wird. Höhere Werte verhindern falsches Ende während Pausen. Standard: 1.",
|
||
"min_off_gap": "Wenn ein Zyklus innerhalb dieser Anzahl von Sekunden nach dem Ende des vorherigen beginnt, werden sie zu einem einzigen Zyklus zusammengeführt.",
|
||
"sampling_interval": "Mindestabtastintervall in Sekunden. Aktualisierungen, die schneller als diese Rate sind, werden ignoriert. Standard: 30 Sek. (2 Sek. für Waschmaschinen, Waschtrockner und Geschirrspüler)."
|
||
}
|
||
},
|
||
"matching_section": {
|
||
"name": "Profilabgleich & Lernen",
|
||
"description": "Wie aggressiv WashData laufende Zyklen mit gelernten Profilen abgleicht und wann um Feedback gebeten wird.",
|
||
"data": {
|
||
"profile_match_min_duration_ratio": "Verhältnis der Mindestdauer der Profilübereinstimmung (0,1–1,0)",
|
||
"profile_match_interval": "Profil-Match-Intervall (Sekunden)",
|
||
"profile_match_threshold": "Schwellwert für Profilübereinstimmung",
|
||
"profile_unmatch_threshold": "Schwellwert für nicht übereinstimmendes Profil",
|
||
"auto_label_confidence": "Auto-Label-Konfidenz (0-1)",
|
||
"learning_confidence": "Vertrauen der Feedback-Anfrage (0-1)",
|
||
"suppress_feedback_notifications": "Feedback-Benachrichtigungen unterdrücken",
|
||
"duration_tolerance": "Dauertoleranz (0–0,5)",
|
||
"smoothing_window": "Glättungsfenster (Beispiele)",
|
||
"profile_duration_tolerance": "Toleranz der Profilübereinstimmungsdauer (0–0,5)"
|
||
},
|
||
"data_description": {
|
||
"profile_match_min_duration_ratio": "Mindestdauerverhältnis für den Profilabgleich. Damit der Laufzyklus übereinstimmt, muss er mindestens diesen Bruchteil der Profildauer betragen. Niedriger = frühere Übereinstimmung. Standard: 0,50 (50 %).",
|
||
"profile_match_interval": "Wie oft (in Sekunden) der Profilabgleich während eines Zyklus versucht werden soll. Niedrigere Werte ermöglichen eine schnellere Erkennung, beanspruchen jedoch mehr CPU. Standard: 300s (5 Minuten).",
|
||
"profile_match_threshold": "Mindest-DTW-Ähnlichkeitswert (0,0–1,0), der erforderlich ist, um ein Profil als Übereinstimmung zu betrachten. Höher = strengere Übereinstimmung, weniger Fehlalarme. Standard: 0,4.",
|
||
"profile_unmatch_threshold": "DTW-Ähnlichkeitswert (0,0–1,0), unterhalb dessen ein zuvor übereinstimmendes Profil abgelehnt wird. Sollte niedriger als der Übereinstimmungsschwellwert sein, um ein Flackern zu verhindern. Standard: 0,35.",
|
||
"auto_label_confidence": "Zyklen über diesem Konfidenzniveau nach Abschluss automatisch zuordnen (0,0–1,0).",
|
||
"learning_confidence": "Mindestkonfidenz für die Anforderung einer Benutzerverifizierung über ein Ereignis (0,0–1,0).",
|
||
"suppress_feedback_notifications": "Wenn diese Option aktiviert ist, verfolgt WashData weiterhin intern Feedback und fordert es an, zeigt jedoch keine dauerhaften Benachrichtigungen an, in denen Sie zur Bestätigung von Zyklen aufgefordert werden. Nützlich, wenn Zyklen immer korrekt erkannt werden und Sie die Eingabeaufforderungen als störend empfinden.",
|
||
"duration_tolerance": "Toleranz für Schätzungen der verbleibenden Zeit während eines Laufs (0,0–0,5 entspricht 0–50 %).",
|
||
"smoothing_window": "Anzahl der letzten Leistungsmesswerte, die für die Glättung des gleitenden Durchschnitts verwendet werden.",
|
||
"profile_duration_tolerance": "Vom Profilabgleich verwendete Toleranz für die Gesamtdauervarianz (0,0–0,5). Standardverhalten: ±25 %."
|
||
}
|
||
},
|
||
"timing_section": {
|
||
"name": "Zeitverhalten, Wartung & Debug",
|
||
"description": "Watchdog, Fortschrittsrücksetzung, automatische Wartung und Sichtbarkeit von Debug-Entitäten.",
|
||
"data": {
|
||
"watchdog_interval": "Watchdog-Intervall (Sekunden)",
|
||
"no_update_active_timeout": "Zeitüberschreitung bei fehlender Aktualisierung (s)",
|
||
"progress_reset_delay": "Verzögerung beim Zurücksetzen des Fortschritts (Sekunden)",
|
||
"auto_maintenance": "Automatische Wartung aktivieren",
|
||
"expose_debug_entities": "Debug-Entitäten verfügbar machen",
|
||
"save_debug_traces": "Debug-Traces speichern"
|
||
},
|
||
"data_description": {
|
||
"watchdog_interval": "Sekunden zwischen Watchdog-Prüfungen während der Ausführung. Standard: 5s. WARNUNG: Stellen Sie sicher, dass dieser Wert HÖHER ist als das Aktualisierungsintervall Ihres Sensors, um falsche Stopps zu vermeiden (z. B. wenn der Sensor alle 60 Sekunden aktualisiert wird, verwenden Sie 65 Sekunden+).",
|
||
"no_update_active_timeout": "Für Publish-on-Change-Sensoren: Beenden eines ACTIVE-Zyklus nur erzwingen, wenn für diesen Zeitraum (in Sekunden) keine Aktualisierungen eintreffen. Beim Abschluss mit geringem Stromverbrauch wird weiterhin die Ausschaltverzögerung verwendet.",
|
||
"progress_reset_delay": "Nachdem ein Zyklus abgeschlossen ist (100 %), so viele Sekunden Leerlauf abwarten, bevor der Fortschritt auf 0 % zurückgesetzt wird. Standard: 300s.",
|
||
"auto_maintenance": "Automatische Wartung aktivieren (Beispiele reparieren, Fragmente zusammenführen).",
|
||
"expose_debug_entities": "Erweiterte Sensoren (Konfidenz, Phase, Mehrdeutigkeit) zum Debuggen anzeigen.",
|
||
"save_debug_traces": "Detaillierte Ranking- und Stromverläufe im Verlauf speichern (erhöht die Speichernutzung)."
|
||
}
|
||
},
|
||
"anti_wrinkle_section": {
|
||
"name": "Knitterschutz (Trockner)",
|
||
"description": "Ignoriert Trommeldrehungen nach dem Zyklus, um Geisterzyklen zu verhindern. Nur für Trockner / Waschtrockner.",
|
||
"data": {
|
||
"anti_wrinkle_enabled": "Knitterschutz (nur Trockner)",
|
||
"anti_wrinkle_max_power": "Knitterschutz-Höchstleistung (W)",
|
||
"anti_wrinkle_max_duration": "Knitterschutz-Höchstdauer (s)",
|
||
"anti_wrinkle_exit_power": "Knitterschutz-Abschlussleistung (W)"
|
||
},
|
||
"data_description": {
|
||
"anti_wrinkle_enabled": "Kurze Trommelumdrehungen mit geringer Leistung nach Programmende ignorieren, um Geisterzyklen zu vermeiden (nur Trockner/Waschtrockner).",
|
||
"anti_wrinkle_max_power": "Leistungsspitzen unter diesem Schwellwert werden als Knitterschutz-Rotationen und nicht als neue Zyklen behandelt. Gilt nur, wenn Knitterschutz aktiviert ist.",
|
||
"anti_wrinkle_max_duration": "Maximale Burst-Länge zur Behandlung als Knitterschutz-Rotation. Gilt nur, wenn Knitterschutz aktiviert ist.",
|
||
"anti_wrinkle_exit_power": "Wenn die Leistung unter diesen Wert fällt, die Knitterschutz-Funktion sofort beenden (tatsächliches Ende). Gilt nur, wenn Knitterschutz aktiviert ist."
|
||
}
|
||
},
|
||
"delay_start_section": {
|
||
"name": "Erkennung für verzögerten Start",
|
||
"description": "Behandelt anhaltenden Niedrigleistungs-Standby als 'Wartet auf Start', bis der Zyklus tatsächlich beginnt.",
|
||
"data": {
|
||
"delay_start_detect_enabled": "Aktivieren Sie die verzögerte Starterkennung",
|
||
"delay_confirm_seconds": "Verzögerter Start: Bestätigungszeit für Standby (s)",
|
||
"delay_timeout_hours": "Verzögerter Start: Maximale Wartezeit (h)"
|
||
},
|
||
"data_description": {
|
||
"delay_start_detect_enabled": "Wenn diese Option aktiviert ist, wird eine kurze Leistungsspitze bei geringem Stromverbrauch, gefolgt von einer anhaltenden Standby-Leistung, als verzögerter Start erkannt. Der Statussensor zeigt während der Verzögerung „Warten auf Start“ an. Es werden weder Programmzeit noch Fortschritt verfolgt, bis der Zyklus tatsächlich beginnt. Erfordert, dass start_threshold_w über der Drain-Spike-Leistung eingestellt wird.",
|
||
"delay_confirm_seconds": "Die Leistung muss für so viele Sekunden zwischen Stoppschwelle (W) und Startschwelle (W) bleiben, bevor WashData in 'Wartet auf Start' wechselt. Kurze Spitzen durch Menünavigation werden herausgefiltert. Standard: 60 s.",
|
||
"delay_timeout_hours": "Sicherheits-Timeout: Wenn sich die Maschine nach dieser Anzahl von Stunden immer noch im Zustand „Warten auf Start“ befindet, wird WashData auf „Aus“ zurückgesetzt. Standard: 8 Stunden."
|
||
}
|
||
},
|
||
"external_triggers_section": {
|
||
"name": "Externe Auslöser, Tür & Pause",
|
||
"description": "Optionaler externer Sensor für Zyklusende, Türsensor für Pause-/Sauber-Erkennung und Schalter zum Unterbrechen der Stromversorgung bei Pause.",
|
||
"data": {
|
||
"external_end_trigger_enabled": "Externen Zyklusende-Trigger aktivieren",
|
||
"external_end_trigger": "Externer Zyklusendesensor",
|
||
"external_end_trigger_inverted": "Triggerlogik umkehren (Trigger auf AUS)",
|
||
"door_sensor_entity": "Türsensor",
|
||
"pause_cuts_power": "Unterbrechen Sie die Stromversorgung, wenn Sie pausieren",
|
||
"switch_entity": "Entität wechseln (für Stromausfall pausieren)",
|
||
"notify_unload_delay_minutes": "Verzögerung der Wäsche-Warten-Benachrichtigung (Min.)"
|
||
},
|
||
"data_description": {
|
||
"external_end_trigger_enabled": "Überwachung eines externen Binärsensors aktivieren, um den Abschluss des Zyklus auszulösen.",
|
||
"external_end_trigger": "Binäre Sensoreinheit auswählen. Wenn dieser Sensor auslöst, endet der aktuelle Zyklus mit dem Status „abgeschlossen“.",
|
||
"external_end_trigger_inverted": "Standardmäßig wird der Zyklus beendet, wenn der Sensor eingeschaltet wird. Aktivieren um stattdessen zu beenden, wenn der Sensor ausgeschaltet wird.",
|
||
"door_sensor_entity": "Optionaler binärer Sensor für die Maschinentür (ein = offen, aus = geschlossen). Wenn sich die Tür während eines aktiven Zyklus öffnet, bestätigt WashData, dass der Zyklus absichtlich angehalten wurde. Wenn der Zyklus beendet ist und die Tür noch geschlossen ist, wechselt der Zustand zu „Sauber”, bis die Tür geöffnet wird. Hinweis: Durch das Schließen der Tür wird ein angehaltener Zyklus NICHT automatisch fortgesetzt. Die Wiederaufnahme muss manuell über die Schaltfläche „Zyklus fortsetzen“ oder den entsprechenden Dienst ausgelöst werden.",
|
||
"pause_cuts_power": "Wenn Sie über die Schaltfläche „Zyklus anhalten“ oder den Dienst anhalten, schalten Sie auch die konfigurierte Schaltereinheit aus. Wird nur wirksam, wenn für dieses Gerät eine Switch-Entität konfiguriert ist.",
|
||
"switch_entity": "Die Schalterentität, die beim Anhalten oder Fortsetzen umgeschaltet wird. Erforderlich, wenn „Stromversorgung bei Pause abschalten“ aktiviert ist.",
|
||
"notify_unload_delay_minutes": "Senden Sie eine Benachrichtigung über den Abschlussbenachrichtigungskanal, nachdem der Zyklus beendet ist und die Tür so viele Minuten lang nicht geöffnet wurde (erfordert Türsensor). Zum Deaktivieren auf 0 setzen. Standard: 60 Min."
|
||
}
|
||
},
|
||
"pump_section": {
|
||
"name": "Pumpenüberwachung",
|
||
"description": "Nur für den Gerätetyp Pumpe. Löst ein Ereignis aus, wenn ein Pumpenzyklus länger als diese Dauer läuft.",
|
||
"data": {
|
||
"pump_stuck_duration": "Schwellenwert(e) für Warnung „Pumpe blockiert“ (nur Pumpe)"
|
||
},
|
||
"data_description": {
|
||
"pump_stuck_duration": "Wenn nach dieser Anzahl von Sekunden immer noch ein Pumpenzyklus läuft, wird einmalig ein ha_washdata_pump_stuck-Ereignis ausgelöst. Verwenden Sie dies, um einen blockierten Motor zu erkennen (die typische Laufzeit der Sumpfpumpe beträgt weniger als 60 s). Standard: 1800 s (30 min). Nur Pumpengerätetyp."
|
||
}
|
||
},
|
||
"device_link_section": {
|
||
"name": "Link zur Übersicht",
|
||
"description": "Optional verbinden Sie dieses WashData-Gerät mit einem vorhandenen Home Assistant-Gerät (z.B. dem Smart Plug oder dem Gerät selbst). Das WashData-Gerät wird dann als \"Connected via\" dieses Geräts angezeigt. Lassen Sie die WashData als eigenständiges Gerät leer.",
|
||
"data": {
|
||
"linked_device": "Verknüpftes Gerät"
|
||
},
|
||
"data_description": {
|
||
"linked_device": "Wählen Sie das Gerät, um WashData zu verbinden. Dies fügt eine 'Connected via' Referenz in der Geräte-Registrierung hinzu; WashData hält seine eigene Gerätekarte und -einrichtungen. Löschen Sie die Auswahl, um den Link zu entfernen."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"diagnostics": {
|
||
"title": "Diagnose und Wartung",
|
||
"description": "Wartungsaktionen durchführen, z. B. das Zusammenführen fragmentierter Zyklen oder das Migrieren gespeicherter Daten.\n\n**Speichernutzung**\n\n- Dateigröße: {file_size_kb} KB\n- Zyklen: {cycle_count}\n- Profile: {profile_count}\n- Debug-Traces: {debug_count}",
|
||
"menu_options": {
|
||
"reprocess_history": "Wartung: Daten erneut verarbeiten und optimieren",
|
||
"clear_debug_data": "Debug-Daten löschen (Speicherplatz freigeben)",
|
||
"wipe_history": "ALLE Daten für dieses Gerät löschen (unwiderruflich)",
|
||
"export_import": "JSON mit Einstellungen exportieren/importieren (Kopieren/Einfügen)",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"clear_debug_data": {
|
||
"title": "Debug-Daten löschen",
|
||
"description": "Sind Sie sicher, dass Sie alle gespeicherten Debug-Traces löschen möchten? Dadurch wird Speicherplatz frei, aber detaillierte Ranking-Informationen aus vergangenen Zyklen werden entfernt."
|
||
},
|
||
"manage_cycles": {
|
||
"title": "Zyklen verwalten",
|
||
"description": "Letzte Zyklen:\n{recent_cycles}",
|
||
"menu_options": {
|
||
"auto_label_cycles": "Alte Zyklen automatisch zuordnen",
|
||
"select_cycle_to_label": "Zyklus einzeln zuordnen",
|
||
"select_cycle_to_delete": "Zyklus löschen",
|
||
"interactive_editor": "Interaktiver Editor zum Zusammenführen/Teilen",
|
||
"trim_cycle_select": "Zyklusdaten zuschneiden",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"manage_cycles_empty": {
|
||
"title": "Zyklen verwalten",
|
||
"description": "Noch keine Zyklen aufgezeichnet.",
|
||
"menu_options": {
|
||
"auto_label_cycles": "Alte Zyklen automatisch zuordnen",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"manage_profiles": {
|
||
"title": "Profile verwalten",
|
||
"description": "Profilzusammenfassung:\n{profile_summary}",
|
||
"menu_options": {
|
||
"create_profile": "Neues Profil erstellen",
|
||
"edit_profile": "Profil bearbeiten/umbenennen",
|
||
"delete_profile_select": "Profil löschen",
|
||
"profile_stats": "Profilstatistik",
|
||
"cleanup_profile": "Verlauf bereinigen – grafisch darstellen und löschen",
|
||
"assign_profile_phases_select": "Phasenzeiträume zuweisen",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"manage_profiles_empty": {
|
||
"title": "Profile verwalten",
|
||
"description": "Noch keine Profile erstellt.",
|
||
"menu_options": {
|
||
"create_profile": "Neues Profil erstellen",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"manage_phase_catalog": {
|
||
"title": "Phasenkatalog verwalten",
|
||
"description": "Phasenkatalog (Standardeinstellungen für dieses Gerät + benutzerdefinierte Phasen):\n{phase_summary}",
|
||
"menu_options": {
|
||
"phase_catalog_create": "Neue Phase erstellen",
|
||
"phase_catalog_edit_select": "Phase bearbeiten",
|
||
"phase_catalog_delete": "Phase löschen",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"phase_catalog_create": {
|
||
"title": "Benutzerdefinierte Phase erstellen",
|
||
"description": "Benutzerdefinierte Phase erstellen und Gerätetyp zuweisen.",
|
||
"data": {
|
||
"target_device_type": "Zielgerätetyp",
|
||
"phase_name": "Phasenname",
|
||
"phase_description": "Phasenbeschreibung"
|
||
}
|
||
},
|
||
"phase_catalog_edit_select": {
|
||
"title": "Benutzerdefinierte Phase bearbeiten",
|
||
"description": "Benutzerdefinierte Phase zum Bearbeiten auswählen.",
|
||
"data": {
|
||
"phase_name": "Benutzerdefinierte Phase"
|
||
}
|
||
},
|
||
"phase_catalog_edit": {
|
||
"title": "Benutzerdefinierte Phase bearbeiten",
|
||
"description": "Bearbeitungsphase: {phase_name}",
|
||
"data": {
|
||
"phase_name": "Phasenname",
|
||
"phase_description": "Phasenbeschreibung"
|
||
}
|
||
},
|
||
"phase_catalog_delete": {
|
||
"title": "Benutzerdefinierte Phase löschen",
|
||
"description": "Benutzerdefinierte Phase zum Löschen auswählen. Alle zugewiesenen Zeiträume, die diese Phase verwenden, werden entfernt.",
|
||
"data": {
|
||
"phase_name": "Benutzerdefinierte Phase"
|
||
}
|
||
},
|
||
"assign_profile_phases": {
|
||
"title": "Phasenzeiträume zuweisen",
|
||
"description": "Phasenvorschau für Profil: **{profile_name}**\n\n{timeline_svg}\n\n**Aktuelle Zeiträume:**\n{current_ranges}\n\nFolgende Aktionen verwenden, um Zeiträume hinzuzufügen, zu bearbeiten, zu löschen oder zu speichern.",
|
||
"menu_options": {
|
||
"assign_profile_phases_add": "Phasenzeitraum hinzufügen",
|
||
"assign_profile_phases_edit_select": "Phasenzeitraum bearbeiten",
|
||
"assign_profile_phases_delete": "Phasenzeitraum löschen",
|
||
"phase_ranges_clear": "Alle Zeiträume löschen",
|
||
"assign_profile_phases_auto_detect": "Phasen automatisch erkennen",
|
||
"phase_ranges_save": "Speichern und zurückgeben",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"assign_profile_phases_add": {
|
||
"title": "Phasenzeitraum hinzufügen",
|
||
"description": "Dem aktuellen Entwurf einen Phasenzeitraum hinzufügen.",
|
||
"data": {
|
||
"phase_name": "Phase",
|
||
"start_min": "Startminute",
|
||
"end_min": "Endminute"
|
||
}
|
||
},
|
||
"assign_profile_phases_edit_select": {
|
||
"title": "Phasenzeitraum bearbeiten",
|
||
"description": "Zeitraum zum Bearbeiten auswählen.",
|
||
"data": {
|
||
"range_index": "Phasenzeitraum"
|
||
}
|
||
},
|
||
"assign_profile_phases_edit": {
|
||
"title": "Phasenzeitraum bearbeiten",
|
||
"description": "Den ausgewählten Zeitraum anpassen.",
|
||
"data": {
|
||
"phase_name": "Phase",
|
||
"start_min": "Startminute",
|
||
"end_min": "Endminute"
|
||
}
|
||
},
|
||
"assign_profile_phases_delete": {
|
||
"title": "Phasenzeitraum löschen",
|
||
"description": "Zeitraum auswählen, der aus dem Entwurf entfernt werden soll.",
|
||
"data": {
|
||
"range_index": "Phasenzeitraum"
|
||
}
|
||
},
|
||
"assign_profile_phases_auto_detect": {
|
||
"title": "Automatisch erkannte Phasen",
|
||
"description": "Profil: **{profile_name}**\n\n{timeline_svg}\n\n**{detected_count} Phase(n) automatisch erkannt.** Wählen Sie unten eine Aktion aus.",
|
||
"data": {
|
||
"action": "Aktion"
|
||
}
|
||
},
|
||
"assign_profile_phases_auto_detect_name": {
|
||
"title": "Erkannte Phasen benennen",
|
||
"description": "Profil: **{profile_name}**\n\n**{detected_count} Phase(n) erkannt:**\n{ranges_summary}\n\nJeder Phase einen Namen zuweisen."
|
||
},
|
||
"assign_profile_phases_select": {
|
||
"title": "Phasenzeiträume zuweisen",
|
||
"description": "Profil auswählen, um Phasenzeiträume zu konfigurieren.",
|
||
"data": {
|
||
"profile": "Profil"
|
||
}
|
||
},
|
||
"profile_stats": {
|
||
"title": "Profilstatistik",
|
||
"description": "{stats_table}"
|
||
},
|
||
"create_profile": {
|
||
"title": "Neues Profil erstellen",
|
||
"description": "Ein neues Profil manuell oder aus einem vergangenen Zyklus erstellen.\n\nBeispiele für Profilnamen: „Feinwäsche“, „Kochwäsche“, „Schnellwäsche“",
|
||
"data": {
|
||
"profile_name": "Profilname",
|
||
"reference_cycle": "Referenzzyklus (optional)",
|
||
"manual_duration": "Manuelle Dauer (Minuten)"
|
||
}
|
||
},
|
||
"edit_profile": {
|
||
"title": "Profil bearbeiten",
|
||
"description": "Profil zum Umbenennen auswählen",
|
||
"data": {
|
||
"profile": "Profil"
|
||
}
|
||
},
|
||
"rename_profile": {
|
||
"title": "Profildetails bearbeiten",
|
||
"description": "Aktuelles Profil: {current_name}",
|
||
"data": {
|
||
"new_name": "Profilname",
|
||
"manual_duration": "Manuelle Dauer (Minuten)"
|
||
}
|
||
},
|
||
"delete_profile_select": {
|
||
"title": "Profil löschen",
|
||
"description": "Profil zum Löschen auswählen",
|
||
"data": {
|
||
"profile": "Profil"
|
||
}
|
||
},
|
||
"delete_profile_confirm": {
|
||
"title": "Profillöschung bestätigen.",
|
||
"description": "⚠️ Dadurch wird das Profil dauerhaft gelöscht: {profile_name}",
|
||
"data": {
|
||
"unlabel_cycles": "Entfernt die Zuordnung dieses Profils von allen Zyklen"
|
||
}
|
||
},
|
||
"auto_label_cycles": {
|
||
"title": "Alte Zyklen automatisch zuordnen",
|
||
"description": "Insgesamt {total_count} Zyklen gefunden. Profile: {profiles}",
|
||
"data": {
|
||
"confidence_threshold": "Minimales Vertrauen (0,50–0,95)"
|
||
}
|
||
},
|
||
"select_cycle_to_label": {
|
||
"title": "Zyklus zum Zuordnen auswählen",
|
||
"description": "✓ = abgeschlossen, ⚠ = fortgesetzt, ✗ = unterbrochen",
|
||
"data": {
|
||
"cycle_id": "Zyklus"
|
||
}
|
||
},
|
||
"select_cycle_to_delete": {
|
||
"title": "Zyklus löschen",
|
||
"description": "⚠️ Dadurch wird der ausgewählte Zyklus dauerhaft gelöscht",
|
||
"data": {
|
||
"cycle_id": "Zyklus zum Löschen auswählen"
|
||
}
|
||
},
|
||
"label_cycle": {
|
||
"title": "Zyklus zuordnen",
|
||
"description": "{cycle_info}",
|
||
"data": {
|
||
"profile_name": "Profil",
|
||
"new_profile_name": "Neuer Profilname (falls erstellt)"
|
||
}
|
||
},
|
||
"post_process": {
|
||
"title": "Prozessverlauf (Zusammenführen/Aufteilen)",
|
||
"description": "Bereinigen Sie den Zyklusverlauf, indem Sie fragmentierte Läufe zusammenführen und falsch zusammengeführte Zyklen innerhalb eines Zeitfensters aufteilen. Geben Sie die Anzahl der Stunden ein, in denen Sie zurückblicken möchten (verwenden Sie 999999 für alle).",
|
||
"data": {
|
||
"time_range": "Lookback-Fenster (Stunden)",
|
||
"gap_seconds": "Zusammenführungs-/Aufteilungslücke (Sekunden)"
|
||
},
|
||
"data_description": {
|
||
"time_range": "Anzahl der Stunden, die nach fragmentierten Zyklen zum Zusammenführen gescannt werden sollen. Verwenden Sie 999999, um alle historischen Daten zu verarbeiten.",
|
||
"gap_seconds": "Schwellwert für die Entscheidung über Aufteilung oder Zusammenführung. Lücken, die kürzer sind, werden zusammengeführt. Längere Lücken werden geteilt. Verringern Sie diesen Wert, um eine Teilung eines Zyklus zu erzwingen, der falsch zusammengeführt wurde."
|
||
}
|
||
},
|
||
"cleanup_profile": {
|
||
"title": "Verlauf bereinigen – Profil auswählen",
|
||
"description": "Profil zur Visualisierung auswählen. Dadurch wird ein Diagramm erstellt, das alle vergangenen Zyklen für dieses Profil zeigt, um Ausreißer zu identifizieren.",
|
||
"data": {
|
||
"profile": "Profil"
|
||
}
|
||
},
|
||
"cleanup_select": {
|
||
"title": "Verlauf bereinigen – grafisch darstellen und löschen",
|
||
"description": "\n\n**Visualisierung von {profile_name}**\n\nDie Grafik zeigt einzelne Zyklen als farbige Linien. Identifizieren Sie Ausreißer (Linien, die weit von der Gruppe entfernt sind) und gleichen Sie ihre Farbe in der Liste unten ab, um sie zu löschen.\n\n**Zyklen auswählen, die DAUERHAFT gelöscht werden sollen:**",
|
||
"data": {
|
||
"cycles_to_delete": "Zu löschende Zyklen (passende Farben prüfen)"
|
||
}
|
||
},
|
||
"interactive_editor": {
|
||
"title": "Interaktiver Editor zum Zusammenführen/Teilen",
|
||
"description": "Manuelle Aktion auswählen, die auf Zyklusverlauf angewendet werden soll.",
|
||
"menu_options": {
|
||
"editor_split": "Einen Zyklus aufteilen (Lücken finden)",
|
||
"editor_merge": "Zyklen zusammenführen (Fragmente verbinden)",
|
||
"editor_delete": "Zyklus(e) löschen",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"editor_select": {
|
||
"title": "Zyklen auswählen",
|
||
"description": "Zu verarbeitende Zyklen auswählen.\n\n{info_text}",
|
||
"data": {
|
||
"selected_cycles": "Zyklen"
|
||
}
|
||
},
|
||
"editor_configure": {
|
||
"title": "Konfigurieren und anwenden",
|
||
"description": "{preview_md}",
|
||
"data": {
|
||
"confirm_action": "Aktion",
|
||
"merged_profile": "Resultierendes Profil",
|
||
"new_profile_name": "Neuer Profilname",
|
||
"confirm_commit": "Ja, ich bestätige diese Aktion",
|
||
"segment_0_profile": "Segment 1-Profil",
|
||
"segment_1_profile": "Segment 2-Profil",
|
||
"segment_2_profile": "Segment 3-Profil",
|
||
"segment_3_profile": "Segment 4-Profil",
|
||
"segment_4_profile": "Segment 5-Profil",
|
||
"segment_5_profile": "Segment 6-Profil",
|
||
"segment_6_profile": "Segment 7-Profil",
|
||
"segment_7_profile": "Segment 8-Profil",
|
||
"segment_8_profile": "Segment 9-Profil",
|
||
"segment_9_profile": "Segment 10-Profil"
|
||
}
|
||
},
|
||
"editor_split_params": {
|
||
"title": "Split-Konfiguration",
|
||
"description": "Empfindlichkeit für die Aufteilung dieses Zyklus anpassen. Jede längere Leerlauflücke führt zu einer Spaltung.",
|
||
"data": {
|
||
"split_mode": "Split-Methode"
|
||
}
|
||
},
|
||
"editor_split_auto_params": {
|
||
"title": "Automatische Aufteilung konfigurieren",
|
||
"description": "Passen Sie die Empfindlichkeit für das Aufteilen dieses Zyklus an. Jede Leerlaufpause, die länger als dieser Wert ist, führt zu einer Aufteilung.",
|
||
"data": {
|
||
"min_gap_seconds": "Schwellwert für Aufteilungslücke (Sekunden)"
|
||
}
|
||
},
|
||
"editor_split_manual_params": {
|
||
"title": "Manuelle Zeitstempel für die Aufteilung",
|
||
"description": "{preview_md}Zyklusfenster: **{cycle_start_wallclock} → {cycle_end_wallclock}** am {cycle_date}.\n\nGeben Sie einen oder mehrere Zeitstempel für die Aufteilung ein (`HH:MM` oder `HH:MM:SS`), einen pro Zeile. Der Zyklus wird an jedem Zeitstempel geteilt — N Zeitstempel erzeugen N+1 Segmente.",
|
||
"data": {
|
||
"split_timestamps": "Zeitstempel zum Trennen"
|
||
}
|
||
},
|
||
"reprocess_history": {
|
||
"title": "Wartung: Daten erneut verarbeiten und optimieren",
|
||
"description": "Führt eine gründliche Bereinigung historischer Daten durch:\n1. Reduziert Nullleistungswerte (Stille).\n2. Korrigiert Zykluszeitpunkt/-dauer.\n3. Berechnet alle statistischen Modelle (Hüllkurven) neu.\n\n**Führen Sie dies aus, um Datenprobleme zu beheben oder neue Algorithmen anzuwenden.**"
|
||
},
|
||
"wipe_history": {
|
||
"title": "Verlauf löschen (nur zum Testen)",
|
||
"description": "⚠️ Dadurch werden ALLE gespeicherten Zyklen und Profile für dieses Gerät dauerhaft gelöscht. Dies kann nicht rückgängig gemacht werden!"
|
||
},
|
||
"export_import": {
|
||
"title": "JSON exportieren/importieren",
|
||
"description": "Kopieren/Einfügen von Zyklen, Profilen und Einstellungen für dieses Gerät. Exportieren oder JSON zum Importieren einfügen.",
|
||
"data": {
|
||
"mode": "Aktion",
|
||
"json_payload": "Komplette Konfiguration JSON"
|
||
},
|
||
"data_description": {
|
||
"mode": "Wählen Sie „Exportieren“, um aktuelle Daten und Einstellungen zu kopieren, oder „Importieren“, um exportierte Daten von einem anderen WashData-Gerät einzufügen.",
|
||
"json_payload": "Für den Export: Dieses JSON kopieren (enthält Zyklen, Profile und alle erweiterten Einstellungen). Für den Import: JSON einfügen, das aus WashData exportiert wurde."
|
||
}
|
||
},
|
||
"record_cycle": {
|
||
"title": "Aufnahmezyklus",
|
||
"description": "Einen Zyklus manuell aufzeichnen, um ein sauberes Profil ohne Störungen zu erstellen.\n\nStatus: **{status}**\nDauer: {duration}s\nBeispiele: {samples}",
|
||
"menu_options": {
|
||
"record_refresh": "Status aktualisieren",
|
||
"record_stop": "Aufnahme beenden (Speichern und verarbeiten)",
|
||
"record_start": "Neue Aufnahme starten",
|
||
"record_process": "Letzte Aufnahme verarbeiten (Zuschneiden und Speichern)",
|
||
"record_discard": "Letzte Aufnahme verwerfen",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"record_process": {
|
||
"title": "Prozessaufzeichnung",
|
||
"description": "\n\n**Das Diagramm zeigt die Rohaufzeichnung.** Blau = Behalten, Rot = Vorgeschlagener Zuschnitt.\n*Das Diagramm ist statisch und wird bei Formularänderungen nicht aktualisiert.*\n\nDie Aufnahme wurde gestoppt. Zuschnitte werden an der erkannten Abtastrate (~{sampling_rate}s) ausgerichtet.\n\nRohdauer: {duration}s\nBeispiele: {samples}",
|
||
"data": {
|
||
"head_trim": "Anfang zuschneiden (Sekunden)",
|
||
"tail_trim": "Ende zuschneiden (Sekunden)",
|
||
"save_mode": "Ziel speichern",
|
||
"profile_name": "Profilname"
|
||
}
|
||
},
|
||
"learning_feedbacks": {
|
||
"title": "Lern-Feedbacks",
|
||
"description": "Ausstehendes Feedback: {count}\n\n{pending_table}\n\nWählen Sie eine Zyklusüberprüfungsanfrage zur Bearbeitung aus.",
|
||
"menu_options": {
|
||
"learning_feedbacks_pick": "Ausstehendes Feedback prüfen",
|
||
"learning_feedbacks_dismiss_all": "Gesamtes ausstehendes Feedback verwerfen",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"learning_feedbacks_pick": {
|
||
"title": "Feedback zur Überprüfung auswählen",
|
||
"description": "Wählen Sie eine Zyklus-Überprüfungsanfrage zum Öffnen aus.",
|
||
"data": {
|
||
"selected_feedback": "Zu überprüfenden Zyklus auswählen"
|
||
}
|
||
},
|
||
"learning_feedbacks_empty": {
|
||
"title": "Lern-Feedbacks",
|
||
"description": "Es wurden keine ausstehenden Feedbacks gefunden.",
|
||
"menu_options": {
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"learning_feedbacks_dismiss_all": {
|
||
"title": "Alle ausstehenden Feedbacks verwerfen",
|
||
"description": "Sie sind dabei, **{count}** ausstehende Feedback-Anfrage(n) zu verwerfen. Verworfene Zyklen bleiben in Ihrem Verlauf, tragen jedoch kein neues Lernsignal mehr bei. Dies kann nicht rückgängig gemacht werden.\n\n✅ Aktivieren Sie das Kontrollkästchen unten und klicken Sie auf **Senden**, um alle zu verwerfen.\n❌ Lassen Sie es deaktiviert und klicken Sie auf **Senden**, um den Vorgang abzubrechen und zurückzukehren.",
|
||
"data": {
|
||
"confirm_dismiss_all": "Bestätigen: alle ausstehenden Feedback-Anfragen verwerfen"
|
||
}
|
||
},
|
||
"resolve_feedback": {
|
||
"title": "Feedback beantworten",
|
||
"description": "{comparison_img}{candidates_table}\n**Erkanntes Profil**: {detected_profile} ({confidence_pct} %)\n**Geschätzte Dauer**: {est_duration_min} Min\n**Tatsächliche Dauer**: {act_duration_min} Min\n\n__Wählen Sie unten eine Aktion aus:__",
|
||
"data": {
|
||
"action": "Was möchten Sie tun?",
|
||
"corrected_profile": "Richtiges Programm (bei Korrektur)",
|
||
"corrected_duration": "Richtige Dauer in Sekunden (bei Korrektur)"
|
||
}
|
||
},
|
||
"trim_cycle_select": {
|
||
"title": "Zyklus zuschneiden – Zyklus auswählen",
|
||
"description": "Zyklus zum Zuschneiden auswählen. ✓ = abgeschlossen, ⚠ = fortgesetzt, ✗ = unterbrochen",
|
||
"data": {
|
||
"cycle_id": "Zyklus"
|
||
}
|
||
},
|
||
"trim_cycle": {
|
||
"title": "Zyklus zuschneiden",
|
||
"description": "Aktuelles Fenster: {trim_summary}\n\n{trim_svg}",
|
||
"data": {
|
||
"action": "Aktion"
|
||
}
|
||
},
|
||
"trim_cycle_start": {
|
||
"title": "Anfang zuschneiden",
|
||
"description": "Zyklusfenster: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nAktueller Start: **{current_wallclock}** (+{current_offset_min} Min. ab Zyklusstart)\n\nWählen Sie mit der Uhrauswahl unten eine neue Startzeit aus.",
|
||
"data": {
|
||
"trim_start_time": "Neue Startzeit",
|
||
"trim_start_min": "Neustart (Minuten ab Zyklusstart)"
|
||
}
|
||
},
|
||
"trim_cycle_end": {
|
||
"title": "Ende zuschneiden",
|
||
"description": "Zyklusfenster: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nAktuelles Ende: **{current_wallclock}** (+{current_offset_min} Min. ab Zyklusstart)\n\nWählen Sie mit der Uhrauswahl unten eine neue Endzeit aus.",
|
||
"data": {
|
||
"trim_end_time": "Neue Endzeit",
|
||
"trim_end_min": "Neues Ende (Minuten ab Zyklusbeginn)"
|
||
}
|
||
}
|
||
},
|
||
"error": {
|
||
"import_failed": "Der Import ist fehlgeschlagen. Bitte einen gültigen WashData-JSON-Export einfügen.",
|
||
"select_exactly_one": "Wählen Sie genau einen Zyklus für diese Aktion aus.",
|
||
"select_at_least_one": "Wählen Sie mindestens einen Zyklus für diese Aktion aus.",
|
||
"select_at_least_two": "Wählen Sie mindestens zwei Zyklen für diese Aktion aus.",
|
||
"profile_exists": "Ein Profil mit diesem Namen existiert bereits",
|
||
"rename_failed": "Profil konnte nicht umbenannt werden. Das Profil existiert möglicherweise nicht oder der neue Name ist bereits vergeben.",
|
||
"assignment_failed": "Profil konnte dem Zyklus nicht zugewiesen werden",
|
||
"duplicate_phase": "Eine Phase mit diesem Namen existiert bereits.",
|
||
"phase_not_found": "Die ausgewählte Phase wurde nicht gefunden.",
|
||
"invalid_phase_name": "Der Phasenname darf nicht leer sein.",
|
||
"phase_name_too_long": "Der Phasenname ist zu lang.",
|
||
"invalid_phase_range": "Der Phasenzeitraum ist ungültig. Ende muss größer als Anfang sein.",
|
||
"invalid_phase_timestamp": "Der Zeitstempel ist ungültig. Verwenden Sie das Format JJJJ-MM-TT HH:MM oder HH:MM.",
|
||
"overlapping_phase_ranges": "Phasenzeiträume überschneiden sich. Passen Sie die Zeiträume an und versuchen Sie es erneut.",
|
||
"incomplete_phase_row": "Jede Phasenzeile muss eine Phase sowie vollständige Start-/Endwerte für den ausgewählten Modus enthalten.",
|
||
"timestamp_mode_cycle_required": "Bitte wählen Sie einen Quellzyklus aus, wenn Sie den Zeitstempelmodus verwenden.",
|
||
"no_phase_ranges": "Für diese Aktion sind noch keine Phasenzeiträume verfügbar.",
|
||
"feedback_notification_title": "WashData: Zyklus überprüfen ({device})",
|
||
"feedback_notification_message": "**Gerät**: {device}\n**Programm**: {program} ({confidence} % Konfidenz)\n**Zeit**: {time}\n\nWashData benötigt Ihre Hilfe, um diesen erkannten Zyklus zu überprüfen.\n\nBitte gehen Sie zu **Einstellungen > Geräte & Dienste > WashData > Konfigurieren > Lern-Feedbacks**, um dieses Ergebnis zu bestätigen oder zu korrigieren.",
|
||
"suggestions_ready_notification_title": "WashData: Vorgeschlagene Einstellungen bereit ({device})",
|
||
"suggestions_ready_notification_message": "Der Sensor **Vorgeschlagene Einstellungen** meldet jetzt **{count}** umsetzbare Empfehlungen.\n\nUm sie zu überprüfen und anzuwenden: **Einstellungen > Geräte & Dienste > WashData > Konfigurieren > Erweiterte Einstellungen > Vorgeschlagene Werte anwenden**.\n\nVorschläge sind optional und werden vor dem Speichern zur Überprüfung angezeigt.",
|
||
"trim_range_invalid": "Der Start muss vor dem Ende liegen. Bitte Zuschnittspunkte anpassen.",
|
||
"trim_failed": "Das Zuschneiden ist fehlgeschlagen. Möglicherweise existiert der Zyklus nicht mehr oder das Fenster ist leer.",
|
||
"invalid_split_timestamp": "Der Zeitstempel ist ungültig oder liegt außerhalb des Zyklusfensters. Verwenden Sie HH:MM oder HH:MM:SS innerhalb des Zyklusfensters.",
|
||
"no_split_segments_found": "Aus diesen Zeitstempeln konnten keine gültigen Segmente erzeugt werden. Stellen Sie sicher, dass jeder Zeitstempel innerhalb des Zyklusfensters liegt und Segmente mindestens 1 Minute lang sind.",
|
||
"auto_tune_suggestion": "{device_type} {device_title} hat Geisterzyklen erkannt. Vorgeschlagene Änderung der Mindestleistung: {current_min}W -> {new_min}W (wird nicht automatisch angewendet).",
|
||
"auto_tune_title": "WashData Auto-Tune",
|
||
"auto_tune_fallback": "{device_type} {device_title} hat Geisterzyklen erkannt. Vorgeschlagene Änderung der Mindestleistung: {current_min}W -> {new_min}W (wird nicht automatisch angewendet)."
|
||
},
|
||
"abort": {
|
||
"no_cycles_found": "Keine Zyklen gefunden",
|
||
"no_split_segments_found": "Im ausgewählten Zyklus wurden keine teilbaren Segmente gefunden.",
|
||
"cycle_not_found": "Der ausgewählte Zyklus konnte nicht geladen werden.",
|
||
"no_power_data": "Für den ausgewählten Zyklus sind keine Leistungsverläufe verfügbar.",
|
||
"no_profiles_found": "Keine Profile gefunden. Erstellen Sie zunächst ein Profil.",
|
||
"no_profiles_for_matching": "Keine Profile zum Abgleich verfügbar. Erstellen Sie zunächst Profile.",
|
||
"no_unlabeled_cycles": "Alle Zyklen sind bereits zugeordnet",
|
||
"no_suggestions": "Noch keine Wertevorschläge verfügbar. Führen Sie einige Zyklen durch und versuchen Sie es erneut.",
|
||
"no_predictions": "Keine Vorhersagen",
|
||
"no_custom_phases": "Keine benutzerdefinierten Phasen gefunden.",
|
||
"reprocess_success": "{count} Zyklen erfolgreich erneut verarbeitet.",
|
||
"debug_data_cleared": "Debug-Daten aus {count} Zyklen wurden erfolgreich gelöscht."
|
||
}
|
||
},
|
||
"selector": {
|
||
"notify_events_option": {
|
||
"options": {
|
||
"cycle_start": "Zyklusstart",
|
||
"cycle_finish": "Zyklusende",
|
||
"cycle_live": "Live-Fortschritt"
|
||
}
|
||
},
|
||
"common_text": {
|
||
"options": {
|
||
"unlabeled": "(nicht zugeordnet)",
|
||
"create_new_profile": "Neues Profil erstellen",
|
||
"remove_label": "Zuordnung entfernen",
|
||
"no_reference_cycle": "(Kein Referenzzyklus)",
|
||
"all_device_types": "Alle Gerätetypen",
|
||
"current_suffix": "(aktuell)",
|
||
"editor_select_info": "Einen Zyklus zum Teilen oder mehrere Zyklen zum Zusammenführen auswählen.",
|
||
"editor_select_info_split": "Wählen Sie 1 Zyklus zum Aufteilen aus.",
|
||
"editor_select_info_merge": "Wählen Sie 2 oder mehr Zyklen zum Zusammenführen aus.",
|
||
"editor_select_info_delete": "Wählen Sie 1 oder mehr Zyklen zum Löschen aus.",
|
||
"no_cycles_recorded": "Noch keine Zyklen aufgezeichnet.",
|
||
"profile_summary_line": "- **{name}**: {count} Zyklen, {avg}m durchschnittlich",
|
||
"no_profiles_created": "Noch keine Profile erstellt.",
|
||
"phase_preview": "Phasenvorschau",
|
||
"phase_preview_no_curve": "Die durchschnittliche Profilkurve ist noch nicht verfügbar. Weitere Zyklen für dieses Profil ausführen/zuordnen.",
|
||
"average_power_curve": "Durchschnittliche Leistungskurve",
|
||
"unit_min": "min",
|
||
"profile_option_fmt": "{name} ({count} Zyklen, ~{duration}m Durchschnitt)",
|
||
"profile_option_short_fmt": "{name} ({count} Zyklen, ~{duration}m)",
|
||
"deleted_cycles_from_profile": "{count} Zyklen von {profile} gelöscht.",
|
||
"not_enough_data_graph": "Nicht genügend Daten, um ein Diagramm zu erstellen.",
|
||
"no_profiles_found": "Keine Profile gefunden.",
|
||
"cycle_info_fmt": "Zyklus: {start}, {duration}m, Strom: {label}",
|
||
"top_candidates_header": "### Top-Kandidaten",
|
||
"tbl_profile": "Profil",
|
||
"tbl_confidence": "Vertrauen",
|
||
"tbl_correlation": "Korrelation",
|
||
"tbl_duration_match": "Dauer-Match",
|
||
"detected_profile": "Erkanntes Profil",
|
||
"estimated_duration": "Geschätzte Dauer",
|
||
"actual_duration": "Tatsächliche Dauer",
|
||
"choose_action": "__Aktion auswählen:__",
|
||
"tbl_count": "Zählen",
|
||
"tbl_avg": "Durchschn",
|
||
"tbl_min": "Min",
|
||
"tbl_max": "Max",
|
||
"tbl_energy_avg": "Energie (Durchschn.)",
|
||
"tbl_energy_total": "Energie (Gesamt)",
|
||
"tbl_consistency": "Bestehen.",
|
||
"tbl_last_run": "Letzter Lauf",
|
||
"graph_legend_title": "Diagrammlegende",
|
||
"graph_legend_body": "Das blaue Band stellt den beobachteten minimalen und maximalen Leistungsaufnahmebereich dar. Die Linie zeigt die durchschnittliche Leistungskurve.",
|
||
"recording_preview": "Aufnahmevorschau",
|
||
"trim_start": "Anfang zuschneiden",
|
||
"trim_end": "Ende zuschneiden",
|
||
"split_preview_title": "Geteilte Vorschau",
|
||
"split_preview_found_fmt": "{count} Segmente gefunden.",
|
||
"split_preview_confirm_fmt": "Klicken Sie auf „Bestätigen“, um diesen Zyklus in {count} separate Zyklen aufzuteilen.",
|
||
"merge_preview_title": "Vorschau zusammenführen",
|
||
"merge_preview_joining_fmt": "Tritt {count} Zyklen bei. Lücken werden mit 0W-Messwerten gefüllt.",
|
||
"editor_delete_preview_title": "Löschvorschau",
|
||
"editor_delete_preview_intro": "Die ausgewählten Zyklen werden dauerhaft gelöscht:",
|
||
"editor_delete_preview_confirm": "Klicken Sie auf Bestätigen, um diese Zyklusdatensätze dauerhaft zu löschen.",
|
||
"no_power_preview": "*Keine Leistungsdaten für die Vorschau verfügbar.*",
|
||
"profile_comparison": "Profilvergleich",
|
||
"actual_cycle_label": "Dieser Zyklus (aktuell)",
|
||
"storage_usage_header": "Speichernutzung",
|
||
"storage_file_size": "Dateigröße",
|
||
"storage_cycles": "Zyklen",
|
||
"storage_profiles": "Profile",
|
||
"storage_debug_traces": "Debug-Traces",
|
||
"overview_suffix": "Überblick",
|
||
"phase_preview_for_profile": "Phasenvorschau für Profil",
|
||
"current_ranges_header": "Aktuelle Zeiträume",
|
||
"assign_phases_help": "Folgende Aktionen verwenden, um Zeiträume hinzuzufügen, zu bearbeiten, zu löschen oder zu speichern.",
|
||
"profile_summary_header": "Profilzusammenfassung",
|
||
"recent_cycles_header": "Aktuelle Zyklen",
|
||
"trim_cycle_preview_title": "Zykluszuschnittsvorschau",
|
||
"trim_cycle_preview_no_data": "Für diesen Zyklus sind keine Leistungsdaten verfügbar.",
|
||
"trim_cycle_preview_kept_suffix": "gehalten",
|
||
"table_program": "Programm",
|
||
"table_when": "Wann",
|
||
"table_length": "Dauer",
|
||
"table_match": "Treffer",
|
||
"table_profile": "Profil",
|
||
"table_cycles": "Zyklen",
|
||
"table_avg_length": "Ø Dauer",
|
||
"table_last_run": "Letzter Lauf",
|
||
"table_avg_energy": "Ø Energie",
|
||
"table_detected_program": "Erkanntes Programm",
|
||
"table_confidence": "Vertrauen",
|
||
"table_reported": "Gemeldet",
|
||
"phase_builtin_suffix": "(Eingebaut)",
|
||
"phase_none_available": "Keine Phasen verfügbar.",
|
||
"settings_deprecation_warning": "⚠️ **Veralteter Gerätetyp:** {device_type} soll in einer zukünftigen Version entfernt werden. Die Matching-Pipeline von WashData liefert für diese Appliance-Klasse keine zuverlässigen Ergebnisse. Ihre Integration funktioniert während des veralteten Zeitraums weiterhin. Um diese Warnung auszuschalten, schalten Sie **Gerätetyp** unten auf einen der unterstützten Typen um (Waschmaschine, Trockner, Wasch-Trockner-Kombi, Geschirrspüler, Heißluftfritteuse, Brotbackautomat oder Pumpe) oder auf **Andere (Erweitert)**, wenn Ihr Gerät keinem der unterstützten Typen entspricht. **Andere (Erweiterte)** liefert absichtlich generische Standardeinstellungen, die nicht auf eine bestimmte Appliance abgestimmt sind, sodass Sie Schwellenwerte, Zeitüberschreitungen und passende Parameter selbst konfigurieren müssen; Alle Ihre bestehenden Einstellungen bleiben beim Wechsel erhalten.",
|
||
"phase_other_device_types": "Weitere Gerätetypen:"
|
||
}
|
||
},
|
||
"interactive_editor_action": {
|
||
"options": {
|
||
"split": "Einen Zyklus aufteilen (Lücken finden)",
|
||
"merge": "Zyklen zusammenführen (Fragmente verbinden)",
|
||
"delete": "Zyklus(e) löschen"
|
||
}
|
||
},
|
||
"split_mode": {
|
||
"options": {
|
||
"auto": "Leerlauflücken automatisch erkennen",
|
||
"manual": "Manuelle Zeitstempel"
|
||
}
|
||
},
|
||
"diagnostics_action": {
|
||
"options": {
|
||
"reprocess_history": "Wartung: Daten erneut verarbeiten und optimieren",
|
||
"clear_debug_data": "Debug-Daten löschen (Speicherplatz freigeben)",
|
||
"wipe_history": "ALLE Daten für dieses Gerät löschen (unwiderruflich)",
|
||
"export_import": "JSON mit Einstellungen exportieren/importieren (Kopieren/Einfügen)"
|
||
}
|
||
},
|
||
"export_import_mode": {
|
||
"options": {
|
||
"export": "Alle Daten exportieren",
|
||
"import": "Daten importieren/zusammenführen"
|
||
}
|
||
},
|
||
"manage_cycles_action": {
|
||
"options": {
|
||
"auto_label_cycles": "Alte Zyklen automatisch zuordnen",
|
||
"select_cycle_to_label": "Zyklus einzeln zuordnen",
|
||
"select_cycle_to_delete": "Zyklus löschen",
|
||
"interactive_editor": "Interaktiver Editor zum Zusammenführen/Teilen",
|
||
"trim_cycle": "Zyklusdaten zuschneiden"
|
||
}
|
||
},
|
||
"manage_profiles_action": {
|
||
"options": {
|
||
"create_profile": "Neues Profil erstellen",
|
||
"edit_profile": "Profil bearbeiten/umbenennen",
|
||
"delete_profile": "Profil löschen",
|
||
"profile_stats": "Profilstatistik",
|
||
"cleanup_profile": "Verlauf bereinigen – grafisch darstellen und löschen",
|
||
"assign_phases": "Phasenzeiträume zuweisen"
|
||
}
|
||
},
|
||
"manage_phase_catalog_action": {
|
||
"options": {
|
||
"create_custom_phase": "Neue Phase erstellen",
|
||
"edit_custom_phase": "Phase bearbeiten",
|
||
"delete_custom_phase": "Phase löschen"
|
||
}
|
||
},
|
||
"assign_profile_phases_action": {
|
||
"options": {
|
||
"add_range": "Phasenzeitraum hinzufügen",
|
||
"edit_range": "Phasenzeitraum bearbeiten",
|
||
"delete_range": "Phasenzeitraum löschen",
|
||
"clear_ranges": "Alle Zeiträume löschen",
|
||
"auto_detect_ranges": "Phasen automatisch erkennen",
|
||
"save_ranges": "Speichern und zurückgeben"
|
||
}
|
||
},
|
||
"record_cycle_action": {
|
||
"options": {
|
||
"refresh_status": "Status aktualisieren",
|
||
"stop_recording": "Aufnahme beenden (Speichern und verarbeiten)",
|
||
"start_recording": "Neue Aufnahme starten",
|
||
"process_recording": "Letzte Aufnahme verarbeiten (Zuschneiden und Speichern)",
|
||
"discard_recording": "Letzte Aufnahme verwerfen"
|
||
}
|
||
},
|
||
"record_process_save_mode": {
|
||
"options": {
|
||
"new_profile": "Neues Profil erstellen",
|
||
"existing_profile": "Zum vorhandenen Profil hinzufügen",
|
||
"discard": "Aufnahme verwerfen"
|
||
}
|
||
},
|
||
"resolve_feedback_action": {
|
||
"options": {
|
||
"confirm": "Bestätigen – richtige Erkennung",
|
||
"correct": "Korrigieren – Programm/Dauer auswählen",
|
||
"ignore": "Ignorieren – falsch positiver/verrauschter Zyklus",
|
||
"delete": "Löschen – Aus dem Verlauf entfernen"
|
||
}
|
||
},
|
||
"assign_profile_phases_auto_detect_action": {
|
||
"options": {
|
||
"name_phases": "Phasen benennen und anwenden",
|
||
"cancel": "Änderungen verwerfen"
|
||
}
|
||
},
|
||
"trim_cycle_action": {
|
||
"options": {
|
||
"set_start": "Startpunkt festlegen",
|
||
"set_end": "Endpunkt festlegen",
|
||
"reset": "Auf volle Dauer zurücksetzen",
|
||
"apply": "Zuschnitt anwenden",
|
||
"cancel": "Stornieren"
|
||
}
|
||
},
|
||
"device_type": {
|
||
"options": {
|
||
"washing_machine": "Waschmaschine",
|
||
"dryer": "Trockner",
|
||
"washer_dryer": "Waschmaschine-Trockner-Kombination",
|
||
"dishwasher": "Spülmaschine",
|
||
"coffee_machine": "Kaffeemaschine (veraltet)",
|
||
"ev": "Elektrofahrzeug (veraltet)",
|
||
"air_fryer": "Luftfritteuse",
|
||
"heat_pump": "Wärmepumpe (veraltet)",
|
||
"bread_maker": "Brotbackautomat",
|
||
"pump": "Pumpe / Sumpfpumpe",
|
||
"oven": "Ofen (veraltet)",
|
||
"other": "Andere (Fortgeschrittene)"
|
||
}
|
||
}
|
||
},
|
||
"services": {
|
||
"label_cycle": {
|
||
"name": "Zyklus zuordnen",
|
||
"description": "Einen Zyklus einem Profil zuordnen oder die Zuordnung aufheben.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät für die Zuordnung."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Zyklus-ID",
|
||
"description": "Die ID des zuzuordnenden Zyklus."
|
||
},
|
||
"profile_name": {
|
||
"name": "Profilname",
|
||
"description": "Der Name eines vorhandenen Profils (Profile erstellen im Menü „Profile verwalten“). Feld leer lassen, um die Zuordnung zu entfernen."
|
||
}
|
||
}
|
||
},
|
||
"create_profile": {
|
||
"name": "Profil erstellen",
|
||
"description": "Ein neues Profil erstellen (leer oder basierend auf einem Referenzzyklus).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät."
|
||
},
|
||
"profile_name": {
|
||
"name": "Profilname",
|
||
"description": "Name für das neue Profil (z. B. „Heavy Duty“, „Delicates“)."
|
||
},
|
||
"reference_cycle_id": {
|
||
"name": "Referenzzyklus-ID",
|
||
"description": "Optionale Zyklus-ID, auf der dieses Profil basieren soll."
|
||
}
|
||
}
|
||
},
|
||
"delete_profile": {
|
||
"name": "Profil löschen",
|
||
"description": "Profil löschen und optional alle Zuordnungen von Zyklen aufheben, die es verwenden.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät."
|
||
},
|
||
"profile_name": {
|
||
"name": "Profilname",
|
||
"description": "Das zu löschende Profil."
|
||
},
|
||
"unlabel_cycles": {
|
||
"name": "Zyklen-Zuordnung aufheben",
|
||
"description": "Zuordnung aller Zyklen aufheben, die dieses Profil verwenden."
|
||
}
|
||
}
|
||
},
|
||
"auto_label_cycles": {
|
||
"name": "Alte Zyklen automatisch zuordnen",
|
||
"description": "Nicht zugeordnete Zyklen rückwirkend mithilfe des Profilabgleichs zuordnen.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät."
|
||
},
|
||
"confidence_threshold": {
|
||
"name": "Vertrauensschwellwert",
|
||
"description": "Mindestübereinstimmungskonfidenz (0,50–0,95) zum Anwenden von Zuordnungen."
|
||
}
|
||
}
|
||
},
|
||
"export_config": {
|
||
"name": "Konfiguration exportieren",
|
||
"description": "Profile, Zyklen und Einstellungen dieses Geräts in eine JSON-Datei exportieren (pro Gerät).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das zu exportierende WashData-Gerät."
|
||
},
|
||
"path": {
|
||
"name": "Pfad",
|
||
"description": "Optionaler absoluter Dateipfad zum Schreiben (standardmäßig /config/ha_washdata_export_{entry}.json)."
|
||
}
|
||
}
|
||
},
|
||
"import_config": {
|
||
"name": "Konfiguration importieren",
|
||
"description": "Profile, Zyklen und Einstellungen für dieses Gerät aus einer JSON-Exportdatei importieren (Einstellungen werden möglicherweise überschrieben).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät, in das importiert werden soll."
|
||
},
|
||
"path": {
|
||
"name": "Pfad",
|
||
"description": "Absoluter Pfad zur zu importierenden JSON-Exportdatei."
|
||
}
|
||
}
|
||
},
|
||
"submit_cycle_feedback": {
|
||
"name": "Zyklus-Feedback bestätigen",
|
||
"description": "Ein automatisch erkanntes Programm nach einem abgeschlossenen Zyklus bestätigen oder korrigieren. Geben Sie entweder „entry_id“ (erweitert) oder „device_id“ (empfohlen) an.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät (empfohlen anstelle von „entry_id“)."
|
||
},
|
||
"entry_id": {
|
||
"name": "Eintrags-ID",
|
||
"description": "Die Konfigurationseintrags-ID für das Gerät (Alternative zu device_id)."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Zyklus-ID",
|
||
"description": "Die in der Feedback-Benachrichtigung/in den Protokollen angezeigte Zyklus-ID."
|
||
},
|
||
"user_confirmed": {
|
||
"name": "Das erkannte Programm bestätigen",
|
||
"description": "Auf „true“ setzen, wenn das erkannte Programm korrekt ist."
|
||
},
|
||
"corrected_profile": {
|
||
"name": "Korrigiertes Profil",
|
||
"description": "Wenn dies nicht bestätigt wird, den korrekten Profil-/Programmnamen angeben."
|
||
},
|
||
"corrected_duration": {
|
||
"name": "Korrigierte Dauer (Sekunden)",
|
||
"description": "Optionale korrigierte Dauer in Sekunden."
|
||
},
|
||
"notes": {
|
||
"name": "Notizen",
|
||
"description": "Optionale Hinweise zu diesem Zyklus."
|
||
}
|
||
}
|
||
},
|
||
"record_start": {
|
||
"name": "Zyklusstart aufzeichnen",
|
||
"description": "Manuelle Aufzeichnung eines sauberen Zyklus starten (umgeht alle Matching-Funktionen).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät zum Aufnehmen."
|
||
}
|
||
}
|
||
},
|
||
"record_stop": {
|
||
"name": "Aufnahmezyklusstopp",
|
||
"description": "Die manuelle Aufnahme beenden.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät stoppt die Aufnahme."
|
||
}
|
||
}
|
||
},
|
||
"trim_cycle": {
|
||
"name": "Zyklus zuschneiden",
|
||
"description": "Die Leistungsdaten eines vergangenen Zyklus auf ein bestimmtes Zeitfenster zuschneiden.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Zyklus-ID",
|
||
"description": "Die ID des zuzuschneidenden Zyklus."
|
||
},
|
||
"trim_start_s": {
|
||
"name": "Anfang zuschneiden (Sekunden)",
|
||
"description": "Daten ab diesem Zeitpunkt (in Sekunden) behalten. Standard 0."
|
||
},
|
||
"trim_end_s": {
|
||
"name": "Ende zuschneiden (Sekunden)",
|
||
"description": "Daten bis zu diesem Zeitpunkt behalten. Standard = Zyklusende."
|
||
}
|
||
}
|
||
},
|
||
"pause_cycle": {
|
||
"name": "Zyklus anhalten",
|
||
"description": "Unterbrechen Sie den aktiven Zyklus für ein WashData-Gerät.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät, das angehalten werden soll."
|
||
}
|
||
}
|
||
},
|
||
"resume_cycle": {
|
||
"name": "Zyklus fortsetzen",
|
||
"description": "Setzen Sie einen angehaltenen Zyklus für ein WashData-Gerät fort.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät, das fortgesetzt werden soll."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"entity": {
|
||
"binary_sensor": {
|
||
"running": {
|
||
"name": "Läuft"
|
||
},
|
||
"match_ambiguity": {
|
||
"name": "Übereinstimmungsmehrdeutigkeit"
|
||
}
|
||
},
|
||
"sensor": {
|
||
"washer_state": {
|
||
"name": "Zustand",
|
||
"state": {
|
||
"off": "Aus",
|
||
"idle": "Leerlauf",
|
||
"starting": "Beginnt",
|
||
"running": "Läuft",
|
||
"paused": "Angehalten",
|
||
"user_paused": "Vom Benutzer angehalten",
|
||
"ending": "Ende",
|
||
"finished": "Fertig",
|
||
"anti_wrinkle": "Knitterschutz",
|
||
"delay_wait": "Warten auf den Start",
|
||
"interrupted": "Unterbrochen",
|
||
"force_stopped": "Erzwungen beendet",
|
||
"rinse": "Spülen",
|
||
"unknown": "Unbekannt",
|
||
"clean": "Sauber"
|
||
}
|
||
},
|
||
"washer_program": {
|
||
"name": "Programm"
|
||
},
|
||
"time_remaining": {
|
||
"name": "Verbleibende Zeit"
|
||
},
|
||
"total_duration": {
|
||
"name": "Gesamtdauer"
|
||
},
|
||
"cycle_progress": {
|
||
"name": "Fortschritt"
|
||
},
|
||
"current_power": {
|
||
"name": "Aktuelle Leistung"
|
||
},
|
||
"elapsed_time": {
|
||
"name": "Verstrichene Zeit"
|
||
},
|
||
"debug_info": {
|
||
"name": "Debug-Info"
|
||
},
|
||
"match_confidence": {
|
||
"name": "Match-Vertrauen"
|
||
},
|
||
"top_candidates": {
|
||
"name": "Top-Kandidaten",
|
||
"state": {
|
||
"none": "Keiner"
|
||
}
|
||
},
|
||
"current_phase": {
|
||
"name": "Aktuelle Phase"
|
||
},
|
||
"wash_phase": {
|
||
"name": "Phase"
|
||
},
|
||
"profile_cycle_count": {
|
||
"name": "Profil {profile_name} Anzahl",
|
||
"unit_of_measurement": "Zyklen"
|
||
},
|
||
"suggestions": {
|
||
"name": "Empfohlene Einstellungen"
|
||
},
|
||
"pump_runs_today": {
|
||
"name": "Pumpenläufe (letzte 24 Stunden)"
|
||
},
|
||
"cycle_count": {
|
||
"name": "Zyklusanzahl"
|
||
}
|
||
},
|
||
"select": {
|
||
"program_select": {
|
||
"name": "Zyklusprogramm",
|
||
"state": {
|
||
"auto_detect": "Automatische Erkennung"
|
||
}
|
||
}
|
||
},
|
||
"button": {
|
||
"force_end_cycle": {
|
||
"name": "Zyklusende erzwingen"
|
||
},
|
||
"pause_cycle": {
|
||
"name": "Zyklus anhalten"
|
||
},
|
||
"resume_cycle": {
|
||
"name": "Zyklus fortsetzen"
|
||
}
|
||
}
|
||
},
|
||
"exceptions": {
|
||
"device_id_required": {
|
||
"message": "Eine gültige Geräte-ID ist erforderlich."
|
||
},
|
||
"cycle_id_required": {
|
||
"message": "Eine gültige cycle_id ist erforderlich."
|
||
},
|
||
"profile_name_required": {
|
||
"message": "Ein gültiger Profilname ist erforderlich."
|
||
},
|
||
"device_not_found": {
|
||
"message": "Gerät nicht gefunden."
|
||
},
|
||
"no_config_entry": {
|
||
"message": "Für das Gerät wurde kein Konfigurationseintrag gefunden."
|
||
},
|
||
"integration_not_loaded": {
|
||
"message": "Die Integration wurde für dieses Gerät nicht geladen."
|
||
},
|
||
"cycle_not_found_or_no_power": {
|
||
"message": "Zyklus nicht gefunden oder hat keine Leistungsdaten."
|
||
},
|
||
"trim_failed_empty_window": {
|
||
"message": "Zuschneiden fehlgeschlagen – Zyklus nicht gefunden, keine Leistungsdaten oder resultierendes Fenster ist leer."
|
||
},
|
||
"trim_invalid_range": {
|
||
"message": "trim_end_s muss größer als trim_start_s sein."
|
||
}
|
||
}
|
||
}
|