This commit is contained in:
Home Assistant Version Control
2026-09-27 03:11:56 +00:00
parent b3d90618ec
commit 1a534bfbe9
10 changed files with 3518 additions and 1130 deletions
+27 -27
View File
@@ -1,27 +1,27 @@
{
"domain": "ha_creality_ws",
"name": "Creality WebSocket Integration",
"after_dependencies": ["go2rtc"],
"codeowners": ["@3dg1luk43"],
"config_flow": true,
"dependencies": ["lovelace", "http", "frontend", "persistent_notification"],
"documentation": "https://github.com/3dg1luk43/ha_creality_ws",
"iot_class": "local_push",
"issue_tracker": "https://github.com/3dg1luk43/ha_creality_ws/issues",
"loggers": ["custom_components.ha_creality_ws"],
"requirements": [
"websockets>=10.4",
"go2rtc-client>=0.1.0"
],
"version": "0.9.7",
"zeroconf": [
{ "type": "_http._tcp.local.", "name": "*creality*" },
{ "type": "_workstation._tcp.local.", "name": "*creality*" },
{ "type": "_http._tcp.local.", "name": "*k1*" },
{ "type": "_workstation._tcp.local.", "name": "*k1*" },
{ "type": "_http._tcp.local.", "name": "*k2*" },
{ "type": "_workstation._tcp.local.", "name": "*k2*" }
]
}
{
"domain": "ha_creality_ws",
"name": "Creality WebSocket Integration",
"after_dependencies": ["go2rtc"],
"codeowners": ["@3dg1luk43"],
"config_flow": true,
"dependencies": ["lovelace", "http", "frontend", "persistent_notification"],
"documentation": "https://github.com/3dg1luk43/ha_creality_ws",
"iot_class": "local_push",
"issue_tracker": "https://github.com/3dg1luk43/ha_creality_ws/issues",
"loggers": ["custom_components.ha_creality_ws"],
"requirements": [
"websockets>=10.4",
"go2rtc-client>=0.1.0"
],
"version": "0.9.8",
"zeroconf": [
{ "type": "_http._tcp.local.", "name": "*creality*" },
{ "type": "_workstation._tcp.local.", "name": "*creality*" },
{ "type": "_http._tcp.local.", "name": "*k1*" },
{ "type": "_workstation._tcp.local.", "name": "*k1*" },
{ "type": "_http._tcp.local.", "name": "*k2*" },
{ "type": "_workstation._tcp.local.", "name": "*k2*" }
]
}
@@ -13,3 +13,82 @@ request_cfs_info:
device:
integration: ha_creality_ws
multiple: true
set_cfs_material:
fields:
device_id:
required: true
selector:
device:
integration: ha_creality_ws
multiple: true
box_id:
required: true
default: 1
selector:
number:
# No upper bound: box_id is whatever the printer reports, and an
# external unit can present a high id (7 has been observed). Capping it
# at 4 made those slots unwritable. The printer rejects an unknown id.
min: 0
mode: box
slot_id:
required: true
default: 0
selector:
number:
min: 0
max: 3
mode: box
type:
required: true
example: "PLA"
selector:
text:
name:
required: false
example: "Hyper PLA"
selector:
text:
vendor:
required: false
example: "Creality"
selector:
text:
# A plain hex string, not the color_rgb selector: that selector hands back
# [r, g, b], which the printer does not understand.
color:
required: false
example: "#06c84f"
selector:
text:
min_temp:
required: false
selector:
number:
min: 150
max: 300
step: 1
unit_of_measurement: "°C"
mode: box
max_temp:
required: false
selector:
number:
min: 150
max: 350
step: 1
unit_of_measurement: "°C"
mode: box
pressure:
required: false
selector:
number:
min: 0.0
max: 1.0
step: 0.01
mode: box
rfid:
required: false
selector:
text:
+167 -19
View File
@@ -21,42 +21,143 @@
"not_K": "Not a K-series printer"
}
},
"common": {
"title_fallback": "Creality Printer",
"channel_live": "3D Print",
"channel_finished": "3D Print Finished",
"channel_alerts": "3D Print Alerts",
"channel_soon": "3D Print Finishing Soon",
"action_pause": "Pause",
"action_resume": "Resume",
"action_stop": "Stop",
"action_dismiss": "Hide",
"status_starting": "Starting",
"status_paused": "Paused",
"status_finishing": "Finishing",
"body_progress": "{progress}%",
"body_paused": "Paused at {progress}%",
"body_paused_unknown": "Paused",
"body_layer": "{layer}/{total_layers}",
"body_time_left": "{duration}",
"body_fallback": "Printing",
"duration_hours_minutes": "{hours}h {minutes}m",
"duration_minutes": "{minutes}m",
"duration_seconds": "{seconds}s",
"filament_length": "{metres} m",
"completed": "{device} finished.",
"stopped": "{device} stopped at {progress}%",
"completed_detailed": "{device} finished. {filament} consumed.",
"error": "{device} error - {key} [{code}]",
"filament_runout": "{device} filament ran out. Print is {state}. Change the filament.",
"finishing_soon": "{device} will finish in {minutes} minutes."
},
"exceptions": {
"unsupported_ha_version": {
"message": "This version of the Creality WebSocket integration needs Home Assistant {minimum} or newer, but this system is running {running}. Update Home Assistant, or install integration version 0.9.7 instead."
}
},
"selector": {
"camera_mode": {
"options": {
"auto": "Auto (detect by model)",
"mjpeg": "MJPEG (K1 family)",
"webrtc": "WebRTC via go2rtc (K2 family)",
"webrtc_direct": "WebRTC direct, no go2rtc (alternative)",
"custom": "Custom camera URL (MJPEG / RTSP)"
}
}
},
"options": {
"step": {
"init": {
"title": "Printer Configuration",
"description": "Choose a settings group to edit. Each group opens its own page so its options always load fresh.",
"description": "Choose a settings group to edit. Each group opens its own page, and pressing Submit on that page saves it and applies it right away. There is nothing to confirm afterwards: close this dialog whenever you are finished.",
"menu_options": {
"camera": "Camera",
"notifications": "Notifications",
"power": "Power switch",
"connection": "Connection & performance",
"save": "Save and apply"
"connection": "Connection & performance"
}
},
"camera": {
"title": "Camera",
"description": "{camera_help}",
"description": "Camera streaming mode. Auto detects from the printer model. WebRTC via go2rtc is the default for K2-family printers; WebRTC direct is an alternative that signals the printer itself (no go2rtc) - try it if the default does not work, e.g. on newer K1C firmware. Custom lets you point at any http(s) MJPEG/snapshot URL or an rtsp:// stream (served via go2rtc). Leave the go2rtc RTSP port at 0 unless HLS / camera.record needs a non-default port. Submit saves this page and returns to the menu.",
"data": {
"camera_mode": "Camera Streaming Mode",
"go2rtc_url": "External go2rtc Host/URL (if needed)",
"go2rtc_port": "External go2rtc Port",
"go2rtc_rtsp_port": "go2rtc RTSP Port (0 = auto: 18554 built-in, 8554 external)",
"custom_camera_url": "Custom Camera URL (http(s) MJPEG/snapshot or rtsp://)"
}
},
"notifications": {
"title": "Notifications",
"description": "Choose where notifications go, then what you want to be told about. Pressing Submit saves this page and applies it right away.",
"data": {
"notify_device": "Notification Device",
"notify_completed": "Notify when Completed",
"notify_error": "Notify on Error",
"notify_minutes_to_end": "Notify before Completion",
"minutes_to_end_value": "Minutes before Completion"
"notify_targets": "Send notifications to"
},
"data_description": {
"notify_targets": "Pick one or more. Only Home Assistant companion app targets can show the live print card, the G-code preview or the buttons; any other notify platform receives the title and message only."
},
"sections": {
"events": {
"name": "What to notify me about",
"description": "The live print card needs Home Assistant 2026.7 or newer plus iOS 17.2+ or Android 16+, and iOS ends it after 8 hours on very long prints.",
"data": {
"notify_live": "Live print card",
"notify_completed": "When a print ends",
"notify_error": "Errors and filament runout",
"notify_minutes_to_end": "Shortly before a print ends",
"minutes_to_end_value": "How long before"
},
"data_description": {
"notify_live": "One notification for the whole print that updates in place, with a progress bar and a countdown that ticks on the phone.",
"notify_completed": "Covers both endings: a print that finished, and one that was stopped, whether from the printer, the Creality app or Home Assistant.",
"notify_error": "A printer error, or a spool that has run out.",
"notify_minutes_to_end": "A reminder to go and watch the last layers, on its own so the live card cannot replace it."
}
},
"extras": {
"name": "Buttons, pictures and tapping",
"description": "All of these need a companion app target, and are ignored by every other notify platform.",
"data": {
"notify_actions": "Pause, Resume and Stop buttons",
"notify_preview_image": "G-code preview as the icon",
"notify_camera_snapshot": "Camera snapshot when a print ends",
"notify_tap_path": "Dashboard path to open on tap"
},
"data_description": {
"notify_actions": "Stop asks for device authentication, so a mis-tap on a lock screen cannot end a long print.",
"notify_preview_image": "Skipped when the printer has no preview to serve, rather than sending an empty grey box.",
"notify_camera_snapshot": "What the bed actually looks like. Skipped on printers whose camera cannot take a still.",
"notify_tap_path": "For example /lovelace/printer. Left empty, an Android tap opens the printer camera and an iOS tap opens the app; this is the only way to make an iOS tap go anywhere specific."
}
},
"text": {
"name": "Custom text",
"description": "Write your own wording, or leave a field empty to keep the built-in, translated text. A placeholder the printer has not reported renders as nothing, so wrap anything optional in square brackets and the whole bracketed part disappears while its value is unknown, as in {example}. The brackets themselves are the syntax and are not shown; double them ([[ and ]]) for a bracket you want to keep. The title is always the printer name: Android fixes a live card's title when the card starts and cannot change it afterwards.",
"data": {
"notify_template_live": "Live print card",
"notify_template_completed": "Print finished",
"notify_template_stopped": "Print stopped",
"notify_template_soon": "Shortly before the end",
"notify_template_error": "Printer error",
"notify_template_runout": "Filament runout"
},
"data_description": {
"notify_template_live": "Placeholders: {fields_live}",
"notify_template_completed": "Placeholders: {fields_completed}",
"notify_template_stopped": "Placeholders: {fields_stopped}. Fewer than the others: the printer has already reset the progress, the job clock and the layer by the time a stop can be seen, so only what survives it is offered.",
"notify_template_soon": "Placeholders: {fields_finishing_soon}",
"notify_template_error": "Placeholders: {fields_error}",
"notify_template_runout": "Placeholders: {fields_filament_runout}"
}
}
}
},
"power": {
"title": "Power switch",
"description": "{power_help}",
"description": "Optional power switch entity ID (e.g. switch.smart_plug_name) to enable accurate 'Off' state detection.",
"data": {
"power_switch_enabled": "Enable Power Switch Detection",
"power_switch": "Power Switch Entity"
@@ -71,7 +172,8 @@
}
},
"error": {
"invalid_camera_url": "Enter a full URL including the scheme, e.g. http://192.168.1.50:8080/?action=stream or rtsp://192.168.1.50:554/stream."
"invalid_camera_url": "Enter a full URL including the scheme, e.g. http://192.168.1.50:8080/?action=stream or rtsp://192.168.1.50:554/stream.",
"unknown_placeholder": "That is not a placeholder this integration can fill. Check the list in the description above, and mind the spelling."
}
},
"entity": {
@@ -87,7 +189,6 @@
"position_z": { "name": "Position Z" },
"feedrate_pct": { "name": "Print Speed" },
"flowrate_pct": { "name": "Flow Rate" },
"system": { "name": "System" },
"model_info": { "name": "Model" },
"filament_status": {
"name": "Filament Status",
@@ -113,6 +214,9 @@
}
},
"used_material_length": { "name": "Used Material Length" },
"expected_material_length": { "name": "Expected Material Length" },
"expected_material_weight": { "name": "Expected Material Weight" },
"filament_consumption": { "name": "Filament Consumption" },
"print_job_time": { "name": "Print Job Time" },
"print_left_time": { "name": "Print Time Left" },
"real_time_flow": { "name": "Real-Time Flow" },
@@ -150,10 +254,7 @@
"print_tuning_pct": { "name": "Print Tuning" },
"nozzle_target": { "name": "Nozzle Target" },
"bed_target": { "name": "Bed Target" },
"chamber_target": { "name": "Chamber Target" },
"model_fan_pct": { "name": "Model Fan" },
"case_fan_pct": { "name": "Case Fan" },
"side_fan_pct": { "name": "Side Fan" }
"chamber_target": { "name": "Chamber Target" }
},
"fan": {
"model_fan": { "name": "Model Fan" },
@@ -163,9 +264,6 @@
"light": {
"light": { "name": "Light" }
},
"switch": {
"light": { "name": "Light" }
},
"camera": {
"printer_camera": { "name": "Printer Camera" }
},
@@ -193,6 +291,56 @@
"description": "The printer(s) to request info from. If omitted, all connected printers will be queried."
}
}
},
"set_cfs_material": {
"name": "Set CFS Material",
"description": "Write filament settings to one CFS slot. Only the fields you supply are changed; leave a field out to keep the value the printer already has. Material type is required and cannot be blank, and a color, if you give one, must be six hex digits.",
"fields": {
"device_id": {
"name": "Device",
"description": "The printer(s) to write to."
},
"box_id": {
"name": "Box ID",
"description": "The box id as the printer reports it. See the box_id attribute on the slot's sensor; it is usually 1 for the first CFS unit."
},
"slot_id": {
"name": "Slot ID",
"description": "Slot number within the box, starting at 0."
},
"type": {
"name": "Material Type",
"description": "Filament type, for example PLA, PETG, ABS or TPU."
},
"name": {
"name": "Material Name",
"description": "Product name of the filament, for example Hyper PLA."
},
"vendor": {
"name": "Vendor",
"description": "Manufacturer or brand name."
},
"color": {
"name": "Color",
"description": "Color as six hex digits, for example #06c84f. For a multi-color spool, leave this field out rather than sending an empty value; the other fields still write."
},
"min_temp": {
"name": "Minimum Temperature",
"description": "Lowest printing temperature, in °C."
},
"max_temp": {
"name": "Maximum Temperature",
"description": "Highest printing temperature, in °C. Must not be below the minimum."
},
"pressure": {
"name": "Pressure Advance",
"description": "Pressure advance value, between 0 and 1."
},
"rfid": {
"name": "RFID",
"description": "The printer's material id. Leaving it empty omits the field, so the existing tag association is preserved."
}
}
}
}
}
@@ -21,42 +21,143 @@
"not_K": "Not a K-series printer"
}
},
"common": {
"title_fallback": "Creality Printer",
"channel_live": "3D Print",
"channel_finished": "3D Print Finished",
"channel_alerts": "3D Print Alerts",
"channel_soon": "3D Print Finishing Soon",
"action_pause": "Pause",
"action_resume": "Resume",
"action_stop": "Stop",
"action_dismiss": "Hide",
"status_starting": "Starting",
"status_paused": "Paused",
"status_finishing": "Finishing",
"body_progress": "{progress}%",
"body_paused": "Paused at {progress}%",
"body_paused_unknown": "Paused",
"body_layer": "{layer}/{total_layers}",
"body_time_left": "{duration}",
"body_fallback": "Printing",
"duration_hours_minutes": "{hours}h {minutes}m",
"duration_minutes": "{minutes}m",
"duration_seconds": "{seconds}s",
"filament_length": "{metres} m",
"completed": "{device} finished.",
"stopped": "{device} stopped at {progress}%",
"completed_detailed": "{device} finished. {filament} consumed.",
"error": "{device} error - {key} [{code}]",
"filament_runout": "{device} filament ran out. Print is {state}. Change the filament.",
"finishing_soon": "{device} will finish in {minutes} minutes."
},
"exceptions": {
"unsupported_ha_version": {
"message": "This version of the Creality WebSocket integration needs Home Assistant {minimum} or newer, but this system is running {running}. Update Home Assistant, or install integration version 0.9.7 instead."
}
},
"selector": {
"camera_mode": {
"options": {
"auto": "Auto (detect by model)",
"mjpeg": "MJPEG (K1 family)",
"webrtc": "WebRTC via go2rtc (K2 family)",
"webrtc_direct": "WebRTC direct, no go2rtc (alternative)",
"custom": "Custom camera URL (MJPEG / RTSP)"
}
}
},
"options": {
"step": {
"init": {
"title": "Printer Configuration",
"description": "Choose a settings group to edit. Each group opens its own page so its options always load fresh.",
"description": "Choose a settings group to edit. Each group opens its own page, and pressing Submit on that page saves it and applies it right away. There is nothing to confirm afterwards: close this dialog whenever you are finished.",
"menu_options": {
"camera": "Camera",
"notifications": "Notifications",
"power": "Power switch",
"connection": "Connection & performance",
"save": "Save and apply"
"connection": "Connection & performance"
}
},
"camera": {
"title": "Camera",
"description": "{camera_help}",
"description": "Camera streaming mode. Auto detects from the printer model. WebRTC via go2rtc is the default for K2-family printers; WebRTC direct is an alternative that signals the printer itself (no go2rtc) - try it if the default does not work, e.g. on newer K1C firmware. Custom lets you point at any http(s) MJPEG/snapshot URL or an rtsp:// stream (served via go2rtc). Leave the go2rtc RTSP port at 0 unless HLS / camera.record needs a non-default port. Submit saves this page and returns to the menu.",
"data": {
"camera_mode": "Camera Streaming Mode",
"go2rtc_url": "External go2rtc Host/URL (if needed)",
"go2rtc_port": "External go2rtc Port",
"go2rtc_rtsp_port": "go2rtc RTSP Port (0 = auto: 18554 built-in, 8554 external)",
"custom_camera_url": "Custom Camera URL (http(s) MJPEG/snapshot or rtsp://)"
}
},
"notifications": {
"title": "Notifications",
"description": "Choose where notifications go, then what you want to be told about. Pressing Submit saves this page and applies it right away.",
"data": {
"notify_device": "Notification Device",
"notify_completed": "Notify when Completed",
"notify_error": "Notify on Error",
"notify_minutes_to_end": "Notify before Completion",
"minutes_to_end_value": "Minutes before Completion"
"notify_targets": "Send notifications to"
},
"data_description": {
"notify_targets": "Pick one or more. Only Home Assistant companion app targets can show the live print card, the G-code preview or the buttons; any other notify platform receives the title and message only."
},
"sections": {
"events": {
"name": "What to notify me about",
"description": "The live print card needs Home Assistant 2026.7 or newer plus iOS 17.2+ or Android 16+, and iOS ends it after 8 hours on very long prints.",
"data": {
"notify_live": "Live print card",
"notify_completed": "When a print ends",
"notify_error": "Errors and filament runout",
"notify_minutes_to_end": "Shortly before a print ends",
"minutes_to_end_value": "How long before"
},
"data_description": {
"notify_live": "One notification for the whole print that updates in place, with a progress bar and a countdown that ticks on the phone.",
"notify_completed": "Covers both endings: a print that finished, and one that was stopped, whether from the printer, the Creality app or Home Assistant.",
"notify_error": "A printer error, or a spool that has run out.",
"notify_minutes_to_end": "A reminder to go and watch the last layers, on its own so the live card cannot replace it."
}
},
"extras": {
"name": "Buttons, pictures and tapping",
"description": "All of these need a companion app target, and are ignored by every other notify platform.",
"data": {
"notify_actions": "Pause, Resume and Stop buttons",
"notify_preview_image": "G-code preview as the icon",
"notify_camera_snapshot": "Camera snapshot when a print ends",
"notify_tap_path": "Dashboard path to open on tap"
},
"data_description": {
"notify_actions": "Stop asks for device authentication, so a mis-tap on a lock screen cannot end a long print.",
"notify_preview_image": "Skipped when the printer has no preview to serve, rather than sending an empty grey box.",
"notify_camera_snapshot": "What the bed actually looks like. Skipped on printers whose camera cannot take a still.",
"notify_tap_path": "For example /lovelace/printer. Left empty, an Android tap opens the printer camera and an iOS tap opens the app; this is the only way to make an iOS tap go anywhere specific."
}
},
"text": {
"name": "Custom text",
"description": "Write your own wording, or leave a field empty to keep the built-in, translated text. A placeholder the printer has not reported renders as nothing, so wrap anything optional in square brackets and the whole bracketed part disappears while its value is unknown, as in {example}. The brackets themselves are the syntax and are not shown; double them ([[ and ]]) for a bracket you want to keep. The title is always the printer name: Android fixes a live card's title when the card starts and cannot change it afterwards.",
"data": {
"notify_template_live": "Live print card",
"notify_template_completed": "Print finished",
"notify_template_stopped": "Print stopped",
"notify_template_soon": "Shortly before the end",
"notify_template_error": "Printer error",
"notify_template_runout": "Filament runout"
},
"data_description": {
"notify_template_live": "Placeholders: {fields_live}",
"notify_template_completed": "Placeholders: {fields_completed}",
"notify_template_stopped": "Placeholders: {fields_stopped}. Fewer than the others: the printer has already reset the progress, the job clock and the layer by the time a stop can be seen, so only what survives it is offered.",
"notify_template_soon": "Placeholders: {fields_finishing_soon}",
"notify_template_error": "Placeholders: {fields_error}",
"notify_template_runout": "Placeholders: {fields_filament_runout}"
}
}
}
},
"power": {
"title": "Power switch",
"description": "{power_help}",
"description": "Optional power switch entity ID (e.g. switch.smart_plug_name) to enable accurate 'Off' state detection.",
"data": {
"power_switch_enabled": "Enable Power Switch Detection",
"power_switch": "Power Switch Entity"
@@ -71,7 +172,8 @@
}
},
"error": {
"invalid_camera_url": "Enter a full URL including the scheme, e.g. http://192.168.1.50:8080/?action=stream or rtsp://192.168.1.50:554/stream."
"invalid_camera_url": "Enter a full URL including the scheme, e.g. http://192.168.1.50:8080/?action=stream or rtsp://192.168.1.50:554/stream.",
"unknown_placeholder": "That is not a placeholder this integration can fill. Check the list in the description above, and mind the spelling."
}
},
"entity": {
@@ -87,7 +189,6 @@
"position_z": { "name": "Position Z" },
"feedrate_pct": { "name": "Print Speed" },
"flowrate_pct": { "name": "Flow Rate" },
"system": { "name": "System" },
"model_info": { "name": "Model" },
"filament_status": {
"name": "Filament Status",
@@ -113,6 +214,9 @@
}
},
"used_material_length": { "name": "Used Material Length" },
"expected_material_length": { "name": "Expected Material Length" },
"expected_material_weight": { "name": "Expected Material Weight" },
"filament_consumption": { "name": "Filament Consumption" },
"print_job_time": { "name": "Print Job Time" },
"print_left_time": { "name": "Print Time Left" },
"real_time_flow": { "name": "Real-Time Flow" },
@@ -150,10 +254,7 @@
"print_tuning_pct": { "name": "Print Tuning" },
"nozzle_target": { "name": "Nozzle Target" },
"bed_target": { "name": "Bed Target" },
"chamber_target": { "name": "Chamber Target" },
"model_fan_pct": { "name": "Model Fan" },
"case_fan_pct": { "name": "Case Fan" },
"side_fan_pct": { "name": "Side Fan" }
"chamber_target": { "name": "Chamber Target" }
},
"fan": {
"model_fan": { "name": "Model Fan" },
@@ -163,9 +264,6 @@
"light": {
"light": { "name": "Light" }
},
"switch": {
"light": { "name": "Light" }
},
"camera": {
"printer_camera": { "name": "Printer Camera" }
},
@@ -193,6 +291,56 @@
"description": "The printer(s) to request info from. If omitted, all connected printers will be queried."
}
}
},
"set_cfs_material": {
"name": "Set CFS Material",
"description": "Write filament settings to one CFS slot. Only the fields you supply are changed; leave a field out to keep the value the printer already has. Material type is required and cannot be blank, and a color, if you give one, must be six hex digits.",
"fields": {
"device_id": {
"name": "Device",
"description": "The printer(s) to write to."
},
"box_id": {
"name": "Box ID",
"description": "The box id as the printer reports it. See the box_id attribute on the slot's sensor; it is usually 1 for the first CFS unit."
},
"slot_id": {
"name": "Slot ID",
"description": "Slot number within the box, starting at 0."
},
"type": {
"name": "Material Type",
"description": "Filament type, for example PLA, PETG, ABS or TPU."
},
"name": {
"name": "Material Name",
"description": "Product name of the filament, for example Hyper PLA."
},
"vendor": {
"name": "Vendor",
"description": "Manufacturer or brand name."
},
"color": {
"name": "Color",
"description": "Color as six hex digits, for example #06c84f. For a multi-color spool, leave this field out rather than sending an empty value; the other fields still write."
},
"min_temp": {
"name": "Minimum Temperature",
"description": "Lowest printing temperature, in °C."
},
"max_temp": {
"name": "Maximum Temperature",
"description": "Highest printing temperature, in °C. Must not be below the minimum."
},
"pressure": {
"name": "Pressure Advance",
"description": "Pressure advance value, between 0 and 1."
},
"rfid": {
"name": "RFID",
"description": "The printer's material id. Leaving it empty omits the field, so the existing tag association is preserved."
}
}
}
}
}
@@ -21,42 +21,143 @@
"not_K": "No es una impresora de la serie K"
}
},
"common": {
"title_fallback": "Impresora Creality",
"channel_live": "Impresión 3D",
"channel_finished": "Impresión 3D finalizada",
"channel_alerts": "Alertas de impresión 3D",
"channel_soon": "Impresión 3D a punto de finalizar",
"action_pause": "Pausar",
"action_resume": "Reanudar",
"action_stop": "Detener",
"action_dismiss": "Ocultar",
"status_starting": "Iniciando",
"status_paused": "En pausa",
"status_finishing": "Finalizando",
"body_progress": "{progress}%",
"body_paused": "En pausa al {progress}%",
"body_paused_unknown": "En pausa",
"body_layer": "{layer}/{total_layers}",
"body_time_left": "{duration}",
"body_fallback": "Imprimiendo",
"duration_hours_minutes": "{hours} h {minutes} min",
"duration_minutes": "{minutes} min",
"duration_seconds": "{seconds} s",
"filament_length": "{metres} m",
"completed": "{device} ha terminado.",
"stopped": "{device} se ha detenido al {progress}%",
"completed_detailed": "{device} ha terminado. Filamento consumido: {filament}.",
"error": "Error de {device} - {key} [{code}]",
"filament_runout": "{device} se ha quedado sin filamento. Estado de la impresión: {state}. Cambia el filamento.",
"finishing_soon": "{device} terminará en {minutes} minutos."
},
"exceptions": {
"unsupported_ha_version": {
"message": "Esta versión de la integración Creality WebSocket necesita Home Assistant {minimum} o posterior, pero este sistema ejecuta la versión {running}. Actualiza Home Assistant o instala en su lugar la versión 0.9.7 de la integración."
}
},
"selector": {
"camera_mode": {
"options": {
"auto": "Auto (detectar por modelo)",
"mjpeg": "MJPEG (familia K1)",
"webrtc": "WebRTC a través de go2rtc (familia K2)",
"webrtc_direct": "WebRTC directo, sin go2rtc (alternativa)",
"custom": "URL de cámara personalizada (MJPEG / RTSP)"
}
}
},
"options": {
"step": {
"init": {
"title": "Configuración de la impresora",
"description": "Elige un grupo de ajustes para editar. Cada grupo se abre en su propia página, por lo que sus opciones siempre se cargan actualizadas.",
"description": "Elige un grupo de ajustes para editar. Cada grupo se abre en su propia página, y al enviar esa página se guarda y se aplica de inmediato. No hay nada que confirmar después: cierra este diálogo cuando hayas terminado.",
"menu_options": {
"camera": "Cámara",
"notifications": "Notificaciones",
"power": "Interruptor de encendido",
"connection": "Conexión y rendimiento",
"save": "Guardar y aplicar"
"connection": "Conexión y rendimiento"
}
},
"camera": {
"title": "Cámara",
"description": "{camera_help}",
"description": "Modo de transmisión de la cámara. «Auto» lo detecta a partir del modelo de impresora. WebRTC a través de go2rtc es la opción predeterminada en las impresoras de la familia K2; WebRTC directo es una alternativa que hace la señalización contra la propia impresora (sin go2rtc): pruébala si la predeterminada no funciona, por ejemplo en firmware reciente de la K1C. El modo personalizado permite apuntar a cualquier URL http(s) MJPEG/snapshot o a un flujo rtsp:// (servido a través de go2rtc). Deja el puerto RTSP de go2rtc en 0 salvo que HLS o camera.record necesiten un puerto distinto del predeterminado. Al enviar el formulario se guarda esta página y vuelves al menú.",
"data": {
"camera_mode": "Modo de transmisión de la cámara",
"go2rtc_url": "Servidor o dirección externa de go2rtc (si es necesario)",
"go2rtc_port": "Puerto externo de go2rtc",
"go2rtc_rtsp_port": "Puerto RTSP de go2rtc (0 = auto: 18554 integrado, 8554 externo)",
"custom_camera_url": "URL de cámara personalizada (MJPEG/snapshot http(s) o rtsp://)"
}
},
"notifications": {
"title": "Notificaciones",
"description": "Elige a dónde van las notificaciones y, después, de qué quieres que te avisen. Al enviar el formulario se guarda esta página y se aplica de inmediato.",
"data": {
"notify_device": "Dispositivo de notificación",
"notify_completed": "Notificar al finalizar",
"notify_error": "Notificar en caso de error",
"notify_minutes_to_end": "Notificar antes de finalizar",
"minutes_to_end_value": "Minutos antes de finalizar"
"notify_targets": "Destinos de notificación"
},
"data_description": {
"notify_targets": "Elige uno o varios. Solo los destinos de la aplicación complementaria de Home Assistant pueden mostrar la tarjeta de impresión en vivo, la vista previa del G-code o los botones; el resto de plataformas de notificación reciben solo el título y el mensaje."
},
"sections": {
"events": {
"name": "De qué quiero que me avisen",
"description": "La tarjeta de impresión en vivo requiere Home Assistant 2026.7 o posterior, además de iOS 17.2+ o Android 16+; en impresiones muy largas, iOS la cierra al cabo de 8 horas.",
"data": {
"notify_live": "Tarjeta de impresión en vivo",
"notify_completed": "Cuando termina una impresión",
"notify_error": "Errores y filamento agotado",
"notify_minutes_to_end": "Poco antes de que termine una impresión",
"minutes_to_end_value": "Con cuánta antelación"
},
"data_description": {
"notify_live": "Una sola notificación para toda la impresión que se actualiza en su sitio, con una barra de progreso y una cuenta atrás que avanza en el teléfono.",
"notify_completed": "Cubre los dos finales: una impresión que ha terminado y otra que se ha detenido, ya sea desde la impresora, la aplicación de Creality o Home Assistant.",
"notify_error": "Un error de la impresora o una bobina que se ha agotado.",
"notify_minutes_to_end": "Un aviso para ir a ver las últimas capas, por separado para que la tarjeta en vivo no pueda sustituirlo."
}
},
"extras": {
"name": "Botones, imágenes y pulsaciones",
"description": "Todo esto necesita un destino de la aplicación complementaria y el resto de plataformas de notificación lo ignoran.",
"data": {
"notify_actions": "Botones Pausar, Reanudar y Detener",
"notify_preview_image": "Vista previa del G-code como icono",
"notify_camera_snapshot": "Captura de la cámara al terminar la impresión",
"notify_tap_path": "Ruta del panel que se abre al pulsar"
},
"data_description": {
"notify_actions": "«Detener» pide autenticación en el dispositivo, así que una pulsación accidental en la pantalla de bloqueo no puede acabar con una impresión larga.",
"notify_preview_image": "Se omite cuando la impresora no tiene ninguna vista previa que ofrecer, en lugar de enviar un recuadro gris vacío.",
"notify_camera_snapshot": "El aspecto real de la cama. Se omite en impresoras cuya cámara no puede tomar una imagen fija.",
"notify_tap_path": "P. ej. /lovelace/printer. Si se deja vacía, en Android la pulsación abre la cámara de la impresora y en iOS abre la aplicación; es la única forma de que en iOS la pulsación lleve a una vista concreta."
}
},
"text": {
"name": "Texto personalizado",
"description": "Escribe tu propio texto, o deja un campo vacío para conservar el texto integrado y ya traducido. Un marcador de posición cuyo valor no haya comunicado la impresora no muestra nada, así que encierra entre corchetes todo lo que sea opcional: la parte entre corchetes desaparece por completo mientras su valor sea desconocido, como en {example}. Los corchetes en sí son la sintaxis y no se muestran; duplícalos ([[ y ]]) cuando quieras conservar un corchete literal. El título es siempre el nombre de la impresora: en Android el título de la tarjeta en vivo se fija al crearse la tarjeta y ya no puede cambiarse.",
"data": {
"notify_template_live": "Tarjeta de impresión en vivo",
"notify_template_completed": "Impresión terminada",
"notify_template_stopped": "Impresión detenida",
"notify_template_soon": "Poco antes del final",
"notify_template_error": "Error de la impresora",
"notify_template_runout": "Filamento agotado"
},
"data_description": {
"notify_template_live": "Marcadores de posición: {fields_live}",
"notify_template_completed": "Marcadores de posición: {fields_completed}",
"notify_template_stopped": "Marcadores de posición: {fields_stopped}. Menos que en los demás: cuando se detecta una detención, la impresora ya ha reiniciado el progreso, el cronómetro del trabajo y la capa, así que solo se ofrece lo que sobrevive a ello.",
"notify_template_soon": "Marcadores de posición: {fields_finishing_soon}",
"notify_template_error": "Marcadores de posición: {fields_error}",
"notify_template_runout": "Marcadores de posición: {fields_filament_runout}"
}
}
}
},
"power": {
"title": "Interruptor de encendido",
"description": "{power_help}",
"description": "ID de entidad opcional de un interruptor de encendido (p. ej. switch.smart_plug_name) para detectar con precisión el estado «Apagada».",
"data": {
"power_switch_enabled": "Activar la detección del interruptor de encendido",
"power_switch": "Entidad del interruptor de encendido"
@@ -71,7 +172,8 @@
}
},
"error": {
"invalid_camera_url": "Introduce una URL completa incluyendo el esquema, p. ej. http://192.168.1.50:8080/?action=stream o rtsp://192.168.1.50:554/stream."
"invalid_camera_url": "Introduce una URL completa incluyendo el esquema, p. ej. http://192.168.1.50:8080/?action=stream o rtsp://192.168.1.50:554/stream.",
"unknown_placeholder": "Ese no es un marcador de posición que esta integración pueda rellenar. Consulta la lista que aparece en la descripción de arriba y comprueba que esté bien escrito."
}
},
"entity": {
@@ -87,7 +189,6 @@
"position_z": { "name": "Posición Z" },
"feedrate_pct": { "name": "Velocidad de impresión" },
"flowrate_pct": { "name": "Tasa de flujo" },
"system": { "name": "Sistema" },
"model_info": { "name": "Modelo" },
"filament_status": {
"name": "Estado del filamento",
@@ -113,6 +214,9 @@
}
},
"used_material_length": { "name": "Material usado" },
"expected_material_length": { "name": "Material estimado" },
"expected_material_weight": { "name": "Peso estimado del material" },
"filament_consumption": { "name": "Consumo de filamento" },
"print_job_time": { "name": "Tiempo de trabajo de impresión" },
"print_left_time": { "name": "Tiempo restante de impresión" },
"real_time_flow": { "name": "Flujo en tiempo real" },
@@ -132,9 +236,9 @@
"active_filament_slot": { "name": "Ranura de filamento activa" },
"cfs_box_temp": { "name": "Temperatura de la caja CFS {box_id}" },
"cfs_box_humidity": { "name": "Humedad de la caja CFS {box_id}" },
"cfs_slot_filament": { "name": "Filamento — caja CFS {box_id}, ranura {slot}" },
"cfs_slot_color": { "name": "Color — caja CFS {box_id}, ranura {slot}" },
"cfs_slot_percent": { "name": "Restante — caja CFS {box_id}, ranura {slot}" },
"cfs_slot_filament": { "name": "Filamento (caja CFS {box_id}, ranura {slot})" },
"cfs_slot_color": { "name": "Color (caja CFS {box_id}, ranura {slot})" },
"cfs_slot_percent": { "name": "Restante (caja CFS {box_id}, ranura {slot})" },
"cfs_ext_filament": { "name": "Filamento externo CFS" },
"cfs_ext_color": { "name": "Color externo CFS" },
"cfs_ext_percent": { "name": "Restante externo CFS" }
@@ -150,10 +254,7 @@
"print_tuning_pct": { "name": "Ajuste de impresión" },
"nozzle_target": { "name": "Objetivo de la boquilla" },
"bed_target": { "name": "Objetivo de la cama" },
"chamber_target": { "name": "Objetivo de la cámara" },
"model_fan_pct": { "name": "Ventilador del modelo" },
"case_fan_pct": { "name": "Ventilador de la carcasa" },
"side_fan_pct": { "name": "Ventilador lateral" }
"chamber_target": { "name": "Objetivo de la cámara" }
},
"fan": {
"model_fan": { "name": "Ventilador del modelo" },
@@ -163,9 +264,6 @@
"light": {
"light": { "name": "Luz" }
},
"switch": {
"light": { "name": "Luz" }
},
"camera": {
"printer_camera": { "name": "Cámara de la impresora" }
},
@@ -193,6 +291,56 @@
"description": "La(s) impresora(s) a las que solicitar información. Si se omite, se consultarán todas las impresoras conectadas."
}
}
},
"set_cfs_material": {
"name": "Establecer material CFS",
"description": "Escribe los ajustes de filamento en una ranura del CFS. Solo se cambian los campos que indiques; omite un campo para conservar el valor que ya tiene la impresora. El tipo de material es obligatorio y no puede ir vacío, y el color, si lo indicas, debe tener seis dígitos hexadecimales.",
"fields": {
"device_id": {
"name": "Dispositivo",
"description": "La(s) impresora(s) en las que escribir."
},
"box_id": {
"name": "ID de caja",
"description": "El id de la caja tal como lo indica la impresora. Consulta el atributo box_id del sensor de la ranura; normalmente es 1 para la primera unidad CFS."
},
"slot_id": {
"name": "ID de ranura",
"description": "Número de ranura dentro de la caja, empezando en 0."
},
"type": {
"name": "Tipo de material",
"description": "Tipo de filamento, por ejemplo PLA, PETG, ABS o TPU."
},
"name": {
"name": "Nombre del material",
"description": "Nombre comercial del filamento, por ejemplo Hyper PLA."
},
"vendor": {
"name": "Fabricante",
"description": "Fabricante o marca."
},
"color": {
"name": "Color",
"description": "Color en seis dígitos hexadecimales, por ejemplo #06c84f. Si la bobina es multicolor, omite este campo en lugar de enviarlo vacío; los demás campos sí se escriben."
},
"min_temp": {
"name": "Temperatura mínima",
"description": "Temperatura mínima de impresión, en °C."
},
"max_temp": {
"name": "Temperatura máxima",
"description": "Temperatura máxima de impresión, en °C. No puede ser inferior a la mínima."
},
"pressure": {
"name": "Avance de presión",
"description": "Valor de avance de presión, entre 0 y 1."
},
"rfid": {
"name": "RFID",
"description": "El id de material de la impresora. Si lo dejas vacío, el campo se omite y se conserva la asociación de etiqueta existente."
}
}
}
}
}
@@ -13,30 +13,51 @@
"editor_title": "Creality Printer Card Configuration",
"tab_entities": "Entities",
"tab_theme": "Theme",
"group_device": "Printer",
"group_entities": "Entities",
"group_layout": "Layout & Icons",
"group_action_colors": "Action Colors",
"group_action_colors": "Action Button Colors",
"group_toggle_colors": "Toggle Button Colors",
"group_status_area": "Status Area",
"group_telemetry": "Telemetry",
"note_device": "Picking a device fills in the fields below that are still empty. Use the button to replace every field, including ones you set yourself. The power switch is never filled in, because the integration does not provide one.",
"note_clear_resets": "Use Reset to Defaults at the bottom to undo these.",
"note_auto_colors": "Turn Automatic off to choose a color yourself.",
"btn_refill_from_device": "Fill all fields from device",
"btn_reset": "Reset to Defaults",
"status_device_filled": "Filled {filled} of {total} fields.",
"status_device_empty": "No entities from this integration were found on that device.",
"color_pause_bg": "Pause Button Background",
"color_pause_icon": "Pause Button Icon",
"color_resume_bg": "Resume Button Background",
"color_resume_icon": "Resume Button Icon",
"color_stop_bg": "Stop Button Background",
"color_stop_icon": "Stop Button Icon",
"color_light_on_bg": "Light On Background",
"color_light_off_bg": "Light Off Background",
"color_light_on_bg": "Light Button Background (On)",
"color_light_off_bg": "Light Button Background (Off)",
"color_light_icon_on": "Light Button Icon (On)",
"color_light_icon_off": "Light Button Icon (Off)",
"color_custom_bg": "Custom Button Background",
"color_custom_icon": "Custom Button Icon",
"color_power_on_bg": "Power Button Background (On)",
"color_power_off_bg": "Power Button Background (Off)",
"color_power_icon_on": "Power Button Icon (On)",
"color_power_icon_off": "Power Button Icon (Off)",
"color_custom_bg": "Custom Button Background (On)",
"color_custom_icon": "Custom Button Icon (On)",
"color_custom_off_bg": "Custom Button Background (Off)",
"color_custom_icon_off": "Custom Button Icon (Off)",
"color_status_icon": "Status Icon Color",
"color_progress_ring": "Progress Ring Color",
"color_status_bg": "Status Background",
"color_telemetry_icon": "Telemetry Icon Color",
"color_telemetry_text": "Telemetry Text Color",
"btn_save": "Save",
"btn_reset": "Reset to Defaults",
"color_picker_hint": "Click to open color picker",
"label_opacity": "Opacity",
"label_color_auto": "Automatic",
"helper_auto_status_icon": "Automatic: follows the print state, orange while paused, red on error, green when idle or finished.",
"helper_auto_progress_ring": "Automatic: follows the print state, matching the status icon.",
"helper_auto_status_bg": "Automatic: blends into the card background.",
"helper_auto_telemetry_icon": "Automatic: uses the theme's secondary text color.",
"helper_auto_telemetry_text": "Automatic: uses the theme's primary text color.",
"label_device": "Printer device",
"label_name": "Printer Name",
"label_camera": "Camera",
"label_status": "Print Status Sensor",
@@ -57,6 +78,13 @@
"label_custom_btn_icon": "Custom Button Icon",
"label_custom_btn_hidden": "Hide Custom Button",
"label_button_order": "Button Order (list)",
"label_hide_box_temp": "Hide Chamber Temperature",
"label_pause_btn_icon": "Pause Icon Override",
"label_resume_btn_icon": "Resume Icon Override",
"label_stop_btn_icon": "Stop Icon Override",
"label_light_btn_icon": "Light Icon Override",
"label_power_btn_icon": "Power Icon Override",
"helper_device": "Your printer, as set up by this integration",
"helper_name": "Display name for the printer card",
"helper_camera": "Camera entity for live video feed",
"helper_status": "Sensor showing current print status",
@@ -65,7 +93,7 @@
"helper_nozzle": "Sensor showing nozzle temperature",
"helper_bed": "Sensor showing bed temperature",
"helper_box": "Sensor showing chamber/enclosure temperature (optional)",
"helper_power": "Optional power switch entity for the printer (shows a Power button when set)",
"helper_power": "Your own smart plug for the printer, if you have one (shows a Power button when set). Not filled in from the device.",
"helper_show_power_button": "Show the Power button when a power switch entity is configured",
"helper_layer": "Sensor showing current print layer",
"helper_total_layers": "Sensor showing total print layers",
@@ -77,15 +105,7 @@
"helper_custom_btn_icon": "Icon for the custom button",
"helper_custom_btn_hidden": "Hide the custom button",
"helper_button_order": "List of buttons to show in order (pause, resume, stop, light, power, custom)",
"schema_button_order": "Button Order (pause, resume, stop, light, power, custom)",
"schema_hide_custom": "Hide Custom Button",
"schema_hide_box_temp": "Hide Chamber Temperature",
"schema_pause_icon": "Pause Icon Override",
"schema_resume_icon": "Resume Icon Override",
"schema_stop_icon": "Stop Icon Override",
"schema_light_icon": "Light Icon Override",
"schema_power_icon": "Power Icon Override",
"schema_custom_icon": "Custom Button Icon",
"helper_hide_box_temp": "Hide the chamber temperature pill even when a sensor is configured",
"editor_error_title": "Editor Error",
"editor_error_msg": "There was an error loading the visual editor. You can still edit your configuration using YAML.",
"editor_error_prefix": "Error:"
@@ -107,6 +127,43 @@
"schema_compact_view": "Compact View (Mini Mode)",
"schema_show_type_in_mini": "Show Filament Type in Mini Mode",
"tab_entities": "Entities",
"tab_theme": "Theme"
"tab_theme": "Theme",
"schema_view_mode": "Display Mode",
"view_mode_full": "Full",
"view_mode_compact": "Compact",
"toast_no_device": "Could not identify the printer for this card. Check the entities in the card configuration.",
"toast_multiple_devices": "This card mixes entities from more than one printer, so material editing is disabled.",
"toast_printer_busy": "Cannot edit material while the printer is busy",
"btn_edit": "Edit material",
"tooltip_edit_locked": "Editing is disabled while the printer is busy",
"tooltip_multicolour_readonly": "Multi-color spools cannot be edited",
"dialog_edit_title": "Edit material",
"dialog_edit_target": "Writing to box {box}, slot {slot}",
"label_material_type": "Material type",
"label_material_name": "Material name",
"label_material_vendor": "Vendor",
"label_material_color": "Color",
"label_material_min_temp": "Minimum temperature",
"label_material_max_temp": "Maximum temperature",
"label_material_pressure": "Pressure advance",
"btn_cancel": "Cancel",
"btn_save": "Save",
"btn_saving": "Saving…",
"toast_saved": "Material saved",
"toast_save_failed": "Could not save material: {error}",
"toast_temp_range_invalid": "Maximum temperature must not be below the minimum",
"toast_colour_invalid": "Color must be six hex digits, for example #06c84f",
"toast_type_required": "Material type is required",
"toast_external_not_supported": "This printer does not report a box id for the external spool, so it cannot be edited",
"warn_box_id_guessed": "The target box or slot was inferred from the card layout; check both match the printer before saving",
"label_color_presets": "Presets",
"label_preset_name": "Preset name",
"btn_save_preset": "Save preset",
"toast_preset_saved": "Preset “{name}” saved",
"toast_preset_deleted": "Preset “{name}” deleted",
"toast_preset_name_required": "Give the preset a name first",
"hint_delete_preset": "Dashed swatches are your own presets; right-click one to delete it.",
"view_mode_box": "Box (visual)",
"alt_cfs_box": "Creality CFS unit"
}
}
@@ -10,33 +10,54 @@
"chip_light": "Luz",
"chip_power": "Encendido",
"chip_custom": "Acción personalizada",
"editor_title": "Configuración de la tarjeta Creality",
"editor_title": "Configuración de la tarjeta de impresora Creality",
"tab_entities": "Entidades",
"tab_theme": "Tema",
"group_device": "Impresora",
"group_entities": "Entidades",
"group_layout": "Disposición e iconos",
"group_action_colors": "Colores de acción",
"group_action_colors": "Colores de los botones de acción",
"group_toggle_colors": "Colores de los botones de alternancia",
"group_status_area": "Área de estado",
"group_telemetry": "Telemetría",
"note_device": "Al elegir un dispositivo se rellenan los campos de abajo que aún están vacíos. Usa el botón para sustituir todos los campos, incluidos los que hayas establecido tú. El interruptor de encendido nunca se rellena, porque la integración no proporciona ninguno.",
"note_clear_resets": "Usa Restablecer valores predeterminados, al final del formulario, para deshacer estos cambios.",
"note_auto_colors": "Desactiva Automático para elegir tú mismo un color.",
"btn_refill_from_device": "Rellenar todos los campos desde el dispositivo",
"btn_reset": "Restablecer valores predeterminados",
"status_device_filled": "Se han rellenado {filled} de {total} campos.",
"status_device_empty": "No se han encontrado entidades de esta integración en ese dispositivo.",
"color_pause_bg": "Fondo del botón Pausar",
"color_pause_icon": "Icono del botón Pausar",
"color_resume_bg": "Fondo del botón Reanudar",
"color_resume_icon": "Icono del botón Reanudar",
"color_stop_bg": "Fondo del botón Detener",
"color_stop_icon": "Icono del botón Detener",
"color_light_on_bg": "Fondo de la luz encendida",
"color_light_off_bg": "Fondo de la luz apagada",
"color_light_icon_on": "Icono de la luz (encendida)",
"color_light_icon_off": "Icono de la luz (apagada)",
"color_custom_bg": "Fondo del botón personalizado",
"color_custom_icon": "Icono del botón personalizado",
"color_light_on_bg": "Fondo del botón de luz (encendida)",
"color_light_off_bg": "Fondo del botón de luz (apagada)",
"color_light_icon_on": "Icono del botón de luz (encendida)",
"color_light_icon_off": "Icono del botón de luz (apagada)",
"color_power_on_bg": "Fondo del botón de encendido (activado)",
"color_power_off_bg": "Fondo del botón de encendido (desactivado)",
"color_power_icon_on": "Icono del botón de encendido (activado)",
"color_power_icon_off": "Icono del botón de encendido (desactivado)",
"color_custom_bg": "Fondo del botón personalizado (activado)",
"color_custom_icon": "Icono del botón personalizado (activado)",
"color_custom_off_bg": "Fondo del botón personalizado (desactivado)",
"color_custom_icon_off": "Icono del botón personalizado (desactivado)",
"color_status_icon": "Color del icono de estado",
"color_progress_ring": "Color del anillo de progreso",
"color_status_bg": "Fondo de estado",
"color_status_bg": "Fondo del área de estado",
"color_telemetry_icon": "Color del icono de telemetría",
"color_telemetry_text": "Color del texto de telemetría",
"btn_save": "Guardar",
"btn_reset": "Restablecer valores predeterminados",
"color_picker_hint": "Haz clic para abrir el selector de color",
"label_opacity": "Opacidad",
"label_color_auto": "Automático",
"helper_auto_status_icon": "Automático: sigue el estado de impresión: naranja en pausa, rojo si hay error, verde en reposo o al terminar.",
"helper_auto_progress_ring": "Automático: sigue el estado de impresión, igual que el icono de estado.",
"helper_auto_status_bg": "Automático: se integra con el fondo de la tarjeta.",
"helper_auto_telemetry_icon": "Automático: usa el color de texto secundario del tema.",
"helper_auto_telemetry_text": "Automático: usa el color de texto principal del tema.",
"label_device": "Dispositivo de la impresora",
"label_name": "Nombre de la impresora",
"label_camera": "Cámara",
"label_status": "Sensor de estado de impresión",
@@ -57,6 +78,13 @@
"label_custom_btn_icon": "Icono del botón personalizado",
"label_custom_btn_hidden": "Ocultar el botón personalizado",
"label_button_order": "Orden de los botones (lista)",
"label_hide_box_temp": "Ocultar la temperatura de la cámara",
"label_pause_btn_icon": "Icono de pausa (sustitución)",
"label_resume_btn_icon": "Icono de reanudación (sustitución)",
"label_stop_btn_icon": "Icono de parada (sustitución)",
"label_light_btn_icon": "Icono de la luz (sustitución)",
"label_power_btn_icon": "Icono de encendido (sustitución)",
"helper_device": "Tu impresora, tal como la ha configurado esta integración",
"helper_name": "Nombre de visualización de la tarjeta de la impresora",
"helper_camera": "Entidad de cámara para vídeo en directo",
"helper_status": "Sensor que muestra el estado de impresión actual",
@@ -65,7 +93,7 @@
"helper_nozzle": "Sensor que muestra la temperatura de la boquilla",
"helper_bed": "Sensor que muestra la temperatura de la cama",
"helper_box": "Sensor que muestra la temperatura de la cámara/recinto (opcional)",
"helper_power": "Entidad del interruptor de encendido opcional (muestra un botón de encendido cuando se establece)",
"helper_power": "Tu propio enchufe inteligente para la impresora, si tienes uno (muestra un botón de encendido cuando se establece). No se rellena desde el dispositivo.",
"helper_show_power_button": "Mostrar el botón de encendido cuando hay un interruptor configurado",
"helper_layer": "Sensor que muestra la capa de impresión actual",
"helper_total_layers": "Sensor que muestra el total de capas de impresión",
@@ -77,15 +105,7 @@
"helper_custom_btn_icon": "Icono del botón personalizado",
"helper_custom_btn_hidden": "Ocultar el botón personalizado",
"helper_button_order": "Lista de botones en orden (pause, resume, stop, light, power, custom)",
"schema_button_order": "Orden de los botones (pause, resume, stop, light, power, custom)",
"schema_hide_custom": "Ocultar el botón personalizado",
"schema_hide_box_temp": "Ocultar la temperatura de la cámara",
"schema_pause_icon": "Icono de pausa (sustitución)",
"schema_resume_icon": "Icono de reanudación (sustitución)",
"schema_stop_icon": "Icono de parada (sustitución)",
"schema_light_icon": "Icono de la luz (sustitución)",
"schema_power_icon": "Icono de encendido (sustitución)",
"schema_custom_icon": "Icono del botón personalizado",
"helper_hide_box_temp": "Ocultar el indicador de temperatura de la cámara aunque haya un sensor configurado",
"editor_error_title": "Error del editor",
"editor_error_msg": "Se ha producido un error al cargar el editor visual. Aún puedes editar la configuración en YAML.",
"editor_error_prefix": "Error:"
@@ -101,12 +121,49 @@
"label_external_percent": "Porcentaje externo",
"label_box_temp": "Temperatura de la caja {box}",
"label_box_humidity": "Humedad de la caja {box}",
"label_slot_filament": "Filamento — caja {box}, ranura {slot}",
"label_slot_color": "Color — caja {box}, ranura {slot}",
"label_slot_percent": "Restante — caja {box}, ranura {slot}",
"label_slot_filament": "Filamento (caja {box}, ranura {slot})",
"label_slot_color": "Color (caja {box}, ranura {slot})",
"label_slot_percent": "Restante (caja {box}, ranura {slot})",
"schema_compact_view": "Vista compacta (modo mini)",
"schema_show_type_in_mini": "Mostrar el tipo de filamento en modo mini",
"tab_entities": "Entidades",
"tab_theme": "Tema"
"tab_theme": "Tema",
"schema_view_mode": "Modo de visualización",
"view_mode_full": "Completo",
"view_mode_compact": "Compacto",
"toast_no_device": "No se pudo identificar la impresora de esta tarjeta. Revisa las entidades en la configuración de la tarjeta.",
"toast_multiple_devices": "Esta tarjeta mezcla entidades de más de una impresora, por lo que la edición de material está desactivada.",
"toast_printer_busy": "No se puede editar el material mientras la impresora está ocupada",
"btn_edit": "Editar material",
"tooltip_edit_locked": "La edición está desactivada mientras la impresora está ocupada",
"tooltip_multicolour_readonly": "Las bobinas multicolor no se pueden editar",
"dialog_edit_title": "Editar material",
"dialog_edit_target": "Escribiendo en la caja {box}, ranura {slot}",
"label_material_type": "Tipo de material",
"label_material_name": "Nombre del material",
"label_material_vendor": "Fabricante",
"label_material_color": "Color",
"label_material_min_temp": "Temperatura mínima",
"label_material_max_temp": "Temperatura máxima",
"label_material_pressure": "Avance de presión",
"btn_cancel": "Cancelar",
"btn_save": "Guardar",
"btn_saving": "Guardando…",
"toast_saved": "Material guardado",
"toast_save_failed": "No se pudo guardar el material: {error}",
"toast_temp_range_invalid": "La temperatura máxima no puede ser inferior a la mínima",
"toast_colour_invalid": "El color debe tener seis dígitos hexadecimales, por ejemplo #06c84f",
"toast_type_required": "El tipo de material es obligatorio",
"toast_external_not_supported": "Esta impresora no informa un id de caja para la bobina externa, por lo que no se puede editar",
"warn_box_id_guessed": "La caja o la ranura de destino se han inferido del diseño de la tarjeta: comprueba que ambas coinciden con la impresora antes de guardar",
"label_color_presets": "Preajustes",
"label_preset_name": "Nombre del preajuste",
"btn_save_preset": "Guardar preajuste",
"toast_preset_saved": "Preajuste «{name}» guardado",
"toast_preset_deleted": "Preajuste «{name}» eliminado",
"toast_preset_name_required": "Primero ponle un nombre al preajuste",
"hint_delete_preset": "Los círculos discontinuos son tus preajustes: haz clic derecho en uno para eliminarlo.",
"view_mode_box": "Caja (visual)",
"alt_cfs_box": "Unidad CFS de Creality"
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff