1342 lines
80 KiB
JSON
1342 lines
80 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": "Was für ein Gerät ist das? Hilft bei der individuellen Erkennung und Kennzeichnung.",
|
||
"power_sensor": "Die Sensoreinheit, die den Stromverbrauch (in Watt) Ihres Smart Plugs in Echtzeit meldet.",
|
||
"min_power": "Leistungswerte über diesem Schwellenwert (in Watt) zeigen an, dass das Gerät läuft. Beginnen Sie bei den meisten Geräten mit 2 W."
|
||
}
|
||
},
|
||
"first_profile": {
|
||
"title": "Erstellen Sie das erste Profil",
|
||
"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": "Überprüfen Sie die Lernrückmeldungen",
|
||
"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": "Bestätigen Sie den Kopiervorgang"
|
||
}
|
||
},
|
||
"apply_suggestions_confirm": {
|
||
"title": "Überprüfen Sie die vorgeschlagenen Änderungen",
|
||
"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}Optimieren Sie Erkennungsschwellenwerte, Lernen und erweitertes Verhalten. Die Standardeinstellungen funktionieren für die meisten Setups gut.\n\nAktuell verfügbare Einstellungsvorschläge: {suggestions_count}.\nFalls dieser Wert über 0 liegt, öffnen Sie die Erweiterten Einstellungen und nutzen Sie „Vorgeschlagene Werte anwenden”, um die Empfehlungen zu prüfen.",
|
||
"data": {
|
||
"apply_suggestions": "Vorgeschlagene Werte anwenden",
|
||
"device_type": "Gerätetyp",
|
||
"power_sensor": "Leistungssensoreinheit",
|
||
"min_power": "Mindestleistung (W)",
|
||
"off_delay": "Zyklusendeverzögerung (en)",
|
||
"notify_actions": "Benachrichtigungsaktionen",
|
||
"notify_people": "Verzögern Sie die Lieferung, bis diese Personen zu Hause sind",
|
||
"notify_only_when_home": "Benachrichtigungen verzögern, bis die ausgewählte Person zu Hause ist",
|
||
"notify_fire_events": "Automatisierungsereignisse auslösen",
|
||
"notify_start_services": "Zyklusstart – Benachrichtigungsziele",
|
||
"notify_finish_services": "Zyklusende – Benachrichtigungsziele",
|
||
"notify_live_services": "Live-Fortschritt – Benachrichtigungsziele",
|
||
"notify_before_end_minutes": "Benachrichtigung vor Fertigstellung (Minuten vor Ende)",
|
||
"notify_title": "Titel der Benachrichtigung",
|
||
"notify_icon": "Benachrichtigungssymbol",
|
||
"notify_start_message": "Starten Sie das Nachrichtenformat",
|
||
"notify_finish_message": "Beenden Sie das Nachrichtenformat",
|
||
"notify_pre_complete_message": "Nachrichtenformat vor Abschluss",
|
||
"show_advanced": "Erweiterte Einstellungen bearbeiten (nächster Schritt)"
|
||
},
|
||
"data_description": {
|
||
"apply_suggestions": "Aktivieren Sie dieses Kontrollkästchen, 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": "Wählen Sie den Gerätetyp (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 Schwellenwert (in Watt) zeigen an, dass das Gerät läuft. Beginnen Sie bei den meisten Geräten mit 2 W.",
|
||
"off_delay": "Sekunden lang muss die geglättete Leistung unter dem Stoppschwellenwert 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, die für das Anwesenheits-Gating verwendet werden. Wenn diese Option aktiviert ist, wird die Zustellung der 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 voranzutreiben.",
|
||
"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": "Minuten vor dem voraussichtlichen Ende des Zyklus, um eine Benachrichtigung auszulösen. 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). Lassen Sie das Feld leer, 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": "Konfigurieren Sie Benachrichtigungskanäle, Vorlagen und optionale Live-Fortschrittsaktualisierungen für Mobilgeräte.",
|
||
"data": {
|
||
"notify_actions": "Benachrichtigungsaktionen",
|
||
"notify_people": "Verzögern Sie die Lieferung, bis diese Personen zu Hause sind",
|
||
"notify_only_when_home": "Benachrichtigungen verzögern, bis die ausgewählte Person zu Hause ist",
|
||
"notify_fire_events": "Automatisierungsereignisse auslösen",
|
||
"notify_start_services": "Zyklusstart – Benachrichtigungsziele",
|
||
"notify_finish_services": "Zyklusende – Benachrichtigungsziele",
|
||
"notify_live_services": "Live-Fortschritt – Benachrichtigungsziele",
|
||
"notify_before_end_minutes": "Benachrichtigung vor Fertigstellung (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": "Starten Sie das Nachrichtenformat",
|
||
"notify_finish_message": "Beenden Sie das Nachrichtenformat",
|
||
"notify_pre_complete_message": "Nachrichtenformat vor Abschluss",
|
||
"energy_price_entity": "Energiepreis – Entität (optional)",
|
||
"energy_price_static": "Energiepreis – Statischer Wert (optional)",
|
||
"go_back": "Ohne Speichern zurück",
|
||
"notify_reminder_message": "Format der Erinnerungsnachricht",
|
||
"notify_timeout_seconds": "Automatisch schließen nach (Sekunden)",
|
||
"notify_channel": "Benachrichtigungskanal (Status/Live/Erinnerung)",
|
||
"notify_finish_channel": "Fertiger Benachrichtigungskanal"
|
||
},
|
||
"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, die für das Anwesenheits-Gating verwendet werden. Wenn diese Option aktiviert ist, wird die Zustellung der 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 voranzutreiben.",
|
||
"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": "Minuten vor dem voraussichtlichen Ende des Zyklus, um eine Benachrichtigung auszulösen. 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). Lassen Sie das Feld leer, 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, der die konfigurierte Anzahl von Minuten vor dem voraussichtlichen Ende gesendet hat. Unterscheidet sich von den oben genannten wiederkehrenden Live-Updates. Unterstützt die Platzhalter {device}, {minutes}, {program}.",
|
||
"notify_timeout_seconds": "Benachrichtigungen werden nach dieser Anzahl von Sekunden automatisch verworfen (weitergeleitet als „Timeout“ der Begleit-App). Auf 0 setzen, um sie bis zur Entlassung beizubehalten. Standard: 0.",
|
||
"notify_channel": "Android Begleit-App-Benachrichtigungskanal für Status, Live-Fortschritt und Erinnerungsbenachrichtigungen. Der Ton und die Wichtigkeit eines Kanals werden bei der ersten Verwendung des Kanalnamens in der Begleit-App konfiguriert – WashData legt nur den Kanalnamen fest. Für die App-Standardeinstellung leer lassen.",
|
||
"notify_finish_channel": "Separater Android-Kanal für die fertige Warnung (wird auch von der Erinnerung und dem Wäsche-Warten-Meckern verwendet), damit er seinen eigenen Ton haben kann. Lassen Sie das Feld leer, um den Kanal oben wiederzuverwenden.",
|
||
"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": "Passen Sie Erkennungsschwellen, Lernen und erweitertes Verhalten an. Die Standardeinstellungen funktionieren für die meisten Setups gut.",
|
||
"sections": {
|
||
"suggestions_section": {
|
||
"name": "Vorgeschlagene Einstellungen",
|
||
"description": "{suggestions_count} gelernte Vorschläge verfügbar. Aktivieren Sie „Vorgeschlagene Werte anwenden“, um die vorgeschlagenen Änderungen vor dem Speichern zu prüfen.",
|
||
"data": {
|
||
"apply_suggestions": "Vorgeschlagene Werte anwenden"
|
||
},
|
||
"data_description": {
|
||
"apply_suggestions": "Aktivieren Sie dieses Kontrollkästchen, 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": "Startenergietor (Wh)",
|
||
"completion_min_seconds": "Mindestlaufzeit für den Abschluss (Sekunden)",
|
||
"start_threshold_w": "Startschwelle (W)",
|
||
"stop_threshold_w": "Stoppschwelle (W)",
|
||
"end_energy_threshold": "Endenergietor (Wh)",
|
||
"running_dead_zone": "Toter Bereich beim Start (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": "Ignorieren Sie kurze Leistungsspitzen, 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 Schwellenwert 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 Schwellenwert fallen, um einen Zyklus zu BEENDEN. Stellen Sie den Wert knapp über Null ein, 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": "Ignorieren Sie nach dem Start des Zyklus Stromeinbrüche für diese Anzahl von Sekunden, 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 Schwellenwert 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 Rückmeldung 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": "Schwellenwert für Profilübereinstimmung",
|
||
"profile_unmatch_threshold": "Schwellenwert 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 Übereinstimmungsschwellenwert sein, um ein Flackern zu verhindern. Standard: 0,35.",
|
||
"auto_label_confidence": "Beschriften Sie Zyklen mit oder über diesem Konfidenzniveau nach Abschluss automatisch (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": "Zeitsteuerung, 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": "Aktivieren Sie die automatische Wartung",
|
||
"expose_debug_entities": "Debug-Entitäten verfügbar machen",
|
||
"save_debug_traces": "Speichern Sie Debug-Traces"
|
||
},
|
||
"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: Erzwingen Sie das Beenden eines ACTIVE-Zyklus nur, wenn für diese viele Sekunden keine Aktualisierungen eintreffen. Beim Abschluss mit geringem Stromverbrauch wird weiterhin die Ausschaltverzögerung verwendet.",
|
||
"progress_reset_delay": "Nachdem ein Zyklus abgeschlossen ist (100 %), warten Sie so viele Sekunden im Leerlauf, bevor Sie den Fortschritt auf 0 % zurücksetzen. Standard: 300s.",
|
||
"auto_maintenance": "Aktivieren Sie die automatische Wartung (Beispiele reparieren, Fragmente zusammenführen).",
|
||
"expose_debug_entities": "Zeigen Sie erweiterte Sensoren (Konfidenz, Phase, Mehrdeutigkeit) zum Debuggen an.",
|
||
"save_debug_traces": "Speichern Sie detaillierte Ranking- und Stromverfolgungsdaten im Verlauf (erhöht die Speichernutzung)."
|
||
}
|
||
},
|
||
"anti_wrinkle_section": {
|
||
"name": "Knitterschutz (Trockner)",
|
||
"description": "Ignorieren Sie Trommeldrehungen nach Zyklusende, um Geisterzyklen zu verhindern. Nur Trockner / Waschtrockner.",
|
||
"data": {
|
||
"anti_wrinkle_enabled": "Anti-Falten-Schutz (nur Trockner)",
|
||
"anti_wrinkle_max_power": "Anti-Falten-Maximalleistung (W)",
|
||
"anti_wrinkle_max_duration": "Maximale Anti-Falten-Dauer (s)",
|
||
"anti_wrinkle_exit_power": "Anti-Falten-Ausgangsleistung (W)"
|
||
},
|
||
"data_description": {
|
||
"anti_wrinkle_enabled": "Ignorieren Sie kurze Trommelumdrehungen mit geringer Leistung nach Programmende, um Geisterzyklen zu vermeiden (nur Trockner/Waschtrockner).",
|
||
"anti_wrinkle_max_power": "Ausbrüche bei oder unter dieser Leistung werden als Anti-Falten-Rotationen und nicht als neue Zyklen behandelt. Gilt nur, wenn Anti-Falten-Schutz aktiviert ist.",
|
||
"anti_wrinkle_max_duration": "Maximale Burst-Länge zur Behandlung als Anti-Falten-Rotation. Gilt nur, wenn Anti-Falten-Schutz aktiviert ist.",
|
||
"anti_wrinkle_exit_power": "Wenn die Leistung unter diesen Wert fällt, beenden Sie die Anti-Falten-Funktion sofort (echt aus). Gilt nur, wenn Anti-Falten-Schutz aktiviert ist."
|
||
}
|
||
},
|
||
"delay_start_section": {
|
||
"name": "Erkennung verzögerter Starts",
|
||
"description": "Behandeln Sie anhaltenden Standby mit niedriger Leistung 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 so viele Sekunden zwischen Stoppschwelle (W) und Startschwelle (W) bleiben, bevor WashData in den Zustand „Wartet auf Start“ wechselt. Filtert kurze Spitzen bei der Menünavigation heraus. 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 Endauslöser-Sensor, Türsensor für Pause/sauber-Erkennung und Schalter zum Abschalten der Stromversorgung bei Pause.",
|
||
"data": {
|
||
"external_end_trigger_enabled": "Aktivieren Sie den externen Zyklusende-Trigger",
|
||
"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": "Aktivieren Sie die Überwachung eines externen Binärsensors, um den Abschluss des Zyklus auszulösen.",
|
||
"external_end_trigger": "Wählen Sie eine binäre Sensoreinheit aus. Wenn dieser Sensor auslöst, endet der aktuelle Zyklus mit dem Status „abgeschlossen“.",
|
||
"external_end_trigger_inverted": "Standardmäßig wird der Auslöser ausgelöst, wenn der Sensor eingeschaltet wird. Aktivieren Sie dieses Kontrollkästchen, um stattdessen auszulösen, 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 „Reinigen“, 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 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": "Geräteverbindung",
|
||
"description": "Verknüpfen Sie dieses WashData-Gerät optional mit einem vorhandenen Home Assistant-Gerät (z. B. dem Smart Plug oder dem Gerät selbst). Das WashData-Gerät wird dann als „Verbunden über“ angezeigt. Lassen Sie das Feld leer, um WashData als eigenständiges Gerät beizubehalten.",
|
||
"data": {
|
||
"linked_device": "Verknüpftes Gerät"
|
||
},
|
||
"data_description": {
|
||
"linked_device": "Wählen Sie das Gerät aus, mit dem WashData verbunden werden soll. Dadurch wird in der Geräteregistrierung ein Verweis „Verbunden über“ hinzugefügt. WashData behält seine eigene Gerätekarte und Entitäten. Löschen Sie die Auswahl, um den Link zu entfernen."
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"diagnostics": {
|
||
"title": "Diagnose und Wartung",
|
||
"description": "Führen Sie Wartungsaktionen durch, 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 kennzeichnen",
|
||
"select_cycle_to_label": "Beschriften Sie den spezifischen Zyklus",
|
||
"select_cycle_to_delete": "Zyklus löschen",
|
||
"interactive_editor": "Interaktiver Editor zum Zusammenführen/Teilen",
|
||
"trim_cycle_select": "Trimmzyklusdaten",
|
||
"menu_back": "← Zurück"
|
||
}
|
||
},
|
||
"manage_cycles_empty": {
|
||
"title": "Zyklen verwalten",
|
||
"description": "Noch keine Zyklen aufgezeichnet.",
|
||
"menu_options": {
|
||
"auto_label_cycles": "Alte Zyklen automatisch kennzeichnen",
|
||
"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": "Phasenbereiche 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": "Erstellen Sie eine benutzerdefinierte Phase",
|
||
"description": "Erstellen Sie einen benutzerdefinierten Phasennamen und eine Beschreibung und wählen Sie aus, für welchen Gerätetyp sie gelten sollen.",
|
||
"data": {
|
||
"target_device_type": "Zielgerätetyp",
|
||
"phase_name": "Phasenname",
|
||
"phase_description": "Phasenbeschreibung"
|
||
}
|
||
},
|
||
"phase_catalog_edit_select": {
|
||
"title": "Benutzerdefinierte Phase bearbeiten",
|
||
"description": "Wählen Sie eine benutzerdefinierte Phase zum Bearbeiten aus.",
|
||
"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": "Wählen Sie eine benutzerdefinierte Phase zum Löschen aus. Alle zugewiesenen Bereiche, die diese Phase verwenden, werden entfernt.",
|
||
"data": {
|
||
"phase_name": "Benutzerdefinierte Phase"
|
||
}
|
||
},
|
||
"assign_profile_phases": {
|
||
"title": "Phasenbereiche zuweisen",
|
||
"description": "Phasenvorschau für Profil: **{profile_name}**\n\n{timeline_svg}\n\n**Aktuelle Bereiche:**\n{current_ranges}\n\nVerwenden Sie die folgenden Aktionen, um Bereiche hinzuzufügen, zu bearbeiten, zu löschen oder zu speichern.",
|
||
"menu_options": {
|
||
"assign_profile_phases_add": "Phasenbereich hinzufügen",
|
||
"assign_profile_phases_edit_select": "Phasenbereich bearbeiten",
|
||
"assign_profile_phases_delete": "Phasenbereich löschen",
|
||
"phase_ranges_clear": "Alle Bereiche 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": "Phasenbereich hinzufügen",
|
||
"description": "Fügen Sie dem aktuellen Entwurf einen Phasenbereich hinzu.",
|
||
"data": {
|
||
"phase_name": "Phase",
|
||
"start_min": "Startminute",
|
||
"end_min": "Endminute"
|
||
}
|
||
},
|
||
"assign_profile_phases_edit_select": {
|
||
"title": "Phasenbereich bearbeiten",
|
||
"description": "Wählen Sie einen Bereich zum Bearbeiten aus.",
|
||
"data": {
|
||
"range_index": "Phasenbereich"
|
||
}
|
||
},
|
||
"assign_profile_phases_edit": {
|
||
"title": "Phasenbereich bearbeiten",
|
||
"description": "Aktualisieren Sie den ausgewählten Phasenbereich.",
|
||
"data": {
|
||
"phase_name": "Phase",
|
||
"start_min": "Startminute",
|
||
"end_min": "Endminute"
|
||
}
|
||
},
|
||
"assign_profile_phases_delete": {
|
||
"title": "Phasenbereich löschen",
|
||
"description": "Wählen Sie einen Bereich aus, der aus dem Entwurf entfernt werden soll.",
|
||
"data": {
|
||
"range_index": "Phasenbereich"
|
||
}
|
||
},
|
||
"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": "Benennen Sie die erkannten Phasen",
|
||
"description": "Profil: **{profile_name}**\n\n**{detected_count} Phase(n) erkannt:**\n{ranges_summary}\n\nWeisen Sie jeder Phase einen Namen zu."
|
||
},
|
||
"assign_profile_phases_select": {
|
||
"title": "Phasenbereiche zuweisen",
|
||
"description": "Wählen Sie ein Profil aus, um Phasenbereiche zu konfigurieren.",
|
||
"data": {
|
||
"profile": "Profil"
|
||
}
|
||
},
|
||
"profile_stats": {
|
||
"title": "Profilstatistik",
|
||
"description": "{stats_table}"
|
||
},
|
||
"create_profile": {
|
||
"title": "Neues Profil erstellen",
|
||
"description": "Erstellen Sie manuell oder aus einem vergangenen Zyklus ein neues Profil.\n\nBeispiele für Profilnamen: „Feinwäsche“, „Heavy Duty“, „Schnellwäsche“",
|
||
"data": {
|
||
"profile_name": "Profilname",
|
||
"reference_cycle": "Referenzzyklus (optional)",
|
||
"manual_duration": "Manuelle Dauer (Minuten)"
|
||
}
|
||
},
|
||
"edit_profile": {
|
||
"title": "Profil bearbeiten",
|
||
"description": "Wählen Sie ein Profil zum Umbenennen aus",
|
||
"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": "Wählen Sie ein Profil zum Löschen aus",
|
||
"data": {
|
||
"profile": "Profil"
|
||
}
|
||
},
|
||
"delete_profile_confirm": {
|
||
"title": "Bestätigen Sie „Profil löschen“.",
|
||
"description": "⚠️ Dadurch wird das Profil dauerhaft gelöscht: {profile_name}",
|
||
"data": {
|
||
"unlabel_cycles": "Entfernen Sie mit diesem Profil Etiketten von Zyklen"
|
||
}
|
||
},
|
||
"auto_label_cycles": {
|
||
"title": "Alte Zyklen automatisch kennzeichnen",
|
||
"description": "Insgesamt {total_count} Zyklen gefunden. Profile: {profiles}",
|
||
"data": {
|
||
"confidence_threshold": "Minimales Vertrauen (0,50–0,95)"
|
||
}
|
||
},
|
||
"select_cycle_to_label": {
|
||
"title": "Zyklus zum Beschriften 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": "Zu löschender Zyklus"
|
||
}
|
||
},
|
||
"label_cycle": {
|
||
"title": "Zyklus beschriften",
|
||
"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": "Schwellenwert 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": "Wählen Sie ein Profil zur Visualisierung aus. 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": "Wählen Sie eine manuelle Aktion aus, die Sie an Ihrem Zyklusverlauf durchführen möchten.",
|
||
"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": "Wählen Sie Zyklen",
|
||
"description": "Wählen Sie die zu verarbeitenden Zyklen aus.\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": "Passen Sie die Empfindlichkeit für die Aufteilung dieses Zyklus an. 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 Teilen"
|
||
}
|
||
},
|
||
"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 Sie unten oder fügen Sie JSON zum Importieren ein.",
|
||
"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: Kopieren Sie diesen JSON (einschließlich Zyklen, Profilen und allen fein abgestimmten Einstellungen). Für den Import: JSON einfügen, das aus WashData exportiert wurde."
|
||
}
|
||
},
|
||
"record_cycle": {
|
||
"title": "Aufnahmezyklus",
|
||
"description": "Zeichnen Sie einen Zyklus manuell auf, 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": "Trimmstart (Sekunden)",
|
||
"tail_trim": "Trimmende (Sekunden)",
|
||
"save_mode": "Ziel speichern",
|
||
"profile_name": "Profilname"
|
||
}
|
||
},
|
||
"learning_feedbacks": {
|
||
"title": "Rückmeldungen lernen",
|
||
"description": "Ausstehende Rückmeldungen: {count}\n\n{pending_table}\n\nWählen Sie eine Anfrage zur Zyklusüberprüfung zur Bearbeitung aus.",
|
||
"menu_options": {
|
||
"learning_feedbacks_pick": "Ausstehende Rückmeldung prüfen",
|
||
"learning_feedbacks_dismiss_all": "Alle ausstehenden Rückmeldungen 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": "Rückmeldungen lernen",
|
||
"description": "Es wurden keine ausstehenden Feedbackanfragen 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 Rückmeldungsanfragen verwerfen"
|
||
}
|
||
},
|
||
"resolve_feedback": {
|
||
"title": "Feedback auflösen",
|
||
"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": "Korrekte Dauer in Sekunden (bei Korrektur)"
|
||
}
|
||
},
|
||
"trim_cycle_select": {
|
||
"title": "Trimmzyklus – Wählen Sie Zyklus aus",
|
||
"description": "Wählen Sie einen Zyklus zum Trimmen aus. ✓ = abgeschlossen, ⚠ = fortgesetzt, ✗ = unterbrochen",
|
||
"data": {
|
||
"cycle_id": "Zyklus"
|
||
}
|
||
},
|
||
"trim_cycle": {
|
||
"title": "Trimmzyklus",
|
||
"description": "Aktuelles Fenster: {trim_summary}\n\n{trim_svg}",
|
||
"data": {
|
||
"action": "Aktion"
|
||
}
|
||
},
|
||
"trim_cycle_start": {
|
||
"title": "Legen Sie den Trim-Start fest",
|
||
"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": "Trimmende festlegen",
|
||
"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 fügen Sie einen gültigen WashData-Export-JSON ein.",
|
||
"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 Phasenbereich 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": "Phasenbereiche überschneiden sich. Passen Sie die Bereiche 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 Phasenbereiche 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 passen Sie Ihre Trimmpunkte an.",
|
||
"trim_failed": "Das Trimmen ist fehlgeschlagen. Möglicherweise existiert der Zyklus nicht mehr oder das Fenster ist leer.",
|
||
"invalid_split_timestamp": "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 die 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 Leistungsverfolgungsdaten 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 beschriftet",
|
||
"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": "(Unbeschriftet)",
|
||
"create_new_profile": "Neues Profil erstellen",
|
||
"remove_label": "Etikett entfernen",
|
||
"no_reference_cycle": "(Kein Referenzzyklus)",
|
||
"all_device_types": "Alle Gerätetypen",
|
||
"current_suffix": "(aktuell)",
|
||
"editor_select_info": "Wählen Sie 1 Zyklus zum Teilen oder 2+ Zyklen zum Zusammenführen aus.",
|
||
"editor_select_info_split": "1 Zyklus zum Teilen auswählen.",
|
||
"editor_select_info_merge": "2+ Zyklen zum Zusammenführen auswählen.",
|
||
"editor_select_info_delete": "1+ Zyklus/Zyklen zum Löschen auswählen.",
|
||
"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/kennzeichnen.",
|
||
"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": "__Wählen Sie unten eine Aktion aus:__",
|
||
"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": "Trimmen beginnen",
|
||
"trim_end": "Ende abschneiden",
|
||
"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 Bereiche",
|
||
"assign_phases_help": "Verwenden Sie die folgenden Aktionen, um Bereiche hinzuzufügen, zu bearbeiten, zu löschen oder zu speichern.",
|
||
"profile_summary_header": "Profilzusammenfassung",
|
||
"recent_cycles_header": "Aktuelle Zyklen",
|
||
"trim_cycle_preview_title": "Zyklustrimmvorschau",
|
||
"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": "Länge",
|
||
"table_match": "Treffer",
|
||
"table_profile": "Profil",
|
||
"table_cycles": "Zyklen",
|
||
"table_avg_length": "Ø Länge",
|
||
"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 kennzeichnen",
|
||
"select_cycle_to_label": "Beschriften Sie den spezifischen Zyklus",
|
||
"select_cycle_to_delete": "Zyklus löschen",
|
||
"interactive_editor": "Interaktiver Editor zum Zusammenführen/Teilen",
|
||
"trim_cycle": "Trimmzyklusdaten"
|
||
}
|
||
},
|
||
"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": "Phasenbereiche 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": "Phasenbereich hinzufügen",
|
||
"edit_range": "Phasenbereich bearbeiten",
|
||
"delete_range": "Phasenbereich löschen",
|
||
"clear_ranges": "Alle Bereiche 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 – korrekte Erkennung",
|
||
"correct": "Richtig – Wählen Sie Programm/Dauer",
|
||
"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": "Gehen Sie ohne Änderungen zurück"
|
||
}
|
||
},
|
||
"trim_cycle_action": {
|
||
"options": {
|
||
"set_start": "Startpunkt festlegen",
|
||
"set_end": "Endpunkt festlegen",
|
||
"reset": "Auf volle Dauer zurücksetzen",
|
||
"apply": "Trimmen 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 beschriften",
|
||
"description": "Ordnen Sie ein vorhandenes Profil einem vergangenen Zyklus zu oder entfernen Sie die Bezeichnung.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das Waschmaschinengerät zum Beschriften."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Zyklus-ID",
|
||
"description": "Die ID des zu kennzeichnenden Zyklus."
|
||
},
|
||
"profile_name": {
|
||
"name": "Profilname",
|
||
"description": "Der Name eines vorhandenen Profils (Profile erstellen im Menü „Profile verwalten“). Lassen Sie das Feld leer, um das Etikett zu entfernen."
|
||
}
|
||
}
|
||
},
|
||
"create_profile": {
|
||
"name": "Profil erstellen",
|
||
"description": "Erstellen Sie ein neues Profil (eigenständig oder basierend auf einem Referenzzyklus).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das Waschmaschinengerä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": "Löschen Sie ein Profil und heben Sie optional die Kennzeichnung von Zyklen auf, die es verwenden.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das Waschmaschinengerät."
|
||
},
|
||
"profile_name": {
|
||
"name": "Profilname",
|
||
"description": "Das zu löschende Profil."
|
||
},
|
||
"unlabel_cycles": {
|
||
"name": "Zyklen entkennzeichnen",
|
||
"description": "Entfernen Sie die Profilbezeichnung von Zyklen, die dieses Profil verwenden."
|
||
}
|
||
}
|
||
},
|
||
"auto_label_cycles": {
|
||
"name": "Alte Zyklen automatisch kennzeichnen",
|
||
"description": "Beschriften Sie unbeschriftete Zyklen rückwirkend mithilfe des Profilabgleichs.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das Waschmaschinengerät."
|
||
},
|
||
"confidence_threshold": {
|
||
"name": "Vertrauensschwelle",
|
||
"description": "Mindestübereinstimmungskonfidenz (0,50–0,95) zum Anwenden von Beschriftungen."
|
||
}
|
||
}
|
||
},
|
||
"export_config": {
|
||
"name": "Konfiguration exportieren",
|
||
"description": "Exportieren Sie die Profile, Zyklen und Einstellungen dieses Geräts in eine JSON-Datei (pro Gerät).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das zu exportierende Waschmaschinengerät."
|
||
},
|
||
"path": {
|
||
"name": "Weg",
|
||
"description": "Optionaler absoluter Dateipfad zum Schreiben (standardmäßig /config/ha_washdata_export_{entry}.json)."
|
||
}
|
||
}
|
||
},
|
||
"import_config": {
|
||
"name": "Konfiguration importieren",
|
||
"description": "Importieren Sie Profile, Zyklen und Einstellungen für dieses Gerät aus einer JSON-Exportdatei (Einstellungen werden möglicherweise überschrieben).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das Waschmaschinengerät, in das importiert werden soll."
|
||
},
|
||
"path": {
|
||
"name": "Weg",
|
||
"description": "Absoluter Pfad zur zu importierenden JSON-Exportdatei."
|
||
}
|
||
}
|
||
},
|
||
"submit_cycle_feedback": {
|
||
"name": "Senden Sie Feedback zum Zyklus",
|
||
"description": "Bestätigen oder korrigieren Sie ein automatisch erkanntes Programm nach einem abgeschlossenen Zyklus. 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": "Bestätigen Sie das erkannte Programm",
|
||
"description": "Auf „true“ setzen, wenn das erkannte Programm korrekt ist."
|
||
},
|
||
"corrected_profile": {
|
||
"name": "Korrigiertes Profil",
|
||
"description": "Wenn dies nicht bestätigt wird, geben Sie den korrekten Profil-/Programmnamen an."
|
||
},
|
||
"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": "Starten Sie die manuelle Aufzeichnung eines Reinigungszyklus (umgeht alle passenden Logiken).",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das Waschmaschinengerät zum Aufnehmen."
|
||
}
|
||
}
|
||
},
|
||
"record_stop": {
|
||
"name": "Aufnahmezyklusstopp",
|
||
"description": "Stoppen Sie die manuelle Aufnahme.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Die Waschmaschine stoppt die Aufnahme."
|
||
}
|
||
}
|
||
},
|
||
"trim_cycle": {
|
||
"name": "Trimmzyklus",
|
||
"description": "Trimmen Sie die Leistungsdaten eines vergangenen Zyklus auf ein bestimmtes Zeitfenster.",
|
||
"fields": {
|
||
"device_id": {
|
||
"name": "Gerät",
|
||
"description": "Das WashData-Gerät."
|
||
},
|
||
"cycle_id": {
|
||
"name": "Zyklus-ID",
|
||
"description": "Die ID des zu trimmenden Zyklus."
|
||
},
|
||
"trim_start_s": {
|
||
"name": "Trimmstart (Sekunden)",
|
||
"description": "Behalten Sie die Daten von diesem Offset in Sekunden bei. Standard 0."
|
||
},
|
||
"trim_end_s": {
|
||
"name": "Trimmende (Sekunden)",
|
||
"description": "Halten Sie die Daten in Sekunden auf diesem Offset. Standard = volle Dauer."
|
||
}
|
||
}
|
||
},
|
||
"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": "Vum Benutzer pausiert",
|
||
"ending": "Ende",
|
||
"finished": "Fertig",
|
||
"anti_wrinkle": "Anti-Falten",
|
||
"delay_wait": "Warten auf den Start",
|
||
"interrupted": "Unterbrochen",
|
||
"force_stopped": "Kraft gestoppt",
|
||
"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": "Trimmen 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."
|
||
}
|
||
}
|
||
}
|