347 lines
16 KiB
JSON
347 lines
16 KiB
JSON
{
|
|
"config": {
|
|
"step": {
|
|
"user": {
|
|
"title": "Connect to Creality Printer",
|
|
"description": "Enter the IP address of your Creality K-series printer. The printer must be unlocked (root access not required) and on the same network.",
|
|
"data": {
|
|
"host": "IP Address",
|
|
"name": "Friendly Name"
|
|
}
|
|
}
|
|
},
|
|
"error": {
|
|
"cannot_connect": "Failed to connect to printer. Ensure IP is correct and printer is ON.",
|
|
"not_K": "Connection refused or not a supported Creality K-series printer.",
|
|
"already_configured": "This printer is already configured."
|
|
},
|
|
"abort": {
|
|
"already_configured": "Device is already configured",
|
|
"cannot_connect": "Failed to connect",
|
|
"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, 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"
|
|
}
|
|
},
|
|
"camera": {
|
|
"title": "Camera",
|
|
"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_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": "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"
|
|
}
|
|
},
|
|
"connection": {
|
|
"title": "Connection & performance",
|
|
"data": {
|
|
"host": "Printer IP Address",
|
|
"polling_rate": "Polling Rate (seconds, 0 = real-time)"
|
|
}
|
|
}
|
|
},
|
|
"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.",
|
|
"unknown_placeholder": "That is not a placeholder this integration can fill. Check the list in the description above, and mind the spelling."
|
|
}
|
|
},
|
|
"entity": {
|
|
"sensor": {
|
|
"bed_temperature": { "name": "Bed Temperature" },
|
|
"chamber_temperature": { "name": "Chamber Temperature" },
|
|
"nozzle_temperature": { "name": "Nozzle Temperature" },
|
|
"print_progress": { "name": "Print Progress" },
|
|
"total_layers": { "name": "Total Layers" },
|
|
"current_layer": { "name": "Working Layer" },
|
|
"position_x": { "name": "Position X" },
|
|
"position_y": { "name": "Position Y" },
|
|
"position_z": { "name": "Position Z" },
|
|
"feedrate_pct": { "name": "Print Speed" },
|
|
"flowrate_pct": { "name": "Flow Rate" },
|
|
"model_info": { "name": "Model" },
|
|
"filament_status": {
|
|
"name": "Filament Status",
|
|
"state": {
|
|
"normal": "Normal",
|
|
"runout": "Filament Runout",
|
|
"unknown": "Unknown"
|
|
}
|
|
},
|
|
"print_status": {
|
|
"name": "Print Status",
|
|
"state": {
|
|
"off": "Off",
|
|
"unknown": "Unknown",
|
|
"error": "Error",
|
|
"self-testing": "Self-Testing",
|
|
"completed": "Completed",
|
|
"paused": "Paused",
|
|
"stopped": "Stopped",
|
|
"printing": "Printing",
|
|
"processing": "Processing",
|
|
"idle": "Idle"
|
|
}
|
|
},
|
|
"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" },
|
|
"current_object": { "name": "Current Object" },
|
|
"object_count": { "name": "Object Count" },
|
|
"print_control": {
|
|
"name": "Print Control",
|
|
"state": {
|
|
"queued": "Queued",
|
|
"ok": "OK",
|
|
"unknown": "Unknown"
|
|
}
|
|
},
|
|
"max_nozzle_temp": { "name": "Max Nozzle Temperature" },
|
|
"max_bed_temp": { "name": "Max Bed Temperature" },
|
|
"max_chamber_temp": { "name": "Max Chamber Temperature" },
|
|
"active_filament_slot": { "name": "Active Filament Slot" },
|
|
"cfs_box_temp": { "name": "CFS Box {box_id} Temperature" },
|
|
"cfs_box_humidity": { "name": "CFS Box {box_id} Humidity" },
|
|
"cfs_slot_filament": { "name": "CFS Box {box_id} Slot {slot} Filament" },
|
|
"cfs_slot_color": { "name": "CFS Box {box_id} Slot {slot} Color" },
|
|
"cfs_slot_percent": { "name": "CFS Box {box_id} Slot {slot} Remaining" },
|
|
"cfs_ext_filament": { "name": "CFS External Filament" },
|
|
"cfs_ext_color": { "name": "CFS External Color" },
|
|
"cfs_ext_percent": { "name": "CFS External Remaining" }
|
|
},
|
|
"button": {
|
|
"home_xyz": { "name": "Home (XY then Z)" },
|
|
"pause_print": { "name": "Pause Print" },
|
|
"resume_print": { "name": "Resume Print" },
|
|
"stop_print": { "name": "Stop Print" },
|
|
"reconnect": { "name": "Reconnect" }
|
|
},
|
|
"number": {
|
|
"print_tuning_pct": { "name": "Print Tuning" },
|
|
"nozzle_target": { "name": "Nozzle Target" },
|
|
"bed_target": { "name": "Bed Target" },
|
|
"chamber_target": { "name": "Chamber Target" }
|
|
},
|
|
"fan": {
|
|
"model_fan": { "name": "Model Fan" },
|
|
"case_fan": { "name": "Case Fan" },
|
|
"side_fan": { "name": "Side Fan" }
|
|
},
|
|
"light": {
|
|
"light": { "name": "Light" }
|
|
},
|
|
"camera": {
|
|
"printer_camera": { "name": "Printer Camera" }
|
|
},
|
|
"image": {
|
|
"current_print_preview": { "name": "Current Print Preview" }
|
|
}
|
|
},
|
|
"services": {
|
|
"diagnostic_dump": {
|
|
"name": "Diagnostic Dump",
|
|
"description": "Dump all WebSocket telemetry data from connected Creality printers to JSON format for troubleshooting and analysis.",
|
|
"fields": {
|
|
"include_sensitive_data": {
|
|
"name": "Include Sensitive Data",
|
|
"description": "Whether to include potentially sensitive data in the diagnostic output (currently unused, reserved for future use)"
|
|
}
|
|
}
|
|
},
|
|
"request_cfs_info": {
|
|
"name": "Request CFS Info",
|
|
"description": "Manually request the printer to send the latest CFS (multifilament) information including temperatures, humidity, and filament details.",
|
|
"fields": {
|
|
"device_id": {
|
|
"name": "Device",
|
|
"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."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|