{ "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." } } } } }