{ "config": { "step": { "user": { "title": "การตั้งค่า WashData", "description": "กำหนดค่าเครื่องซักผ้าหรืออุปกรณ์อื่นๆ ของคุณ\n\nจำเป็นต้องมีเซ็นเซอร์วัดกำลัง\n\n**ต่อไป ระบบจะถามว่าคุณต้องการสร้างโปรไฟล์แรกหรือไม่**", "data": { "name": "ชื่ออุปกรณ์", "device_type": "ประเภทอุปกรณ์", "power_sensor": "เซ็นเซอร์วัดกำลัง", "min_power": "เกณฑ์พลังงานขั้นต่ำ (W)" }, "data_description": { "name": "ชื่อที่จำง่ายสำหรับอุปกรณ์นี้ (เช่น \"เครื่องซักผ้า\" \"เครื่องล้างจาน\")", "device_type": "นี่คืออุปกรณ์ประเภทใด? ช่วยปรับแต่งการตรวจจับและการติดฉลาก", "power_sensor": "เอนทิตีเซ็นเซอร์ที่รายงานการใช้พลังงานแบบเรียลไทม์ (เป็นวัตต์) จากปลั๊กอัจฉริยะของคุณ", "min_power": "การอ่านค่ากำลังไฟฟ้าที่สูงกว่าเกณฑ์นี้ (เป็นวัตต์) แสดงว่าเครื่องกำลังทำงานอยู่ เริ่มต้นด้วย 2W สำหรับอุปกรณ์ส่วนใหญ่" } }, "first_profile": { "title": "สร้างโปรไฟล์แรก", "description": "**รอบ** คือการซักรอบเครื่องของคุณอย่างสมบูรณ์ (เช่น การซักผ้า) **โปรไฟล์** จัดกลุ่มโปรแกรมตามประเภท (เช่น 'ผ้าฝ้าย' 'ซักด่วน') ขณะนี้การสร้างโปรไฟล์ช่วยให้ประมาณการระยะเวลาการรวมระบบได้ทันที\n\nคุณสามารถเลือกโปรไฟล์นี้ด้วยตนเองในการควบคุมอุปกรณ์หากไม่ได้ตรวจพบโดยอัตโนมัติ\n\n**เว้น 'ชื่อโปรไฟล์' ว่างไว้เพื่อข้ามขั้นตอนนี้**", "data": { "profile_name": "ชื่อโปรไฟล์ (ไม่บังคับ)", "manual_duration": "ระยะเวลาโดยประมาณ (นาที)" } } }, "error": { "cannot_connect": "ไม่สามารถเชื่อมต่อได้", "invalid_auth": "การรับรองความถูกต้องไม่ถูกต้อง", "unknown": "ข้อผิดพลาดที่ไม่คาดคิด" }, "abort": { "already_configured": "อุปกรณ์ได้รับการกำหนดค่าแล้ว" } }, "options": { "step": { "init": { "menu_options": { "learning_feedbacks": "ทบทวนผลตอบรับการเรียนรู้", "settings": "การตั้งค่า", "notifications": "การแจ้งเตือน", "manage_cycles": "จัดการรอบ", "manage_profiles": "จัดการโปรไฟล์", "manage_phase_catalog": "จัดการแคตตาล็อกเฟส", "record_cycle": "รอบการบันทึก (แบบแมนนวล)", "diagnostics": "การวินิจฉัยและการบำรุงรักษา" } }, "apply_suggestions": { "title": "คัดลอกค่าที่แนะนำ", "description": "การดำเนินการนี้จะคัดลอกค่าที่แนะนำในปัจจุบันไปยังการตั้งค่าที่บันทึกไว้ นี่เป็นการดำเนินการเพียงครั้งเดียวและไม่ได้เปิดใช้งานการเขียนทับอัตโนมัติ\n\nค่าที่แนะนำเพื่อคัดลอก:\n{suggested}", "data": { "confirm": "ยืนยันการดำเนินการคัดลอก" } }, "apply_suggestions_confirm": { "title": "ตรวจสอบการเปลี่ยนแปลงที่แนะนำ", "description": "พบ WashData **{pending_count}** ค่าที่แนะนำเพื่อใช้\n\nการเปลี่ยนแปลง:\n{changes}\n\n✅ ทำเครื่องหมายในช่องด้านล่างแล้วคลิก **ส่ง** เพื่อนำไปใช้และบันทึกการเปลี่ยนแปลงเหล่านี้ทันที\n❌ ปล่อยว่างไว้โดยไม่เลือกแล้วคลิก **ส่ง** เพื่อยกเลิกและย้อนกลับ", "data": { "confirm_apply_suggestions": "ใช้และบันทึกการเปลี่ยนแปลงเหล่านี้" } }, "settings": { "title": "การตั้งค่า", "description": "{deprecation_warning}ปรับแต่งเกณฑ์การตรวจจับ การเรียนรู้ และพฤติกรรมขั้นสูง ค่าเริ่มต้นทำงานได้ดีกับการตั้งค่าส่วนใหญ่\n\nการตั้งค่าที่แนะนำที่พร้อมใช้งานในขณะนี้: {suggestions_count}.\nหากค่านี้มากกว่า 0 ให้เปิดการตั้งค่าขั้นสูงและใช้ 'ใช้ค่าที่แนะนำ' เพื่อตรวจสอบคำแนะนำ", "data": { "apply_suggestions": "ใช้ค่าที่แนะนำ", "device_type": "ประเภทอุปกรณ์", "power_sensor": "เอนทิตีเซ็นเซอร์กำลัง", "min_power": "กำลังไฟขั้นต่ำ (W)", "off_delay": "ความล่าช้าในการสิ้นสุดรอบ (s)", "notify_actions": "การดำเนินการแจ้งเตือน", "notify_people": "เลื่อนการจัดส่งจนกว่าคนเหล่านี้จะถึงบ้าน", "notify_only_when_home": "เลื่อนการแจ้งเตือนจนกว่าบุคคลที่เลือกจะถึงบ้าน", "notify_fire_events": "เปิดใช้งานเหตุการณ์ระบบอัตโนมัติ", "notify_start_services": "เริ่มรอบ - เป้าหมายการแจ้งเตือน", "notify_finish_services": "วงจรเสร็จสิ้น - เป้าหมายการแจ้งเตือน", "notify_live_services": "ความคืบหน้าสด - เป้าหมายการแจ้งเตือน", "notify_before_end_minutes": "การแจ้งเตือนก่อนเสร็จสิ้น (นาทีก่อนสิ้นสุด)", "notify_title": "ชื่อการแจ้งเตือน", "notify_icon": "ไอคอนการแจ้งเตือน", "notify_start_message": "เริ่มรูปแบบข้อความ", "notify_finish_message": "เสร็จสิ้นรูปแบบข้อความ", "notify_pre_complete_message": "รูปแบบข้อความก่อนกรอก", "show_advanced": "แก้ไขการตั้งค่าขั้นสูง (ขั้นตอนถัดไป)" }, "data_description": { "apply_suggestions": "เลือกช่องนี้เพื่อคัดลอกค่าที่แนะนำโดยอัลกอริทึมการเรียนรู้ลงในแบบฟอร์ม ตรวจสอบก่อนบันทึก\n\nข้อเสนอแนะ (จากการเรียนรู้):\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": "เลือกประเภทของเครื่องใช้ไฟฟ้า (เครื่องซักผ้า, เครื่องอบผ้า, เครื่องล้างจาน, เครื่องชงกาแฟ, EV) แท็กนี้จะถูกเก็บไว้ในแต่ละรอบเพื่อการจัดระเบียบที่ดีขึ้น", "power_sensor": "เอนทิตีเซ็นเซอร์รายงานกำลังแบบเรียลไทม์ (เป็นวัตต์) คุณสามารถเปลี่ยนแปลงได้ตลอดเวลาโดยไม่สูญเสียข้อมูลในอดีต ซึ่งมีประโยชน์หากคุณเปลี่ยนปลั๊กอัจฉริยะ", "min_power": "การอ่านค่ากำลังไฟฟ้าที่สูงกว่าเกณฑ์นี้ (เป็นวัตต์) แสดงว่าเครื่องกำลังทำงานอยู่ เริ่มต้นด้วย 2W สำหรับอุปกรณ์ส่วนใหญ่", "off_delay": "วินาทีที่กำลังปรับให้เรียบจะต้องอยู่ต่ำกว่าเกณฑ์หยุดเพื่อทำเครื่องหมายว่าเสร็จสมบูรณ์ ค่าเริ่มต้น: 120 วินาที", "notify_actions": "ลำดับการดำเนินการของ Home Assistant ที่เป็นตัวเลือกสำหรับการแจ้งเตือน (สคริปต์ การแจ้งเตือน TTS ฯลฯ) หากตั้งค่าไว้ การดำเนินการจะทำงานก่อนบริการสำรองจะแจ้ง", "notify_people": "เอนทิตีบุคคลที่ใช้สำหรับการตรวจสอบสถานะ เมื่อเปิดใช้งาน การส่งการแจ้งเตือนจะล่าช้าจนกว่าบุคคลที่เลือกอย่างน้อยหนึ่งคนจะถึงบ้าน", "notify_only_when_home": "หากเปิดใช้งาน ให้เลื่อนการแจ้งเตือนจนกว่าบุคคลที่เลือกอย่างน้อยหนึ่งคนจะถึงบ้าน", "notify_fire_events": "หากเปิดใช้งาน จะส่งสัญญาณเหตุการณ์ Home Assistant สำหรับการเริ่มและสิ้นสุดรอบ (ha_washdata_cycle_started และ ha_washdata_cycle_ended) เพื่อขับเคลื่อนระบบอัตโนมัติ", "notify_start_services": "บริการแจ้งเตือนอย่างน้อยหนึ่งรายการเพื่อแจ้งเตือนเมื่อรอบเริ่มต้น เว้นว่างไว้เพื่อข้ามการแจ้งเตือนการเริ่มต้น", "notify_finish_services": "บริการแจ้งเตือนอย่างน้อยหนึ่งบริการเพื่อแจ้งเตือนเมื่อรอบการสิ้นสุดหรือใกล้จะเสร็จสิ้น เว้นว่างไว้เพื่อข้ามการแจ้งเตือนให้เสร็จสิ้น", "notify_live_services": "แจ้งบริการอย่างน้อยหนึ่งรายการเพื่อรับการอัปเดตความคืบหน้าสดในขณะที่วงจรดำเนินไป (เฉพาะแอปที่แสดงร่วมบนมือถือเท่านั้น) เว้นว่างไว้เพื่อข้ามการอัปเดตสด", "notify_before_end_minutes": "นาทีก่อนที่จะสิ้นสุดรอบโดยประมาณเพื่อทริกเกอร์การแจ้งเตือน ตั้งค่าเป็น 0 เพื่อปิดใช้งาน ค่าเริ่มต้น: 0", "notify_title": "ชื่อที่กำหนดเองสำหรับการแจ้งเตือน รองรับตัวยึดตำแหน่ง {device}", "notify_icon": "ไอคอนที่ใช้สำหรับการแจ้งเตือน (เช่น mdi:washing-machine) เว้นว่างไว้เพื่อส่งโดยไม่มีไอคอน", "notify_start_message": "ข้อความที่ส่งเมื่อรอบเริ่มต้น รองรับตัวยึดตำแหน่ง {device}", "notify_finish_message": "ข้อความที่ส่งเมื่อรอบสิ้นสุด รองรับตัวยึดตำแหน่ง {device}, {duration}, {program}, {energy_kwh}, {cost}", "notify_pre_complete_message": "ข้อความของการอัปเดตความคืบหน้าสดที่เกิดซ้ำในขณะที่วงจรดำเนินไป รองรับตัวยึดตำแหน่ง {device}, {minutes}, {program}" } }, "notifications": { "title": "การแจ้งเตือน", "description": "กำหนดค่าช่องทางการแจ้งเตือน เทมเพลต และการอัปเดตความคืบหน้าบนมือถือแบบสดที่เป็นตัวเลือก", "data": { "notify_actions": "การดำเนินการแจ้งเตือน", "notify_people": "เลื่อนการจัดส่งจนกว่าคนเหล่านี้จะถึงบ้าน", "notify_only_when_home": "เลื่อนการแจ้งเตือนจนกว่าบุคคลที่เลือกจะถึงบ้าน", "notify_fire_events": "เปิดใช้งานเหตุการณ์ระบบอัตโนมัติ", "notify_start_services": "เริ่มรอบ - เป้าหมายการแจ้งเตือน", "notify_finish_services": "วงจรเสร็จสิ้น - เป้าหมายการแจ้งเตือน", "notify_live_services": "ความคืบหน้าสด - เป้าหมายการแจ้งเตือน", "notify_before_end_minutes": "การแจ้งเตือนก่อนเสร็จสิ้น (นาทีก่อนสิ้นสุด)", "notify_live_interval_seconds": "ช่วงเวลาการอัปเดตสด (วินาที)", "notify_live_overrun_percent": "ค่าเผื่อการโอเวอร์รันการอัปเดตสด (%)", "notify_live_chronometer": "เครื่องจับเวลาถอยหลังโครโนมิเตอร์", "notify_title": "ชื่อการแจ้งเตือน", "notify_icon": "ไอคอนการแจ้งเตือน", "notify_start_message": "เริ่มรูปแบบข้อความ", "notify_finish_message": "เสร็จสิ้นรูปแบบข้อความ", "notify_pre_complete_message": "รูปแบบข้อความก่อนกรอก", "energy_price_entity": "ราคาพลังงาน - เอนทิตี (ไม่บังคับ)", "energy_price_static": "ราคาพลังงาน - มูลค่าคงที่ (ไม่บังคับ)", "go_back": "ย้อนกลับโดยไม่บันทึก", "notify_reminder_message": "รูปแบบข้อความเตือนความจำ", "notify_timeout_seconds": "ปิดอัตโนมัติหลังจาก (วินาที)", "notify_channel": "ช่องทางการแจ้งเตือน (สถานะ/สด/เตือนความจำ)", "notify_finish_channel": "ช่องทางการแจ้งเรียบร้อยแล้ว" }, "data_description": { "go_back": "ทำเครื่องหมายที่นี่แล้วคลิกส่งเพื่อทิ้งการเปลี่ยนแปลงด้านบนทั้งหมดและกลับไปยังเมนูหลัก", "notify_actions": "ลำดับการดำเนินการของ Home Assistant ที่เป็นตัวเลือกสำหรับการแจ้งเตือน (สคริปต์ การแจ้งเตือน TTS ฯลฯ) หากตั้งค่าไว้ การดำเนินการจะทำงานก่อนบริการสำรองจะแจ้ง", "notify_people": "เอนทิตีบุคคลที่ใช้สำหรับการตรวจสอบสถานะ เมื่อเปิดใช้งาน การส่งการแจ้งเตือนจะล่าช้าจนกว่าบุคคลที่เลือกอย่างน้อยหนึ่งคนจะถึงบ้าน", "notify_only_when_home": "หากเปิดใช้งาน ให้เลื่อนการแจ้งเตือนจนกว่าบุคคลที่เลือกอย่างน้อยหนึ่งคนจะถึงบ้าน", "notify_fire_events": "หากเปิดใช้งาน จะส่งสัญญาณเหตุการณ์ Home Assistant สำหรับการเริ่มและสิ้นสุดรอบ (ha_washdata_cycle_started และ ha_washdata_cycle_ended) เพื่อขับเคลื่อนระบบอัตโนมัติ", "notify_start_services": "บริการแจ้งเตือนอย่างน้อยหนึ่งรายการเพื่อแจ้งเตือนเมื่อรอบเริ่มต้น (เช่น notify.mobile_app_my_phone) เว้นว่างไว้เพื่อข้ามการแจ้งเตือนการเริ่มต้น", "notify_finish_services": "บริการแจ้งเตือนอย่างน้อยหนึ่งบริการเพื่อแจ้งเตือนเมื่อรอบการสิ้นสุดหรือใกล้จะเสร็จสิ้น เว้นว่างไว้เพื่อข้ามการแจ้งเตือนให้เสร็จสิ้น", "notify_live_services": "แจ้งบริการอย่างน้อยหนึ่งรายการเพื่อรับการอัปเดตความคืบหน้าสดในขณะที่วงจรดำเนินไป (เฉพาะแอปที่แสดงร่วมบนมือถือเท่านั้น) เว้นว่างไว้เพื่อข้ามการอัปเดตสด", "notify_before_end_minutes": "นาทีก่อนที่จะสิ้นสุดรอบโดยประมาณเพื่อทริกเกอร์การแจ้งเตือน ตั้งค่าเป็น 0 เพื่อปิดใช้งาน ค่าเริ่มต้น: 0", "notify_live_interval_seconds": "ความถี่ในการส่งการอัปเดตความคืบหน้าขณะทำงาน ค่าที่ต่ำกว่าจะตอบสนองมากกว่าแต่ใช้การแจ้งเตือนมากกว่า บังคับใช้อย่างน้อย 30 วินาที - ค่าที่ต่ำกว่า 30 วินาทีจะถูกปัดเศษเป็น 30 วินาทีโดยอัตโนมัติ", "notify_live_overrun_percent": "อัตราความปลอดภัยที่สูงกว่าจำนวนการอัปเดตโดยประมาณสำหรับรอบที่ยาวนาน/เกินเวลา (เช่น 20% อนุญาตให้มีการอัปเดตโดยประมาณ 1.2 เท่า)", "notify_live_chronometer": "เมื่อเปิดใช้งาน การอัปเดตแบบเรียลไทม์แต่ละครั้งจะมีการนับถอยหลังโครโนมิเตอร์จนถึงเวลาสิ้นสุดโดยประมาณ ตัวจับเวลาการแจ้งเตือนจะทำเครื่องหมายบนอุปกรณ์โดยอัตโนมัติระหว่างการอัปเดต (เฉพาะแอปที่ใช้ร่วมกับ Android เท่านั้น)", "notify_title": "ชื่อที่กำหนดเองสำหรับการแจ้งเตือน รองรับตัวยึดตำแหน่ง {device}", "notify_icon": "ไอคอนที่ใช้สำหรับการแจ้งเตือน (เช่น mdi:washing-machine) เว้นว่างไว้เพื่อส่งโดยไม่มีไอคอน", "notify_start_message": "ข้อความที่ส่งเมื่อรอบเริ่มต้น รองรับตัวยึดตำแหน่ง {device}", "notify_finish_message": "ข้อความที่ส่งเมื่อรอบสิ้นสุด รองรับตัวยึดตำแหน่ง {device}, {duration}, {program}, {energy_kwh}, {cost}", "energy_price_entity": "เลือกเอนทิตีตัวเลขที่เก็บราคาไฟฟ้าปัจจุบัน (เช่น sensor.electricity_price, input_number.energy_rate) เมื่อตั้งค่าแล้ว ให้เปิดใช้งานตัวยึดตำแหน่ง {cost} มีความสำคัญมากกว่ามูลค่าคงที่หากมีการกำหนดค่าทั้งสองรายการ", "energy_price_static": "ราคาไฟฟ้าคงที่ต่อกิโลวัตต์ชั่วโมง เมื่อตั้งค่าแล้ว ให้เปิดใช้งานตัวยึดตำแหน่ง {cost} ละเว้นหากมีการกำหนดค่าเอนทิตีด้านบน เพิ่มสัญลักษณ์สกุลเงินของคุณในเทมเพลตข้อความ เช่น {cost} €", "notify_reminder_message": "ข้อความเตือนความจำแบบครั้งเดียวส่งตามจำนวนนาทีที่กำหนดไว้ก่อนสิ้นสุดโดยประมาณ แตกต่างจากการอัปเดตสดที่เกิดซ้ำด้านบน รองรับตัวยึดตำแหน่ง {device}, {minutes}, {program}", "notify_timeout_seconds": "ปิดการแจ้งเตือนโดยอัตโนมัติหลังจากผ่านไปหลายวินาทีนี้ (ส่งต่อเป็นแอปที่แสดงร่วม 'หมดเวลา') ตั้งค่าเป็น 0 เพื่อเก็บไว้จนกว่าจะถูกไล่ออก ค่าเริ่มต้น: 0", "notify_channel": "Android ช่องทางการแจ้งเตือนแอปที่แสดงร่วมสำหรับสถานะ ความคืบหน้าสด และการแจ้งเตือน เสียงและความสำคัญของช่องได้รับการกำหนดค่าในแอปที่แสดงร่วมกันในครั้งแรกที่ใช้ชื่อช่อง - WashData จะตั้งค่าเฉพาะชื่อช่องเท่านั้น เว้นว่างไว้สำหรับค่าเริ่มต้นของแอป", "notify_finish_channel": "แยกช่อง Android สำหรับการเตือนที่เสร็จสิ้นแล้ว (ใช้โดยตัวเตือนและเสียงจู้จี้รอซักรีดด้วย) เพื่อให้มีเสียงของตัวเองได้ เว้นว่างไว้เพื่อใช้ช่องด้านบนอีกครั้ง", "notify_pre_complete_message": "ข้อความของการอัปเดตความคืบหน้าสดที่เกิดซ้ำในขณะที่วงจรดำเนินไป รองรับตัวยึดตำแหน่ง {device}, {minutes}, {program}" } }, "advanced_settings": { "title": "การตั้งค่าขั้นสูง", "description": "ปรับแต่งเกณฑ์การตรวจจับ การเรียนรู้ และพฤติกรรมขั้นสูง ค่าเริ่มต้นทำงานได้ดีกับการตั้งค่าส่วนใหญ่", "sections": { "suggestions_section": { "name": "การตั้งค่าที่แนะนำ", "description": "มีคำแนะนำที่เรียนรู้แล้ว {suggestions_count} รายการ ให้ทำเครื่องหมาย 'ใช้ค่าที่แนะนำ' เพื่อตรวจสอบการเปลี่ยนแปลงที่เสนอไว้ก่อนบันทึก", "data": { "apply_suggestions": "ใช้ค่าที่แนะนำ" }, "data_description": { "apply_suggestions": "เลือกช่องนี้เพื่อเปิดขั้นตอนการทบทวนค่าที่แนะนำจากอัลกอริทึมการเรียนรู้ ไม่มีสิ่งใดถูกบันทึกโดยอัตโนมัติ\n\nข้อเสนอแนะ (จากการเรียนรู้):\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": "การตรวจจับและเกณฑ์กำลังไฟ", "description": "กำหนดว่าเมื่อใดอุปกรณ์จะถือว่าเปิดหรือปิด รวมถึงเกณฑ์พลังงานและจังหวะเวลาของการเปลี่ยนสถานะ", "data": { "start_duration_threshold": "เริ่มระยะเวลา Debounce (s)", "start_energy_threshold": "เริ่ม Energy Gate (Wh)", "completion_min_seconds": "รันไทม์ขั้นต่ำที่เสร็จสมบูรณ์ (วินาที)", "start_threshold_w": "เกณฑ์เริ่มต้น (W)", "stop_threshold_w": "หยุดเกณฑ์ (W)", "end_energy_threshold": "ประตูพลังงานสิ้นสุด (Wh)", "running_dead_zone": "วิ่งโซนตาย (วินาที)", "end_repeat_count": "สิ้นสุดการนับซ้ำ", "min_off_gap": "ช่องว่างขั้นต่ำระหว่างรอบ (s)", "sampling_interval": "ช่วงเวลาการสุ่มตัวอย่าง (s)" }, "data_description": { "start_duration_threshold": "เพิกเฉยต่อการเพิ่มพลังสั้นๆ ที่สั้นกว่าระยะเวลานี้ (วินาที) กรองการเพิ่มขึ้นอย่างรวดเร็วของบูต (เช่น 60W เป็นเวลา 2 วินาที) ก่อนเริ่มรอบจริง ค่าเริ่มต้น: 5 วินาที", "start_energy_threshold": "วงจรจะต้องสะสมพลังงาน (Wh) มากเท่านี้เป็นอย่างน้อยในระหว่างระยะเริ่มต้นจึงจะได้รับการยืนยัน ค่าเริ่มต้น: 0.005 Wh.", "completion_min_seconds": "รอบที่สั้นกว่านี้จะถูกทำเครื่องหมายว่า 'หยุดชะงัก' แม้ว่าจะเสร็จสิ้นตามธรรมชาติก็ตาม ค่าเริ่มต้น: 600 วินาที", "start_threshold_w": "กำลังไฟฟ้าต้องสูงกว่าเกณฑ์นี้จึงจะเริ่มต้นวงจรได้ ตั้งค่าให้สูงกว่าพลังงานสแตนด์บายของคุณ ค่าเริ่มต้น: min_power + 1 W.", "stop_threshold_w": "กำลังไฟฟ้าต้องต่ำกว่าเกณฑ์นี้จึงจะสิ้นสุดรอบได้ ตั้งค่าให้สูงกว่าศูนย์เพื่อหลีกเลี่ยงสัญญาณรบกวนที่ทำให้เกิดการสิ้นสุดที่ผิดพลาด ค่าเริ่มต้น: 0.6 * min_power", "end_energy_threshold": "รอบการสิ้นสุดจะสิ้นสุดก็ต่อเมื่อพลังงานในหน้าต่าง Off-Delay สุดท้ายต่ำกว่าค่านี้ (Wh) ป้องกันการสิ้นสุดที่ผิดพลาดหากพลังงานผันผวนใกล้ศูนย์ ค่าเริ่มต้น: 0.05 Wh.", "running_dead_zone": "หลังจากที่วงจรเริ่มต้นขึ้น ให้เพิกเฉยต่อกำลังที่ลดลงเป็นเวลาหลายวินาทีเพื่อป้องกันการตรวจจับปลายที่ผิดพลาดในระหว่างขั้นตอนการปั่นหมาดครั้งแรก ตั้งค่าเป็น 0 เพื่อปิดใช้งาน ค่าเริ่มต้น: 0 วินาที", "end_repeat_count": "จำนวนครั้งที่ต้องเป็นไปตามเงื่อนไขการสิ้นสุด (กำลังต่ำกว่าเกณฑ์สำหรับ off_delay) ติดต่อกันก่อนที่จะสิ้นสุดรอบ ค่าที่สูงกว่าจะป้องกันการสิ้นสุดที่ผิดพลาดระหว่างการหยุดชั่วคราว ค่าเริ่มต้น: 1.", "min_off_gap": "หากวงจรเริ่มต้นภายในไม่กี่วินาทีหลังจากรอบก่อนหน้าสิ้นสุดลง วงจรเหล่านั้นจะถูกรวมเข้าเป็นรอบเดียว", "sampling_interval": "ช่วงเวลาการสุ่มตัวอย่างขั้นต่ำในหน่วยวินาที การอัปเดตที่เร็วกว่าอัตรานี้จะถูกละเว้น ค่าเริ่มต้น: 30 วินาที (2 วินาทีสำหรับเครื่องซักผ้า เครื่องซักผ้า-อบผ้า และเครื่องล้างจาน)" } }, "matching_section": { "name": "การจับคู่โปรไฟล์และการเรียนรู้", "description": "กำหนดว่า WashData จะจับคู่รอบที่กำลังทำงานกับโปรไฟล์ที่เรียนรู้ไว้อย่างเข้มงวดเพียงใด และจะขอคำติชมเมื่อใด", "data": { "profile_match_min_duration_ratio": "อัตราส่วนระยะเวลาการจับคู่ขั้นต่ำของโปรไฟล์ (0.1-1.0)", "profile_match_interval": "ช่วงเวลาการจับคู่โปรไฟล์ (วินาที)", "profile_match_threshold": "เกณฑ์การจับคู่โปรไฟล์", "profile_unmatch_threshold": "เกณฑ์ไม่ตรงกันของโปรไฟล์", "auto_label_confidence": "ความเชื่อมั่นป้ายกำกับอัตโนมัติ (0-1)", "learning_confidence": "ข้อเสนอแนะ ขอความมั่นใจ (0-1)", "suppress_feedback_notifications": "ระงับการแจ้งเตือนข้อเสนอแนะ", "duration_tolerance": "ความอดทนต่อระยะเวลา (0-0.5)", "smoothing_window": "หน้าต่างปรับให้เรียบ (ตัวอย่าง)", "profile_duration_tolerance": "ความอดทนต่อระยะเวลาการจับคู่โปรไฟล์ (0-0.5)" }, "data_description": { "profile_match_min_duration_ratio": "อัตราส่วนระยะเวลาขั้นต่ำสำหรับการจับคู่โปรไฟล์ วงจรการทำงานต้องมีระยะเวลาอย่างน้อยเศษส่วนนี้จึงจะตรงกัน ล่าง = การจับคู่ก่อนหน้า ค่าเริ่มต้น: 0.50 (50%)", "profile_match_interval": "ความถี่ (เป็นวินาที) ที่จะพยายามจับคู่โปรไฟล์ระหว่างรอบ ค่าที่ต่ำกว่าจะทำให้การตรวจจับเร็วขึ้นแต่ใช้ CPU มากกว่า ค่าเริ่มต้น: 300 วินาที (5 นาที)", "profile_match_threshold": "คะแนนความคล้ายคลึงกัน DTW ขั้นต่ำ (0.0–1.0) ที่จำเป็นในการพิจารณาโปรไฟล์ที่ตรงกัน สูงกว่า = การจับคู่ที่เข้มงวดมากขึ้น ผลบวกลวงน้อยลง ค่าเริ่มต้น: 0.4", "profile_unmatch_threshold": "คะแนนความคล้ายคลึงกัน DTW (0.0–1.0) ต่ำกว่าซึ่งโปรไฟล์ที่ตรงกันก่อนหน้านี้ถูกปฏิเสธ ควรต่ำกว่าเกณฑ์การจับคู่เพื่อป้องกันการกะพริบ ค่าเริ่มต้น: 0.35", "auto_label_confidence": "ติดป้ายกำกับรอบโดยอัตโนมัติหรือสูงกว่าความเชื่อมั่นนี้เมื่อเสร็จสิ้น (0.0–1.0)", "learning_confidence": "ความมั่นใจขั้นต่ำในการขอการยืนยันผู้ใช้ผ่านกิจกรรม (0.0–1.0)", "suppress_feedback_notifications": "เมื่อเปิดใช้งาน WashData จะยังคงติดตามและขอคำติชมภายใน แต่จะไม่แสดงการแจ้งเตือนอย่างต่อเนื่องเพื่อขอให้คุณยืนยันรอบการทำงาน มีประโยชน์เมื่อตรวจพบรอบอย่างถูกต้องเสมอและคุณพบว่าข้อความแจ้งรบกวนสมาธิ", "duration_tolerance": "ความคลาดเคลื่อนสำหรับการประมาณเวลาที่เหลืออยู่ระหว่างการวิ่ง (0.0–0.5 สอดคล้องกับ 0–50%)", "smoothing_window": "จำนวนการอ่านค่ากำลังล่าสุดที่ใช้สำหรับการปรับให้เรียบโดยเฉลี่ยแบบเคลื่อนที่", "profile_duration_tolerance": "ความคลาดเคลื่อนที่ใช้โดยการจับคู่โปรไฟล์สำหรับความแปรปรวนระยะเวลาทั้งหมด (0.0–0.5) ลักษณะการทำงานเริ่มต้น: ±25%" } }, "timing_section": { "name": "เวลา การบำรุงรักษา และการดีบัก", "description": "Watchdog การรีเซ็ตความคืบหน้า การบำรุงรักษาอัตโนมัติ และการแสดงเอนทิตีดีบัก", "data": { "watchdog_interval": "ช่วงเวลา Watchdog (วินาที)", "no_update_active_timeout": "ไม่มีการอัปเดตหมดเวลา (s)", "progress_reset_delay": "ความล่าช้าในการรีเซ็ตความคืบหน้า (วินาที)", "auto_maintenance": "เปิดใช้งานการบำรุงรักษาอัตโนมัติ", "expose_debug_entities": "เปิดเผยเอนทิตีการตรวจแก้จุดบกพร่อง", "save_debug_traces": "บันทึกการติดตามการแก้ไขข้อบกพร่อง" }, "data_description": { "watchdog_interval": "วินาทีระหว่างการตรวจสอบสุนัขเฝ้าบ้านขณะวิ่ง ค่าเริ่มต้น: 5 วินาที คำเตือน: ตรวจสอบให้แน่ใจว่านี่สูงกว่าช่วงการอัปเดตเซ็นเซอร์ของคุณเพื่อหลีกเลี่ยงการหยุดที่ผิดพลาด (เช่น หากเซ็นเซอร์อัปเดตทุกๆ 60 วินาที ให้ใช้ 65 วินาทีขึ้นไป)", "no_update_active_timeout": "สำหรับเซ็นเซอร์เผยแพร่เมื่อมีการเปลี่ยนแปลง: บังคับสิ้นสุดรอบการทำงานเท่านั้น หากไม่มีการอัปเดตมาถึงเป็นเวลาหลายวินาทีนี้ การทำเสร็จด้วยพลังงานต่ำยังคงใช้การหน่วงเวลาปิด", "progress_reset_delay": "หลังจากรอบเสร็จสมบูรณ์ (100%) ให้รอสักครู่ก่อนที่จะรีเซ็ตความคืบหน้าเป็น 0% ค่าเริ่มต้น: 300 วินาที", "auto_maintenance": "เปิดใช้งานการบำรุงรักษาอัตโนมัติ (ตัวอย่างการซ่อมแซม รวมชิ้นส่วน)", "expose_debug_entities": "แสดงเซ็นเซอร์ขั้นสูง (Confidence, Phase, Ambiguity) สำหรับการดีบัก", "save_debug_traces": "จัดเก็บข้อมูลการจัดอันดับและการติดตามพลังงานโดยละเอียดไว้ในประวัติ (เพิ่มการใช้พื้นที่เก็บข้อมูล)" } }, "anti_wrinkle_section": { "name": "แผงป้องกันรอยยับ (เครื่องอบผ้า)", "description": "ละเว้นการหมุนถังซักหลังจบรอบเพื่อป้องกันรอบหลอน ใช้ได้กับเครื่องอบผ้า / เครื่องซักอบเท่านั้น", "data": { "anti_wrinkle_enabled": "แผ่นป้องกันริ้วรอย (เฉพาะเครื่องอบผ้า)", "anti_wrinkle_max_power": "พลังต่อต้านริ้วรอยสูงสุด (W)", "anti_wrinkle_max_duration": "ระยะเวลาสูงสุดในการต่อต้านริ้วรอย (s)", "anti_wrinkle_exit_power": "กำลังขับทางออกป้องกันริ้วรอย (W)" }, "data_description": { "anti_wrinkle_enabled": "ไม่ต้องสนใจการหมุนถังซักที่ใช้พลังงานต่ำในช่วงสั้นๆ หลังจากสิ้นสุดรอบการซัก เพื่อป้องกันรอบการหยุดทำงาน (เฉพาะเครื่องอบผ้า/เครื่องซักผ้า-เครื่องอบผ้าเท่านั้น)", "anti_wrinkle_max_power": "การระเบิดที่หรือต่ำกว่ากำลังนี้ถือเป็นการหมุนต่อต้านริ้วรอยแทนรอบใหม่ ใช้ได้เฉพาะเมื่อเปิดใช้งาน Anti-Wrinkle Shield เท่านั้น", "anti_wrinkle_max_duration": "ความยาวระเบิดสูงสุดเพื่อใช้เป็นการหมุนต่อต้านริ้วรอย ใช้ได้เฉพาะเมื่อเปิดใช้งาน Anti-Wrinkle Shield เท่านั้น", "anti_wrinkle_exit_power": "หากพลังงานลดลงต่ำกว่าระดับนี้ ให้ออกจากโปรแกรมต่อต้านริ้วรอยทันที (ปิดจริง) ใช้ได้เฉพาะเมื่อเปิดใช้งาน Anti-Wrinkle Shield เท่านั้น" } }, "delay_start_section": { "name": "การตรวจจับการเริ่มต้นล่าช้า", "description": "ถือว่าสถานะสแตนด์บายกำลังต่ำที่ต่อเนื่องเป็น 'กำลังรอการเริ่มต้น' จนกว่ารอบจะเริ่มทำงานจริง", "data": { "delay_start_detect_enabled": "เปิดใช้งานการตรวจจับการเริ่มต้นล่าช้า", "delay_confirm_seconds": "การเริ่มต้นล่าช้า: เวลายืนยันโหมดสแตนด์บาย (วินาที)", "delay_timeout_hours": "การเริ่มต้นล่าช้า: เวลารอสูงสุด (h)" }, "data_description": { "delay_start_detect_enabled": "เมื่อเปิดใช้งาน ตรวจพบการระบายพลังงานต่ำที่พุ่งสูงขึ้นสั้นๆ ตามมาด้วยพลังงานสแตนด์บายอย่างต่อเนื่อง จะถูกตรวจพบว่าเป็นการสตาร์ทล่าช้า เซ็นเซอร์สถานะแสดง 'กำลังรอการเริ่มต้น' ในระหว่างความล่าช้า ไม่มีการติดตามเวลาของโปรแกรมหรือความคืบหน้าจนกว่ารอบจะเริ่มต้นจริง จำเป็นต้องตั้งค่า start_threshold_w เหนือกำลังขัดขวางการเดรน", "delay_confirm_seconds": "กำลังไฟต้องคงอยู่ระหว่างเกณฑ์หยุด (W) และเกณฑ์เริ่มต้น (W) เป็นเวลานี้ก่อนที่ WashData จะเข้าสู่สถานะ 'กำลังรอการเริ่มต้น' ช่วยกรองยอดพุ่งสั้นๆ ระหว่างการเลื่อนเมนู ค่าเริ่มต้น: 60 วินาที", "delay_timeout_hours": "หมดเวลาเพื่อความปลอดภัย: หากเครื่องยังคงอยู่ใน 'กำลังรอการเริ่มต้น' หลังจากผ่านไปหลายชั่วโมง WashData จะรีเซ็ตเป็นปิด ค่าเริ่มต้น: 8 ชม." } }, "external_triggers_section": { "name": "ทริกเกอร์ภายนอก ประตู และการหยุดชั่วคราว", "description": "เซ็นเซอร์ทริกเกอร์สิ้นสุดภายนอกแบบเลือกได้ เซ็นเซอร์ประตูสำหรับตรวจจับการหยุดชั่วคราว/สถานะสะอาด และสวิตช์ตัดไฟเมื่อหยุดชั่วคราว", "data": { "external_end_trigger_enabled": "เปิดใช้งานทริกเกอร์การสิ้นสุดรอบภายนอก", "external_end_trigger": "เซ็นเซอร์ปลายรอบภายนอก", "external_end_trigger_inverted": "สลับลอจิกทริกเกอร์ (ทริกเกอร์เปิดปิด)", "door_sensor_entity": "เซ็นเซอร์ประตู", "pause_cuts_power": "ตัดไฟเมื่อหยุดชั่วคราว", "switch_entity": "สวิตช์เอนทิตี (สำหรับการหยุดตัดไฟชั่วคราว)", "notify_unload_delay_minutes": "การแจ้งเตือนการรอซักรีดล่าช้า (นาที)" }, "data_description": { "external_end_trigger_enabled": "เปิดใช้งานการตรวจสอบเซ็นเซอร์ไบนารีภายนอกเพื่อกระตุ้นให้รอบการทำงานเสร็จสมบูรณ์", "external_end_trigger": "เลือกเอนทิตีเซ็นเซอร์ไบนารี เมื่อเซ็นเซอร์นี้ทริกเกอร์ วงจรปัจจุบันจะสิ้นสุดด้วยสถานะ 'เสร็จสมบูรณ์'", "external_end_trigger_inverted": "ตามค่าเริ่มต้น ทริกเกอร์จะเริ่มทำงานเมื่อเซ็นเซอร์เปิด เลือกช่องนี้เพื่อเริ่มทำงานเมื่อเซ็นเซอร์ปิดแทน", "door_sensor_entity": "เซ็นเซอร์ไบนารี่เสริมสำหรับประตูเครื่องจักร (เปิด = เปิด, ปิด = ปิด) เมื่อประตูเปิดออกระหว่างโปรแกรมที่ใช้งานอยู่ WashData จะยืนยันโปรแกรมดังกล่าวว่าหยุดชั่วคราวโดยเจตนา หลังจากสิ้นสุดรอบ หากประตูยังคงปิดอยู่ สถานะจะเปลี่ยนเป็น 'ทำความสะอาด' จนกว่าประตูจะเปิด หมายเหตุ: การปิดประตูจะไม่กลับมาทำงานต่อโดยอัตโนมัติตามรอบที่หยุดชั่วคราว - การกลับมาทำงานต่อจะต้องถูกกระตุ้นด้วยตนเองผ่านปุ่ม ทำงานต่อรอบการทำงานหรือบริการ", "pause_cuts_power": "เมื่อหยุดชั่วคราวผ่านปุ่มหยุดรอบชั่วคราวหรือบริการ ให้ปิดเอนทิตีสวิตช์ที่กำหนดค่าไว้ด้วย จะมีผลเฉพาะเมื่อมีการกำหนดค่าเอนทิตีสวิตช์สำหรับอุปกรณ์นี้", "switch_entity": "เอนทิตีสวิตช์เพื่อสลับเมื่อหยุดชั่วคราวหรือดำเนินการต่อ จำเป็นเมื่อเปิดใช้งาน 'ตัดไฟเมื่อหยุดชั่วคราว'", "notify_unload_delay_minutes": "ส่งการแจ้งเตือนผ่านช่องทางแจ้งเตือนเมื่อสิ้นสุดรอบและไม่ได้เปิดประตูเป็นเวลาหลายนาที (ต้องใช้เซ็นเซอร์ประตู) ตั้งค่าเป็น 0 เพื่อปิดใช้งาน ค่าเริ่มต้น: 60 นาที" } }, "pump_section": { "name": "ตัวเฝ้าติดตามปั๊ม", "description": "ใช้กับประเภทอุปกรณ์ปั๊มเท่านั้น จะส่งเหตุการณ์หากรอบการทำงานของปั๊มเกินระยะเวลานี้", "data": { "pump_stuck_duration": "เกณฑ์การแจ้งเตือนปั๊มติด (s) (เฉพาะปั๊ม)" }, "data_description": { "pump_stuck_duration": "หากรอบปั๊มยังคงทำงานอยู่หลังจากผ่านไปหลายวินาทีนี้ เหตุการณ์ ha_washdata_pump_stuck จะทำงานหนึ่งครั้ง ใช้สิ่งนี้เพื่อตรวจจับมอเตอร์ที่ติดขัด (การทำงานของปั๊มบ่อโดยทั่วไปคือต่ำกว่า 60 วินาที) ค่าเริ่มต้น: 1800 วินาที (30 นาที) ประเภทอุปกรณ์ปั๊มเท่านั้น" } }, "device_link_section": { "name": "ลิงค์อุปกรณ์", "description": "คุณสามารถเลือกเชื่อมโยงอุปกรณ์ WashData นี้กับอุปกรณ์ Home Assistant ที่มีอยู่ (เช่น ปลั๊กอัจฉริยะหรือตัวอุปกรณ์เอง) จากนั้นอุปกรณ์ WashData จะแสดงเป็น \"เชื่อมต่อผ่าน\" อุปกรณ์นั้น เว้นว่างไว้เพื่อให้ WashData เป็นอุปกรณ์แบบสแตนด์อโลน", "data": { "linked_device": "อุปกรณ์ที่เชื่อมโยง" }, "data_description": { "linked_device": "เลือกอุปกรณ์ที่จะเชื่อมต่อ WashData สิ่งนี้จะเพิ่มการอ้างอิง 'เชื่อมต่อผ่าน' ในรีจิสทรีอุปกรณ์ WashData จะเก็บการ์ดอุปกรณ์และเอนทิตีของตัวเอง ล้างการเลือกเพื่อลบลิงก์" } } } }, "diagnostics": { "title": "การวินิจฉัยและการบำรุงรักษา", "description": "ดำเนินการบำรุงรักษา เช่น การรวมวงจรที่กระจัดกระจายหรือการย้ายข้อมูลที่เก็บไว้\n\n**การใช้พื้นที่เก็บข้อมูล**\n\n- ขนาดไฟล์: {file_size_kb} KB\n- รอบ: {cycle_count}\n- โปรไฟล์: {profile_count}\n- การติดตามการแก้ไขข้อบกพร่อง: {debug_count}", "menu_options": { "reprocess_history": "การบำรุงรักษา: ประมวลผลใหม่และเพิ่มประสิทธิภาพข้อมูล", "clear_debug_data": "ล้างข้อมูลการดีบัก (เพิ่มพื้นที่ว่าง)", "wipe_history": "ล้างข้อมูลทั้งหมดสำหรับอุปกรณ์นี้ (ไม่สามารถย้อนกลับได้)", "export_import": "ส่งออก/นำเข้า JSON ด้วยการตั้งค่า (คัดลอก/วาง)", "menu_back": "← ย้อนกลับ" } }, "clear_debug_data": { "title": "ล้างข้อมูลการดีบัก", "description": "คุณแน่ใจหรือไม่ว่าต้องการลบการติดตามการแก้ไขข้อบกพร่องที่เก็บไว้ทั้งหมด การดำเนินการนี้จะทำให้มีพื้นที่ว่างมากขึ้น แต่จะลบข้อมูลการจัดอันดับโดยละเอียดออกจากรอบที่ผ่านมา" }, "manage_cycles": { "title": "จัดการรอบ", "description": "รอบล่าสุด:\n{recent_cycles}", "menu_options": { "auto_label_cycles": "ติดป้ายกำกับรอบเก่าโดยอัตโนมัติ", "select_cycle_to_label": "วงจรเฉพาะของฉลาก", "select_cycle_to_delete": "ลบไซเคิล", "interactive_editor": "ผสาน / แยกตัวแก้ไขเชิงโต้ตอบ", "trim_cycle_select": "ข้อมูลรอบการตัดแต่ง", "menu_back": "← ย้อนกลับ" } }, "manage_cycles_empty": { "title": "จัดการรอบ", "description": "ยังไม่มีการบันทึกรอบ", "menu_options": { "auto_label_cycles": "ติดป้ายกำกับรอบเก่าโดยอัตโนมัติ", "menu_back": "← ย้อนกลับ" } }, "manage_profiles": { "title": "จัดการโปรไฟล์", "description": "สรุปโปรไฟล์:\n{profile_summary}", "menu_options": { "create_profile": "สร้างโปรไฟล์ใหม่", "edit_profile": "แก้ไข/เปลี่ยนชื่อโปรไฟล์", "delete_profile_select": "ลบโปรไฟล์", "profile_stats": "สถิติโปรไฟล์", "cleanup_profile": "ล้างประวัติ - กราฟ & ลบ", "assign_profile_phases_select": "กำหนดช่วงเฟส", "menu_back": "← ย้อนกลับ" } }, "manage_profiles_empty": { "title": "จัดการโปรไฟล์", "description": "ยังไม่มีการสร้างโปรไฟล์", "menu_options": { "create_profile": "สร้างโปรไฟล์ใหม่", "menu_back": "← ย้อนกลับ" } }, "manage_phase_catalog": { "title": "จัดการแคตตาล็อกเฟส", "description": "แค็ตตาล็อกเฟส (ค่าเริ่มต้นสำหรับอุปกรณ์นี้ + เฟสที่กำหนดเอง):\n{phase_summary}", "menu_options": { "phase_catalog_create": "สร้างเฟสใหม่", "phase_catalog_edit_select": "แก้ไขเฟส", "phase_catalog_delete": "ลบเฟส", "menu_back": "← ย้อนกลับ" } }, "phase_catalog_create": { "title": "สร้างเฟสที่กำหนดเอง", "description": "สร้างชื่อเฟสและคำอธิบายแบบกำหนดเอง และเลือกประเภทอุปกรณ์ที่จะนำไปใช้กับ", "data": { "target_device_type": "ประเภทอุปกรณ์เป้าหมาย", "phase_name": "ชื่อเฟส", "phase_description": "คำอธิบายเฟส" } }, "phase_catalog_edit_select": { "title": "แก้ไขเฟสที่กำหนดเอง", "description": "เลือกเฟสที่กำหนดเองเพื่อแก้ไข", "data": { "phase_name": "เฟสที่กำหนดเอง" } }, "phase_catalog_edit": { "title": "แก้ไขเฟสที่กำหนดเอง", "description": "ขั้นตอนการแก้ไข: {phase_name}", "data": { "phase_name": "ชื่อเฟส", "phase_description": "คำอธิบายเฟส" } }, "phase_catalog_delete": { "title": "ลบเฟสแบบกำหนดเอง", "description": "เลือกเฟสแบบกำหนดเองที่จะลบ ช่วงที่กำหนดโดยใช้ระยะนี้จะถูกลบออก", "data": { "phase_name": "เฟสที่กำหนดเอง" } }, "assign_profile_phases": { "title": "กำหนดช่วงเฟส", "description": "การแสดงตัวอย่างเฟสสำหรับโปรไฟล์: **{profile_name}**\n\n{timeline_svg}\n\n**ช่วงปัจจุบัน:**\n{current_ranges}\n\nใช้การดำเนินการด้านล่างเพื่อเพิ่ม แก้ไข ลบ หรือบันทึกช่วง", "menu_options": { "assign_profile_phases_add": "เพิ่มช่วงเฟส", "assign_profile_phases_edit_select": "แก้ไขช่วงเฟส", "assign_profile_phases_delete": "ลบช่วงเฟส", "phase_ranges_clear": "ล้างทุกช่วง", "assign_profile_phases_auto_detect": "ตรวจจับเฟสอัตโนมัติ", "phase_ranges_save": "บันทึกและส่งคืน", "menu_back": "← ย้อนกลับ" } }, "assign_profile_phases_add": { "title": "เพิ่มช่วงเฟส", "description": "เพิ่มช่วงหนึ่งเฟสให้กับร่างปัจจุบัน", "data": { "phase_name": "เฟส", "start_min": "เริ่มต้นนาที", "end_min": "นาทีสุดท้าย" } }, "assign_profile_phases_edit_select": { "title": "แก้ไขช่วงเฟส", "description": "เลือกช่วงที่จะแก้ไข", "data": { "range_index": "ช่วงเฟส" } }, "assign_profile_phases_edit": { "title": "แก้ไขช่วงเฟส", "description": "อัปเดตช่วงเฟสที่เลือก", "data": { "phase_name": "เฟส", "start_min": "เริ่มต้นนาที", "end_min": "นาทีสุดท้าย" } }, "assign_profile_phases_delete": { "title": "ลบช่วงเฟส", "description": "เลือกช่วงที่จะลบออกจากแบบร่าง", "data": { "range_index": "ช่วงเฟส" } }, "assign_profile_phases_auto_detect": { "title": "เฟสที่ตรวจพบอัตโนมัติ", "description": "โปรไฟล์: **{profile_name}**\n\n{timeline_svg}\n\n**ตรวจพบเฟส {detected_count} เฟสโดยอัตโนมัติ** เลือกการดำเนินการด้านล่าง", "data": { "action": "การกระทำ" } }, "assign_profile_phases_auto_detect_name": { "title": "ชื่อเฟสที่ตรวจพบ", "description": "โปรไฟล์: **{profile_name}**\n\n**ตรวจพบ {detected_count} เฟส:**\n{ranges_summary}\n\nกำหนดชื่อให้กับแต่ละเฟส" }, "assign_profile_phases_select": { "title": "กำหนดช่วงเฟส", "description": "เลือกโปรไฟล์เพื่อกำหนดค่าช่วงเฟส", "data": { "profile": "โปรไฟล์" } }, "profile_stats": { "title": "สถิติโปรไฟล์", "description": "{stats_table}" }, "create_profile": { "title": "สร้างโปรไฟล์ใหม่", "description": "สร้างโปรไฟล์ใหม่ด้วยตนเองหรือจากรอบที่ผ่านมา\n\nตัวอย่างชื่อโปรไฟล์: 'ผ้าฝ้าย 40°C', 'Eco', 'Quick Wash', 'ผ้าฝ้าย + ซักแห้งตู้'\n\n**สิ่งที่เครื่องจับคู่ใช้:** รูปแบบการใช้พลังงาน ระยะเวลารวมของวงจร และพลังงานทั้งหมด มันไม่ได้อ่านการตั้งค่าอุณหภูมิหรือการหมุนโดยตรง\n\n**โปรไฟล์ที่จะตรวจจับอัตโนมัติได้อย่างน่าเชื่อถือ:** โปรแกรมที่มีระยะเวลาหรือรูปแบบพลังงานที่แตกต่างกันอย่างชัดเจน - เช่น การซักด่วน 20 นาที เทียบกับ รอบผ้าฝ้าย 3 ชั่วโมง หรือรอบการซักอย่างเดียว เทียบกับการซัก+ซักแห้งแบบผสม (ซึ่งโดยทั่วไปจะใช้เวลานานกว่า 2-3×)\n\n**โปรไฟล์ที่อาจจำเป็นต้องเลือกด้วยตนเอง:** ตัวแปรของโปรแกรมเดียวกันที่แตกต่างกันเฉพาะอุณหภูมิหรือความเร็วในการปั่น (เช่น คอตตอน 40°C กับคอตตอน 60°C) มักจะให้พลังงานรูปร่างคล้ายกัน ระบบจะยังคงพยายามแยกแยะความแตกต่างและเรียนรู้จากการแก้ไขของคุณเมื่อเวลาผ่านไป แต่คาดว่าจะยืนยันการจับคู่ด้วยตนเองในตอนแรก\n\n**เคล็ดลับสำหรับเครื่องซักผ้า-เครื่องอบผ้า:** สร้างโปรไฟล์แยกต่างหากสำหรับการซักอย่างเดียวและการซัก+ซักแห้ง - ระยะเวลาและพลังงานที่แตกต่างกันมากเพียงพอสำหรับการตรวจจับอัตโนมัติที่เชื่อถือได้", "data": { "profile_name": "ชื่อโปรไฟล์", "reference_cycle": "วงจรอ้างอิง (ไม่บังคับ)", "manual_duration": "ระยะเวลาด้วยตนเอง (นาที)" } }, "edit_profile": { "title": "แก้ไขโปรไฟล์", "description": "เลือกโปรไฟล์ที่จะเปลี่ยนชื่อ", "data": { "profile": "โปรไฟล์" } }, "rename_profile": { "title": "แก้ไขรายละเอียดโปรไฟล์", "description": "โปรไฟล์ปัจจุบัน: {current_name}", "data": { "new_name": "ชื่อโปรไฟล์", "manual_duration": "ระยะเวลาด้วยตนเอง (นาที)" } }, "delete_profile_select": { "title": "ลบโปรไฟล์", "description": "เลือกโปรไฟล์ที่จะลบ", "data": { "profile": "โปรไฟล์" } }, "delete_profile_confirm": { "title": "ยืนยันการลบโปรไฟล์", "description": "⚠️ การดำเนินการนี้จะลบโปรไฟล์อย่างถาวร: {profile_name}", "data": { "unlabel_cycles": "ลบฉลากออกจากรอบการใช้โปรไฟล์นี้" } }, "auto_label_cycles": { "title": "ติดป้ายกำกับรอบเก่าโดยอัตโนมัติ", "description": "พบทั้งหมด {total_count} รอบ โปรไฟล์: {profiles}", "data": { "confidence_threshold": "ความเชื่อมั่นขั้นต่ำ (0.50-0.95)" } }, "select_cycle_to_label": { "title": "เลือกวนไปที่ป้ายกำกับ", "description": "✓ = เสร็จสิ้น ⚠ = ดำเนินการต่อ ✗ = ถูกขัดจังหวะ", "data": { "cycle_id": "วงจร" } }, "select_cycle_to_delete": { "title": "ลบไซเคิล", "description": "⚠️การดำเนินการนี้จะลบรอบที่เลือกอย่างถาวร", "data": { "cycle_id": "วนรอบเพื่อลบ" } }, "label_cycle": { "title": "วงจรฉลาก", "description": "{cycle_info}", "data": { "profile_name": "โปรไฟล์", "new_profile_name": "ชื่อโปรไฟล์ใหม่ (หากกำลังสร้าง)" } }, "post_process": { "title": "ประวัติกระบวนการ (รวม/แยก)", "description": "ล้างประวัติรอบการทำงานโดยการรวมการวิ่งที่กระจัดกระจายและแยกรอบการผสานที่ไม่ถูกต้องภายในกรอบเวลา ป้อนจำนวนชั่วโมงเพื่อดูย้อนหลัง (ใช้ทั้งหมด 999999)", "data": { "time_range": "กรอบเวลามองย้อนกลับ (ชั่วโมง)", "gap_seconds": "ผสาน/แยกช่องว่าง (วินาที)" }, "data_description": { "time_range": "จำนวนชั่วโมงในการสแกนหารอบที่กระจัดกระจายเพื่อรวมเข้าด้วยกัน ใช้ 999999 เพื่อประมวลผลข้อมูลประวัติทั้งหมด", "gap_seconds": "เกณฑ์ในการตัดสินใจแยกและรวม ช่องว่างที่สั้นกว่านี้ถูกรวมเข้าด้วยกัน ช่องว่างที่ยาวกว่านี้จะถูกแยกออก ลดค่านี้ลงเพื่อบังคับให้มีการแยกวงจรที่ผสานไม่ถูกต้อง" } }, "cleanup_profile": { "title": "ล้างประวัติ - เลือกโปรไฟล์", "description": "เลือกโปรไฟล์เพื่อแสดงภาพ ซึ่งจะสร้างกราฟที่แสดงรอบที่ผ่านมาทั้งหมดสำหรับโปรไฟล์นี้เพื่อช่วยระบุค่าผิดปกติ", "data": { "profile": "โปรไฟล์" } }, "cleanup_select": { "title": "ล้างประวัติ - กราฟ & ลบ", "description": "![กราฟ]({graph_url})\n\n**การแสดงภาพ {profile_name}**\n\nกราฟแสดงแต่ละรอบเป็นเส้นสี ระบุค่าผิดปกติ (เส้นที่อยู่ไกลจากกลุ่ม) และจับคู่สีในรายการด้านล่างเพื่อลบออก\n\n**เลือกรอบที่จะลบอย่างถาวร:**", "data": { "cycles_to_delete": "รอบที่จะลบ (ตรวจสอบสีที่ตรงกัน)" } }, "interactive_editor": { "title": "ผสาน / แยกตัวแก้ไขเชิงโต้ตอบ", "description": "เลือกการดำเนินการโดยเจ้าหน้าที่เพื่อดำเนินการกับประวัติรอบเดือนของคุณ", "menu_options": { "editor_split": "แยกวงจร (ค้นหาช่องว่าง)", "editor_merge": "ผสานวงจร (เข้าร่วมส่วนย่อย)", "editor_delete": "ลบไซเคิล", "menu_back": "← ย้อนกลับ" } }, "editor_select": { "title": "เลือก รอบ", "description": "เลือกรอบที่จะประมวลผล\n\n{info_text}", "data": { "selected_cycles": "รอบ" } }, "editor_configure": { "title": "กำหนดค่าและนำไปใช้", "description": "{preview_md}", "data": { "confirm_action": "การกระทำ", "merged_profile": "โปรไฟล์ผลลัพธ์", "new_profile_name": "ชื่อโปรไฟล์ใหม่", "confirm_commit": "ใช่ ฉันยืนยันการดำเนินการนี้", "segment_0_profile": "ส่วนที่ 1 โปรไฟล์", "segment_1_profile": "ส่วนที่ 2 โปรไฟล์", "segment_2_profile": "ส่วนที่ 3 โปรไฟล์", "segment_3_profile": "ส่วนที่ 4 โปรไฟล์", "segment_4_profile": "ส่วนที่ 5 โปรไฟล์", "segment_5_profile": "ส่วนที่ 6 โปรไฟล์", "segment_6_profile": "ส่วนที่ 7 โปรไฟล์", "segment_7_profile": "ส่วนที่ 8 โปรไฟล์", "segment_8_profile": "ส่วนที่ 9 โปรไฟล์", "segment_9_profile": "ส่วนที่ 10 โปรไฟล์" } }, "editor_split_params": { "title": "การกำหนดค่าแบบแยกส่วน", "description": "ปรับความไวสำหรับการแยกรอบนี้ ช่องว่างที่ไม่ได้ใช้งานใด ๆ ที่นานกว่านี้จะทำให้เกิดการแตกแยก", "data": { "split_mode": "วิธีการแยก" } }, "editor_split_auto_params": { "title": "การกำหนดค่าการแยกอัตโนมัติ", "description": "ปรับความไวสำหรับการแยกรอบนี้ ช่องว่างช่วงไม่มีการทำงานที่นานกว่านี้จะทำให้เกิดการแยก", "data": { "min_gap_seconds": "เกณฑ์ช่องว่างการแยก (วินาที)" } }, "editor_split_manual_params": { "title": "การประทับเวลาการแยกด้วยตนเอง", "description": "{preview_md}หน้าต่างรอบ: **{cycle_start_wallclock} → {cycle_end_wallclock}** ในวันที่ {cycle_date}.\n\nป้อนการประทับเวลาการแยกอย่างน้อยหนึ่งรายการ (`HH:MM` หรือ `HH:MM:SS`) หนึ่งรายการต่อบรรทัด รอบจะถูกตัดที่การประทับเวลาแต่ละรายการ — การประทับเวลา N รายการจะได้ N+1 ช่วง.", "data": { "split_timestamps": "เวลาแยกรอบ" } }, "reprocess_history": { "title": "การบำรุงรักษา: ประมวลผลใหม่และเพิ่มประสิทธิภาพข้อมูล", "description": "ดำเนินการทำความสะอาดข้อมูลประวัติอย่างล้ำลึก:\n1. ตัดการอ่านค่าพลังงานเป็นศูนย์ (เงียบ)\n2. แก้ไขเวลา/ระยะเวลาของรอบ\n3. คำนวณแบบจำลองทางสถิติทั้งหมดใหม่ (ซองจดหมาย)\n\n**เรียกใช้สิ่งนี้เพื่อแก้ไขปัญหาข้อมูลหรือใช้อัลกอริทึมใหม่**" }, "wipe_history": { "title": "ล้างประวัติ (การทดสอบเท่านั้น)", "description": "⚠️การดำเนินการนี้จะลบรอบและโปรไฟล์ที่เก็บไว้ทั้งหมดสำหรับอุปกรณ์นี้อย่างถาวร สิ่งนี้ไม่สามารถยกเลิกได้!" }, "export_import": { "title": "ส่งออก/นำเข้า JSON", "description": "คัดลอก/วางรอบ โปรไฟล์ และการตั้งค่าสำหรับอุปกรณ์นี้ ส่งออกด้านล่างหรือวาง JSON เพื่อนำเข้า", "data": { "mode": "การกระทำ", "json_payload": "กำหนดค่า JSON ให้เสร็จสมบูรณ์" }, "data_description": { "mode": "เลือกส่งออกเพื่อคัดลอกข้อมูลและการตั้งค่าปัจจุบัน หรือนำเข้าเพื่อวางข้อมูลที่ส่งออกจากอุปกรณ์ WashData อื่น", "json_payload": "สำหรับการส่งออก: คัดลอก JSON นี้ (รวมถึงรอบ โปรไฟล์ และการตั้งค่าที่ปรับแต่งทั้งหมด) สำหรับการนำเข้า: วาง JSON ที่ส่งออกจาก WashData" } }, "record_cycle": { "title": "บันทึกวงจร", "description": "บันทึกรอบการทำงานด้วยตนเองเพื่อสร้างโปรไฟล์ที่สะอาดปราศจากการรบกวน\n\nสถานะ: **{status}**\nระยะเวลา: {duration} วิ\nตัวอย่าง: {samples}", "menu_options": { "record_refresh": "รีเฟรชสถานะ", "record_stop": "หยุดการบันทึก (บันทึกและประมวลผล)", "record_start": "เริ่มการบันทึกใหม่", "record_process": "ประมวลผลการบันทึกครั้งล่าสุด (ตัดแต่งและบันทึก)", "record_discard": "ละทิ้งการบันทึกครั้งล่าสุด", "menu_back": "← ย้อนกลับ" } }, "record_process": { "title": "การบันทึกกระบวนการ", "description": "![กราฟ]({graph_url})\n\n**กราฟแสดงการบันทึกแบบ Raw** สีฟ้า = เก็บ สีแดง = เสนอการตัดทอน\n*กราฟเป็นแบบคงที่และไม่อัปเดตตามการเปลี่ยนแปลงแบบฟอร์ม*\n\nหยุดการบันทึกแล้ว การตัดแต่งจะสอดคล้องกับอัตราการสุ่มตัวอย่างที่ตรวจพบ (~{sampling_rate}s)\n\nระยะเวลาดิบ: {duration} วินาที\nตัวอย่าง: {samples}", "data": { "head_trim": "ตัดแต่งเริ่มต้น (วินาที)", "tail_trim": "สิ้นสุดการตัดแต่ง (วินาที)", "save_mode": "บันทึกปลายทาง", "profile_name": "ชื่อโปรไฟล์" } }, "learning_feedbacks": { "title": "ผลตอบรับการเรียนรู้", "description": "ข้อเสนอแนะที่รอดำเนินการ: {count}\n\n{pending_table}\n\nเลือกคำขอตรวจสอบรอบการทำงานเพื่อดำเนินการ", "menu_options": { "learning_feedbacks_pick": "ตรวจสอบข้อเสนอแนะที่รอดำเนินการหนึ่งรายการ", "learning_feedbacks_dismiss_all": "ละทิ้งข้อเสนอแนะที่รอดำเนินการทั้งหมด", "menu_back": "← ย้อนกลับ" } }, "learning_feedbacks_pick": { "title": "เลือกข้อเสนอแนะเพื่อทบทวน", "description": "เลือกคำขอทบทวนรอบที่จะเปิด", "data": { "selected_feedback": "เลือกรอบที่จะทบทวน" } }, "learning_feedbacks_empty": { "title": "ผลตอบรับการเรียนรู้", "description": "ไม่พบคำขอความคิดเห็นที่รอดำเนินการ", "menu_options": { "menu_back": "← ย้อนกลับ" } }, "learning_feedbacks_dismiss_all": { "title": "ยกเลิกข้อเสนอแนะที่รอดำเนินการทั้งหมด", "description": "คุณกำลังจะยกเลิกคำขอข้อเสนอแนะที่รอดำเนินการ **{count}** รายการ รอบที่ถูกยกเลิกจะยังคงอยู่ในประวัติของคุณ แต่จะไม่ส่งสัญญาณการเรียนรู้ใหม่ การดำเนินการนี้ไม่สามารถย้อนกลับได้\n\n✅ ทำเครื่องหมายในช่องด้านล่างแล้วคลิก **ส่ง** เพื่อยกเลิกทั้งหมด\n❌ ปล่อยว่างไว้โดยไม่เลือกแล้วคลิก **ส่ง** เพื่อยกเลิกและย้อนกลับ", "data": { "confirm_dismiss_all": "ยืนยัน: ละทิ้งคำขอข้อเสนอแนะที่รอดำเนินการทั้งหมด" } }, "resolve_feedback": { "title": "แก้ไขคำติชม", "description": "{comparison_img}{candidates_table}\n**โปรไฟล์ที่ตรวจพบ**: {detected_profile} ({confidence_pct}%)\n**ระยะเวลาโดยประมาณ**: {est_duration_min} นาที\n**ระยะเวลาจริง**: {act_duration_min} นาที\n\n__เลือกการกระทำด้านล่าง:__", "data": { "action": "คุณอยากจะทำอะไร?", "corrected_profile": "โปรแกรมที่ถูกต้อง (ถ้าแก้ไข)", "corrected_duration": "แก้ไขระยะเวลาเป็นวินาที (หากแก้ไข)" } }, "trim_cycle_select": { "title": "ทริมวงจร - เลือกวงจร", "description": "เลือกรอบที่จะตัดแต่ง ✓ = เสร็จสิ้น ⚠ = ดำเนินการต่อ ✗ = ถูกขัดจังหวะ", "data": { "cycle_id": "วงจร" } }, "trim_cycle": { "title": "วงจรตัดแต่ง", "description": "หน้าต่างปัจจุบัน: {trim_summary}\n\n{trim_svg}", "data": { "action": "การกระทำ" } }, "trim_cycle_start": { "title": "ตั้งค่าเริ่มต้นการตัดแต่ง", "description": "กรอบเวลาวงจร: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nการเริ่มต้นปัจจุบัน: **{current_wallclock}** (+{current_offset_min} นาทีจากการเริ่มต้นรอบ)\n\nเลือกเวลาเริ่มต้นใหม่โดยใช้ตัวเลือกนาฬิกาด้านล่าง", "data": { "trim_start_time": "เวลาเริ่มต้นใหม่", "trim_start_min": "เริ่มต้นใหม่ (นาทีจากการเริ่มต้นรอบ)" } }, "trim_cycle_end": { "title": "ตั้งค่าการสิ้นสุดการตัดแต่ง", "description": "กรอบเวลาวงจร: {cycle_start_wallclock} → {cycle_end_wallclock}\n\nสิ้นสุดปัจจุบัน: **{current_wallclock}** (+{current_offset_min} นาทีจากการเริ่มต้นรอบ)\n\nเลือกเวลาสิ้นสุดใหม่โดยใช้ตัวเลือกนาฬิกาด้านล่าง", "data": { "trim_end_time": "เวลาสิ้นสุดใหม่", "trim_end_min": "สิ้นสุดใหม่ (นาทีจากการเริ่มต้นรอบ)" } } }, "error": { "import_failed": "การนำเข้าล้มเหลว โปรดวาง JSON ส่งออก WashData ที่ถูกต้อง", "select_exactly_one": "เลือกให้ครบ 1 รอบสำหรับการดำเนินการนี้", "select_at_least_one": "เลือกอย่างน้อย 1 รอบสำหรับการดำเนินการนี้", "select_at_least_two": "เลือกอย่างน้อย 2 รอบสำหรับการดำเนินการนี้", "profile_exists": "มีโปรไฟล์ชื่อนี้อยู่แล้ว", "rename_failed": "ไม่สามารถเปลี่ยนชื่อโปรไฟล์ได้ โปรไฟล์อาจไม่มีอยู่หรือมีผู้ใช้ชื่อใหม่แล้ว", "assignment_failed": "ไม่สามารถกำหนดโปรไฟล์ให้หมุนเวียนได้", "duplicate_phase": "มีเฟสที่ใช้ชื่อนี้อยู่แล้ว", "phase_not_found": "ไม่พบเฟสที่เลือก", "invalid_phase_name": "ชื่อเฟสต้องไม่เว้นว่าง", "phase_name_too_long": "ชื่อเฟสยาวเกินไป", "invalid_phase_range": "ช่วงเฟสไม่ถูกต้อง จุดสิ้นสุดต้องมากกว่าจุดเริ่มต้น", "invalid_phase_timestamp": "การประทับเวลาไม่ถูกต้อง ใช้รูปแบบ YYYY-MM-DD HH:MM หรือ HH:MM", "overlapping_phase_ranges": "ช่วงเฟสทับซ้อนกัน ปรับช่วงแล้วลองอีกครั้ง", "incomplete_phase_row": "แต่ละแถวของเฟสจะต้องมีเฟสบวกกับค่าเริ่มต้น/สิ้นสุดที่สมบูรณ์สำหรับโหมดที่เลือก", "timestamp_mode_cycle_required": "โปรดเลือกวงจรของแหล่งที่มาเมื่อใช้โหมดการประทับเวลา", "no_phase_ranges": "ยังไม่มีช่วงเฟสสำหรับการดำเนินการนั้น", "feedback_notification_title": "WashData: ตรวจสอบรอบการทำงาน ({device})", "feedback_notification_message": "**อุปกรณ์**: {device}\n**โปรแกรม**: {program} (ความเชื่อมั่น {confidence}%)\n**เวลา**: {time}\n\nWashData ต้องการความช่วยเหลือจากคุณเพื่อตรวจสอบวงจรที่ตรวจพบนี้\n\nโปรดไปที่ **การตั้งค่า > อุปกรณ์และบริการ > WashData > กำหนดค่า > คำติชมการเรียนรู้** เพื่อยืนยันหรือแก้ไขผลลัพธ์นี้", "suggestions_ready_notification_title": "WashData: การตั้งค่าที่แนะนำพร้อมแล้ว ({device})", "suggestions_ready_notification_message": "ขณะนี้เซ็นเซอร์ **การตั้งค่าที่แนะนำ** รายงานคำแนะนำที่สามารถดำเนินการได้ **{count}**\n\nหากต้องการตรวจสอบและนำไปใช้: **การตั้งค่า > อุปกรณ์และบริการ > WashData > กำหนดค่า > การตั้งค่าขั้นสูง > ใช้ค่าที่แนะนำ**\n\nคำแนะนำเป็นทางเลือกและแสดงให้ตรวจสอบก่อนบันทึก", "trim_range_invalid": "เริ่มต้นจะต้องมาก่อนสิ้นสุด โปรดปรับจุดตัดของคุณ", "trim_failed": "ตัดแต่งล้มเหลว วงจรอาจไม่มีอยู่อีกต่อไปหรือหน้าต่างว่างเปล่า", "invalid_split_timestamp": "เวลาที่ระบุไม่ถูกต้องหรืออยู่นอกช่วงเวลาของรอบ ใช้รูปแบบ HH:MM หรือ HH:MM:SS ภายในช่วงเวลาของรอบ", "no_split_segments_found": "ไม่สามารถสร้างส่วนที่ถูกต้องจากเวลาที่ระบุเหล่านี้ได้ ตรวจสอบให้แน่ใจว่าแต่ละเวลาอยู่ในช่วงเวลาของรอบ และแต่ละส่วนยาวอย่างน้อย 1 นาที", "auto_tune_suggestion": "{device_type} {device_title} ตรวจพบวงจรโกสต์ การเปลี่ยนแปลง min_power ที่แนะนำ: {current_min}W -> {new_min}W (ไม่ได้ใช้โดยอัตโนมัติ)", "auto_tune_title": "WashData ปรับอัตโนมัติ", "auto_tune_fallback": "{device_type} {device_title} ตรวจพบวงจรโกสต์ การเปลี่ยนแปลง min_power ที่แนะนำ: {current_min}W -> {new_min}W (ไม่ได้ใช้โดยอัตโนมัติ)" }, "abort": { "no_cycles_found": "ไม่พบรอบ", "no_split_segments_found": "ไม่พบส่วนที่สามารถแยกได้ในรอบที่เลือก", "cycle_not_found": "ไม่สามารถโหลดรอบที่เลือกได้", "no_power_data": "ไม่มีข้อมูลการติดตามพลังงานสำหรับรอบการทำงานที่เลือก", "no_profiles_found": "ไม่พบโปรไฟล์ สร้างโปรไฟล์ก่อน", "no_profiles_for_matching": "ไม่มีโปรไฟล์สำหรับการจับคู่ สร้างโปรไฟล์ก่อน", "no_unlabeled_cycles": "มีป้ายกำกับทุกรอบแล้ว", "no_suggestions": "ยังไม่มีค่าที่แนะนำ รันสักสองสามรอบแล้วลองอีกครั้ง", "no_predictions": "ไม่มีการคาดการณ์", "no_custom_phases": "ไม่พบเฟสที่กำหนดเอง", "reprocess_success": "ประมวลผลซ้ำสำเร็จแล้ว {count} รอบ", "debug_data_cleared": "ล้างข้อมูลการแก้ไขข้อบกพร่องจาก {count} รอบเรียบร้อยแล้ว" } }, "selector": { "notify_events_option": { "options": { "cycle_start": "วงจรเริ่มต้น", "cycle_finish": "วงจรเสร็จสิ้น", "cycle_live": "ความคืบหน้าสด" } }, "common_text": { "options": { "unlabeled": "(ไม่มีป้ายกำกับ)", "create_new_profile": "สร้างโปรไฟล์ใหม่", "remove_label": "ลบป้ายกำกับ", "no_reference_cycle": "(ไม่มีรอบการอ้างอิง)", "all_device_types": "อุปกรณ์ทุกประเภท", "current_suffix": "(ปัจจุบัน)", "editor_select_info": "เลือก 1 รอบที่จะแยก หรือ 2+ รอบเพื่อรวม", "editor_select_info_split": "เลือก 1 รอบเพื่อแยก", "editor_select_info_merge": "เลือก 2+ รอบเพื่อรวม", "editor_select_info_delete": "เลือก 1+ รอบเพื่อลบ", "no_cycles_recorded": "ยังไม่มีการบันทึกรอบ", "profile_summary_line": "- **{name}**: {count} รอบ เฉลี่ย {avg}ม", "no_profiles_created": "ยังไม่มีการสร้างโปรไฟล์", "phase_preview": "ดูตัวอย่างเฟส", "phase_preview_no_curve": "เส้นโค้งโปรไฟล์เฉลี่ยยังไม่พร้อมใช้งาน เรียกใช้/ติดป้ายกำกับรอบเพิ่มเติมสำหรับโปรไฟล์นี้", "average_power_curve": "เส้นโค้งกำลังเฉลี่ย", "unit_min": "นาที", "profile_option_fmt": "{name} ({count} รอบ ~{duration}m เฉลี่ย)", "profile_option_short_fmt": "{name} ({count} รอบ, ~{duration}ม.)", "deleted_cycles_from_profile": "ลบ {count} รอบจาก {profile}", "not_enough_data_graph": "ข้อมูลไม่เพียงพอที่จะสร้างกราฟ", "no_profiles_found": "ไม่พบโปรไฟล์", "cycle_info_fmt": "วงจร: {start}, {duration}ม. กระแส: {label}", "top_candidates_header": "### ผู้สมัครอันดับต้นๆ", "tbl_profile": "โปรไฟล์", "tbl_confidence": "ความมั่นใจ", "tbl_correlation": "ความสัมพันธ์", "tbl_duration_match": "การจับคู่ระยะเวลา", "detected_profile": "โปรไฟล์ที่ตรวจพบ", "estimated_duration": "ระยะเวลาโดยประมาณ", "actual_duration": "ระยะเวลาจริง", "choose_action": "__เลือกการกระทำด้านล่าง:__", "tbl_count": "นับ", "tbl_avg": "เฉลี่ย", "tbl_min": "นาที", "tbl_max": "สูงสุด", "tbl_energy_avg": "พลังงาน (เฉลี่ย)", "tbl_energy_total": "พลังงาน (รวม)", "tbl_consistency": "ประกอบด้วย.", "tbl_last_run": "วิ่งครั้งสุดท้าย", "graph_legend_title": "ตำนานกราฟ", "graph_legend_body": "แถบสีน้ำเงินแสดงถึงช่วงการดึงกำลังขั้นต่ำและสูงสุดที่สังเกตได้ เส้นนี้แสดงกราฟกำลังเฉลี่ย", "recording_preview": "ตัวอย่างการบันทึก", "trim_start": "ตัดแต่งเริ่มต้น", "trim_end": "ตัดแต่งปลาย", "split_preview_title": "ดูตัวอย่างแบบแยกส่วน", "split_preview_found_fmt": "พบ {count} ส่วน", "split_preview_confirm_fmt": "คลิกยืนยันเพื่อแบ่งรอบนี้เป็น {count} รอบแยกกัน", "merge_preview_title": "รวมตัวอย่าง", "merge_preview_joining_fmt": "เข้าร่วม {count} รอบ ช่องว่างจะเต็มไปด้วยการอ่าน 0W", "editor_delete_preview_title": "ตัวอย่างก่อนลบ", "editor_delete_preview_intro": "รอบที่เลือกจะถูกลบอย่างถาวร:", "editor_delete_preview_confirm": "คลิกยืนยันเพื่อลบระเบียนรอบเหล่านี้อย่างถาวร", "no_power_preview": "*ไม่มีข้อมูลพลังงานสำหรับการดูตัวอย่าง*", "profile_comparison": "การเปรียบเทียบโปรไฟล์", "actual_cycle_label": "รอบนี้ (ตามจริง)", "storage_usage_header": "การใช้พื้นที่เก็บข้อมูล", "storage_file_size": "ขนาดไฟล์", "storage_cycles": "รอบ", "storage_profiles": "โปรไฟล์", "storage_debug_traces": "ดีบักการติดตาม", "overview_suffix": "ภาพรวม", "phase_preview_for_profile": "ตัวอย่างเฟสสำหรับโปรไฟล์", "current_ranges_header": "ช่วงปัจจุบัน", "assign_phases_help": "ใช้การดำเนินการด้านล่างเพื่อเพิ่ม แก้ไข ลบ หรือบันทึกช่วง", "profile_summary_header": "สรุปโปรไฟล์", "recent_cycles_header": "รอบล่าสุด", "trim_cycle_preview_title": "ดูตัวอย่างการตัดวงจร", "trim_cycle_preview_no_data": "ไม่มีข้อมูลกำลังสำหรับรอบนี้", "trim_cycle_preview_kept_suffix": "เก็บไว้", "table_program": "โปรแกรม", "table_when": "เมื่อใด", "table_length": "ความยาว", "table_match": "การจับคู่", "table_profile": "โปรไฟล์", "table_cycles": "รอบ", "table_avg_length": "ความยาวเฉลี่ย", "table_last_run": "วิ่งครั้งสุดท้าย", "table_avg_energy": "พลังงานเฉลี่ย", "table_detected_program": "โปรแกรมที่ตรวจพบ", "table_confidence": "ความมั่นใจ", "table_reported": "ที่รายงาน", "phase_builtin_suffix": "(บิวท์อิน)", "phase_none_available": "ไม่มีเฟสว่าง.", "settings_deprecation_warning": "⚠️ **ประเภทอุปกรณ์ที่เลิกใช้งานแล้ว:** {device_type} มีกำหนดการนำออกในรุ่นต่อๆ ไป ไปป์ไลน์ที่ตรงกันของ WashData ไม่ได้ให้ผลลัพธ์ที่เชื่อถือได้สำหรับคลาสอุปกรณ์นี้ การบูรณาการของคุณยังคงดำเนินต่อไปจนถึงช่วงที่เลิกใช้งาน หากต้องการปิดเสียงคำเตือนนี้ ให้เปลี่ยน **ประเภทอุปกรณ์** ด้านล่างเป็นประเภทที่รองรับ (เครื่องซักผ้า เครื่องอบผ้า เครื่องซักผ้า-เครื่องอบผ้า เครื่องล้างจาน เครื่องทอดอากาศ เครื่องทำขนมปัง หรือปั๊ม) หรือเป็น **อื่นๆ (ขั้นสูง)** หากเครื่องใช้ไฟฟ้าของคุณไม่ตรงกับประเภทใดๆ ที่รองรับ **อื่นๆ (ขั้นสูง)** จัดส่งค่าเริ่มต้นทั่วไปโดยเจตนาซึ่งไม่ได้ปรับแต่งสำหรับอุปกรณ์ใดๆ โดยเฉพาะ ดังนั้นคุณจะต้องกำหนดค่าเกณฑ์ ระยะหมดเวลา และพารามิเตอร์ที่ตรงกันด้วยตนเอง การตั้งค่าที่มีอยู่ทั้งหมดของคุณจะถูกเก็บรักษาไว้เมื่อคุณเปลี่ยน", "phase_other_device_types": "อุปกรณ์ประเภทอื่นๆ:" } }, "interactive_editor_action": { "options": { "split": "แยกวงจร (ค้นหาช่องว่าง)", "merge": "ผสานวงจร (เข้าร่วมส่วนย่อย)", "delete": "ลบไซเคิล" } }, "split_mode": { "options": { "auto": "ตรวจจับช่วงว่างอัตโนมัติ", "manual": "เวลาที่ระบุเอง" } }, "diagnostics_action": { "options": { "reprocess_history": "การบำรุงรักษา: ประมวลผลใหม่และเพิ่มประสิทธิภาพข้อมูล", "clear_debug_data": "ล้างข้อมูลการดีบัก (เพิ่มพื้นที่ว่าง)", "wipe_history": "ล้างข้อมูลทั้งหมดสำหรับอุปกรณ์นี้ (ไม่สามารถย้อนกลับได้)", "export_import": "ส่งออก/นำเข้า JSON ด้วยการตั้งค่า (คัดลอก/วาง)" } }, "export_import_mode": { "options": { "export": "ส่งออกข้อมูลทั้งหมด", "import": "นำเข้า/รวมข้อมูล" } }, "manage_cycles_action": { "options": { "auto_label_cycles": "ติดป้ายกำกับรอบเก่าโดยอัตโนมัติ", "select_cycle_to_label": "วงจรเฉพาะของฉลาก", "select_cycle_to_delete": "ลบไซเคิล", "interactive_editor": "ผสาน / แยกตัวแก้ไขเชิงโต้ตอบ", "trim_cycle": "ข้อมูลรอบการตัดแต่ง" } }, "manage_profiles_action": { "options": { "create_profile": "สร้างโปรไฟล์ใหม่", "edit_profile": "แก้ไข/เปลี่ยนชื่อโปรไฟล์", "delete_profile": "ลบโปรไฟล์", "profile_stats": "สถิติโปรไฟล์", "cleanup_profile": "ล้างประวัติ - กราฟ & ลบ", "assign_phases": "กำหนดช่วงเฟส" } }, "manage_phase_catalog_action": { "options": { "create_custom_phase": "สร้างเฟสใหม่", "edit_custom_phase": "แก้ไขเฟส", "delete_custom_phase": "ลบเฟส" } }, "assign_profile_phases_action": { "options": { "add_range": "เพิ่มช่วงเฟส", "edit_range": "แก้ไขช่วงเฟส", "delete_range": "ลบช่วงเฟส", "clear_ranges": "ล้างทุกช่วง", "auto_detect_ranges": "ตรวจจับเฟสอัตโนมัติ", "save_ranges": "บันทึกและส่งคืน" } }, "record_cycle_action": { "options": { "refresh_status": "รีเฟรชสถานะ", "stop_recording": "หยุดการบันทึก (บันทึกและประมวลผล)", "start_recording": "เริ่มการบันทึกใหม่", "process_recording": "ประมวลผลการบันทึกครั้งล่าสุด (ตัดแต่งและบันทึก)", "discard_recording": "ละทิ้งการบันทึกครั้งล่าสุด" } }, "record_process_save_mode": { "options": { "new_profile": "สร้างโปรไฟล์ใหม่", "existing_profile": "เพิ่มไปยังโปรไฟล์ที่มีอยู่", "discard": "ยกเลิกการบันทึก" } }, "resolve_feedback_action": { "options": { "confirm": "ยืนยัน - การตรวจจับที่ถูกต้อง", "correct": "ถูกต้อง - เลือกโปรแกรม/ระยะเวลา", "ignore": "เพิกเฉย - วงจรบวกลวง/มีเสียงดัง", "delete": "ลบ - ลบออกจากประวัติ" } }, "assign_profile_phases_auto_detect_action": { "options": { "name_phases": "ตั้งชื่อและสมัครเฟส", "cancel": "กลับไปโดยไม่มีการเปลี่ยนแปลง" } }, "trim_cycle_action": { "options": { "set_start": "กำหนดจุดเริ่มต้น", "set_end": "กำหนดจุดสิ้นสุด", "reset": "รีเซ็ตเป็นระยะเวลาเต็ม", "apply": "ใช้ตัดแต่ง", "cancel": "ยกเลิก" } }, "device_type": { "options": { "washing_machine": "เครื่องซักผ้า", "dryer": "เครื่องอบผ้า", "washer_dryer": "เครื่องซักผ้า-เครื่องอบผ้า Combo", "dishwasher": "เครื่องล้างจาน", "coffee_machine": "เครื่องชงกาแฟ (เลิกใช้แล้ว)", "ev": "รถยนต์ไฟฟ้า (เลิกใช้แล้ว)", "air_fryer": "หม้อทอดไร้น้ำมัน", "heat_pump": "ปั๊มความร้อน (เลิกใช้แล้ว)", "bread_maker": "เครื่องทำขนมปัง", "pump": "ปั๊ม/ปั๊มบ่อ", "oven": "เตาอบ (เลิกใช้แล้ว)", "other": "อื่นๆ (ขั้นสูง)" } } }, "services": { "label_cycle": { "name": "วงจรฉลาก", "description": "กำหนดโปรไฟล์ที่มีอยู่ให้กับรอบที่ผ่านมา หรือลบป้ายกำกับออก", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์ติดฉลากเครื่องซักผ้า" }, "cycle_id": { "name": "รหัสไซเคิล", "description": "ID ของรอบที่จะติดป้ายกำกับ" }, "profile_name": { "name": "ชื่อโปรไฟล์", "description": "ชื่อของโปรไฟล์ที่มีอยู่ (สร้างโปรไฟล์ในเมนูจัดการโปรไฟล์) เว้นว่างไว้เพื่อนำป้ายกำกับออก" } } }, "create_profile": { "name": "สร้างโปรไฟล์", "description": "สร้างโปรไฟล์ใหม่ (แบบสแตนด์อโลนหรือตามรอบการอ้างอิง)", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์เครื่องซักผ้า" }, "profile_name": { "name": "ชื่อโปรไฟล์", "description": "ชื่อของโปรไฟล์ใหม่ (เช่น 'Heavy Duty', 'Delicates')" }, "reference_cycle_id": { "name": "รหัสไซเคิลอ้างอิง", "description": "รหัสรอบทางเลือกเพื่อใช้เป็นฐานของโปรไฟล์นี้" } } }, "delete_profile": { "name": "ลบโปรไฟล์", "description": "ลบโปรไฟล์และเลือกยกเลิกการติดป้ายกำกับรอบการใช้งาน", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์เครื่องซักผ้า" }, "profile_name": { "name": "ชื่อโปรไฟล์", "description": "โปรไฟล์ที่จะลบ" }, "unlabel_cycles": { "name": "เลิกติดป้ายกำกับรอบ", "description": "ลบป้ายกำกับโปรไฟล์ออกจากรอบการใช้โปรไฟล์นี้" } } }, "auto_label_cycles": { "name": "ติดป้ายกำกับรอบเก่าโดยอัตโนมัติ", "description": "ติดป้ายกำกับรอบการทำงานที่ไม่มีป้ายกำกับย้อนหลังโดยใช้การจับคู่โปรไฟล์", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์เครื่องซักผ้า" }, "confidence_threshold": { "name": "เกณฑ์ความเชื่อมั่น", "description": "ความเชื่อมั่นการจับคู่ขั้นต่ำ (0.50-0.95) เพื่อใช้ป้ายกำกับ" } } }, "export_config": { "name": "ส่งออกการกำหนดค่า", "description": "ส่งออกโปรไฟล์ รอบ และการตั้งค่าของอุปกรณ์นี้เป็นไฟล์ JSON (ต่ออุปกรณ์)", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์เครื่องซักผ้าเพื่อส่งออก" }, "path": { "name": "เส้นทาง", "description": "พาธไฟล์สัมบูรณ์ทางเลือกที่จะเขียน (ค่าเริ่มต้นคือ /config/ha_washdata_export_{entry}.json)" } } }, "import_config": { "name": "นำเข้าการกำหนดค่า", "description": "นำเข้าโปรไฟล์ รอบ และการตั้งค่าสำหรับอุปกรณ์นี้จากไฟล์ส่งออก JSON (การตั้งค่าอาจถูกเขียนทับ)", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์เครื่องซักผ้าที่จะนำเข้า" }, "path": { "name": "เส้นทาง", "description": "เส้นทางที่แน่นอนไปยังไฟล์ JSON ส่งออกที่จะนำเข้า" } } }, "submit_cycle_feedback": { "name": "ส่งคำติชมรอบ", "description": "ยืนยันหรือแก้ไขโปรแกรมที่ตรวจพบอัตโนมัติหลังจากรอบการทำงานเสร็จสมบูรณ์ ระบุ `entry_id` (ขั้นสูง) หรือ `device_id` (แนะนำ)", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์ WashData (แนะนำแทน entry_id)" }, "entry_id": { "name": "รหัสรายการ", "description": "รหัสรายการการกำหนดค่าสำหรับอุปกรณ์ (ทางเลือกอื่นคือ device_id)" }, "cycle_id": { "name": "รหัสไซเคิล", "description": "รหัสรอบที่แสดงในการแจ้งเตือน / บันทึกข้อเสนอแนะ" }, "user_confirmed": { "name": "ยืนยันโปรแกรมที่ตรวจพบ", "description": "ตั้งค่าเป็นจริงหากโปรแกรมที่ตรวจพบถูกต้อง" }, "corrected_profile": { "name": "โปรไฟล์ที่แก้ไขแล้ว", "description": "หากไม่ได้รับการยืนยัน ให้ระบุชื่อโปรไฟล์/โปรแกรมที่ถูกต้อง" }, "corrected_duration": { "name": "ระยะเวลาที่แก้ไข (วินาที)", "description": "ระยะเวลาแก้ไขเพิ่มเติมในหน่วยวินาที" }, "notes": { "name": "หมายเหตุ", "description": "หมายเหตุเพิ่มเติมเกี่ยวกับรอบนี้" } } }, "record_start": { "name": "บันทึกรอบการเริ่มต้น", "description": "เริ่มบันทึกวงจรการทำความสะอาดด้วยตนเอง (ข้ามตรรกะที่ตรงกันทั้งหมด)", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์เครื่องซักผ้าที่จะบันทึก" } } }, "record_stop": { "name": "บันทึกรอบการหยุด", "description": "หยุดการบันทึกด้วยตนเอง", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์เครื่องซักผ้าหยุดการบันทึก" } } }, "trim_cycle": { "name": "วงจรตัดแต่ง", "description": "ตัดข้อมูลกำลังของรอบที่ผ่านมาเป็นกรอบเวลาที่กำหนด", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์ WashData" }, "cycle_id": { "name": "รหัสไซเคิล", "description": "ID ของวงรอบที่จะตัดแต่ง" }, "trim_start_s": { "name": "ตัดแต่งเริ่มต้น (วินาที)", "description": "เก็บข้อมูลจากการชดเชยนี้ในไม่กี่วินาที ค่าเริ่มต้น 0" }, "trim_end_s": { "name": "การตัดขอบ (วินาที)", "description": "เก็บข้อมูลจนถึงออฟเซ็ตนี้ในไม่กี่วินาที ค่าเริ่มต้น = ระยะเวลาเต็ม" } } }, "pause_cycle": { "name": "หยุดวงจรชั่วคราว", "description": "หยุดวงจรที่ใช้งานชั่วคราวสำหรับอุปกรณ์ WashData", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์ WashData เพื่อหยุดชั่วคราว" } } }, "resume_cycle": { "name": "ดำเนินรอบต่อ", "description": "ดำเนินรอบที่หยุดชั่วคราวต่อสำหรับอุปกรณ์ WashData", "fields": { "device_id": { "name": "อุปกรณ์", "description": "อุปกรณ์ WashData เพื่อดำเนินการต่อ" } } } }, "entity": { "binary_sensor": { "running": { "name": "วิ่ง" }, "match_ambiguity": { "name": "จับคู่ความคลุมเครือ" } }, "sensor": { "washer_state": { "name": "สถานะ", "state": { "off": "ปิด", "idle": "ไม่ได้ใช้งาน", "starting": "กำลังเริ่มต้น", "running": "วิ่ง", "paused": "หยุดชั่วคราว", "user_paused": "หยุดชั่วคราวโดยผู้ใช้", "ending": "ตอนจบ", "finished": "ที่เสร็จเรียบร้อย", "anti_wrinkle": "ต่อต้านริ้วรอย", "delay_wait": "กำลังรอการเริ่มต้น", "interrupted": "ขัดจังหวะ", "force_stopped": "บังคับหยุด", "rinse": "ล้าง", "unknown": "ไม่ทราบ", "clean": "ทำความสะอาด" } }, "washer_program": { "name": "โปรแกรม" }, "time_remaining": { "name": "เวลาที่เหลืออยู่" }, "total_duration": { "name": "ระยะเวลารวม" }, "cycle_progress": { "name": "ความคืบหน้า" }, "current_power": { "name": "กำลังไฟฟ้าปัจจุบัน" }, "elapsed_time": { "name": "เวลาที่ผ่านไป" }, "debug_info": { "name": "ข้อมูลการแก้ไขข้อบกพร่อง" }, "match_confidence": { "name": "จับคู่ความมั่นใจ" }, "top_candidates": { "name": "ผู้สมัครอันดับต้นๆ", "state": { "none": "ไม่มี" } }, "current_phase": { "name": "เฟสปัจจุบัน" }, "wash_phase": { "name": "เฟส" }, "profile_cycle_count": { "name": "โปรไฟล์ {profile_name} จำนวน", "unit_of_measurement": "รอบ" }, "suggestions": { "name": "การตั้งค่าที่แนะนำ" }, "pump_runs_today": { "name": "ปั๊มรัน (24 ชั่วโมงล่าสุด)" }, "cycle_count": { "name": "จำนวนรอบ" } }, "select": { "program_select": { "name": "โปรแกรมวงจร", "state": { "auto_detect": "ตรวจจับอัตโนมัติ" } } }, "button": { "force_end_cycle": { "name": "บังคับให้สิ้นสุดวงจร" }, "pause_cycle": { "name": "หยุดวงจรชั่วคราว" }, "resume_cycle": { "name": "ดำเนินการต่อวงจร" } } }, "exceptions": { "device_id_required": { "message": "จำเป็นต้องมี device_id ที่ถูกต้อง" }, "cycle_id_required": { "message": "จำเป็นต้องมี Cycle_id ที่ถูกต้อง" }, "profile_name_required": { "message": "จำเป็นต้องมีprofile_nameที่ถูกต้อง" }, "device_not_found": { "message": "ไม่พบอุปกรณ์" }, "no_config_entry": { "message": "ไม่พบรายการการกำหนดค่าสำหรับอุปกรณ์" }, "integration_not_loaded": { "message": "ไม่ได้โหลดการบูรณาการสำหรับอุปกรณ์นี้" }, "cycle_not_found_or_no_power": { "message": "ไม่พบรอบการทำงานหรือไม่มีข้อมูลกำลัง" }, "trim_failed_empty_window": { "message": "การตัดขอบล้มเหลว - ไม่พบรอบการทำงาน ไม่มีข้อมูลพลังงาน หรือหน้าต่างผลลัพธ์ว่างเปล่า" }, "trim_invalid_range": { "message": "trim_end_s ต้องมากกว่า trim_start_s" } } }