Impresión terminada
Enciende una lámpara, envía una notificación al teléfono o anuncia que la pieza está lista.
Home Assistant puede consultar PrintDeck en tu red local, convertir sus datos normalizados de impresora en entidades y reaccionar cada vez que cambia el estado de una impresión.
La integración PrintDeck detecta dispositivos compatibles, solicita el token de Unified API en la interfaz de Home Assistant y crea automáticamente las entidades disponibles de las impresoras.
Enciende una lámpara, envía una notificación al teléfono o anuncia que la pieza está lista.
Reacciona cuando el progreso supere el 25 %, 50 % o 75 % para cambiar una luz indicadora o actualizar un panel.
Reacciona ante trabajos pausados, fallidos o cancelados antes de volver al taller.
Muestra la conexión, las temperaturas, el tiempo restante y la capa actual en un único panel local.
HACS instala la integración mantenida de PrintDeck. Después, todo ocurre en la interfaz normal de Home Assistant: detección, introducción del token, dispositivos, sensores y automatizaciones.
La misma red localHome Assistant y PrintDeck deben poder comunicarse entre sí.
Firmware actual de PrintDeckActualiza el monitor antes de conectar la integración.
HACS instaladoSi todavía no tienes HACS, instálalo primero con la guía oficial.
Abre PrintDeck Web Config, elige Ajustes > Unified Printer API, actívala y copia el token generado. Guárdalo en privado; pegarás el token sin modificar en Home Assistant, sin añadir la palabra Bearer.
Usa el botón de abajo. Abre el repositorio personalizado de PrintDeck directamente en HACS. Si el botón no puede acceder a tu Home Assistant, utiliza la ruta manual indicada debajo.
Abre HACS > Integraciones > menú de tres puntos > Repositorios personalizados. Pega https://github.com/PrintDeck/home-assistant, elige Integración como tipo y selecciona Añadir.
Leer la guía oficial de repositorios personalizados de HACSEn HACS, selecciona PrintDeck, elige Descargar e instala la versión más reciente. Reinicia Home Assistant cuando HACS lo solicite. Actualizar el navegador no es reiniciar.
Abre Ajustes > Dispositivos y servicios > Añadir integración y busca PrintDeck. Elige un monitor detectado o introduce printdeck.local o su IP local. Pega el token de Unified API sin modificar y envía el formulario.
Home Assistant muestra el monitor PrintDeck y cada impresora configurada. Cámbiales el nombre o asigna áreas si te resulta útil y elige Finalizar. Usa Añadir concentrador solo si tienes otro monitor PrintDeck físico.
Abre la integración PrintDeck. Deberías ver un concentrador y un dispositivo por impresora. Cada impresora expone el progreso, la fase, la actividad, las temperaturas, las capas, el tiempo, los datos de conexión, la dirección de red y el puerto de red cuando están disponibles.
Añade una impresora en PrintDeck y Home Assistant creará su dispositivo y sus entidades tras el siguiente ciclo de consulta. Elimina una impresora y la versión 0.1.2 o posterior de la integración eliminará su dispositivo y sus entidades de Home Assistant tras la siguiente actualización completa. Un problema temporal de conexión nunca activa la limpieza. Eliminar una impresora rompe intencionadamente las automatizaciones que hacen referencia a sus entidades; si solo cambió la dirección, edita la impresora guardada.
Este ejemplo utiliza el editor visual de automatizaciones. Funciona con cualquier porcentaje, incluidos 82% u 88%.
Elige Estado numérico, selecciona la entidad Progreso de impresión de la impresora y establece Por encima de en 74,9.
Elige Estado, selecciona la entidad Fase de impresión de la misma impresora y establece el estado en Printing.
Elige Luz: Encender y selecciona una luz. Usa Encender en lugar de Alternar para que el resultado sea predecible.
Pon un nombre a la automatización y guárdala. Ejecutar acciones solo prueba la luz; una impresión corta prueba el disparador y la condición.
La prueba Por encima de de Home Assistant es estricta. Un umbral de 74,9 se activa cuando el sensor informa por primera vez de 75 o más. La condición Printing evita que un progreso antiguo encienda la luz con la impresora inactiva.
Importa un blueprint y elige el sensor de la impresora y la luz en las listas de Home Assistant.
Confirma que HACS la descargó, reinicia Home Assistant y actualiza el navegador después del reinicio.
Actualiza el monitor PrintDeck y vuelve a intentar la conexión. Este mensaje significa que el monitor todavía no anuncia compatibilidad con la integración nativa.
Mantén Home Assistant y PrintDeck en la misma red local. Si printdeck.local no se resuelve, introduce la IP local que muestra PrintDeck.
Copia un token nuevo desde PrintDeck Web Config y pégalo exactamente. No añadas Bearer en el formulario de la integración nativa.
Selecciona esa impresora en PrintDeck para que tenga una conexión completa en tiempo real. Algunas impresoras inactivas solo ofrecen datos resumidos.
Abre la automatización y elige Trazas. La traza muestra si se activó el disparador de progreso y si se cumplió la condición Printing.
Se recomienda la integración nativa anterior. Abre esta alternativa avanzada solo si no puedes usar HACS o si quieres mantener los sensores REST manualmente.
Abre Web Config en PrintDeck, elige Unified Printer API, actívala y copia el token de acceso generado.
Solicita la lista de impresoras y anota el ID de la impresora que quieres supervisar.
curl http://PRINTDECK-IP/v1/printers \
-H 'Authorization: Bearer pd_your_token_here'Incluye la palabra Bearer en el valor del secreto.
printdeck_api_bearer: "Bearer pd_your_token_here"Esto realiza una solicitud cada 10 segundos. Cambia PRINTDECK-IP y el ID de impresora 1 en la URL.
rest:
- resource: "http://PRINTDECK-IP/v1/printers/1/status"
method: GET
headers:
Authorization: !secret printdeck_api_bearer
scan_interval: 10
timeout: 5
sensor:
- name: "PrintDeck Phase"
unique_id: printdeck_printer_1_phase
value_template: "{{ value_json.status.job.phase }}"Valida el YAML en Herramientas para desarrolladores, reinicia Home Assistant y comprueba que la entidad PrintDeck Phase tenga un valor.
Sustituye light.living_room por el ID de entidad de tu lámpara.
- alias: "PrintDeck - light on when print completes"
id: printdeck_light_on_when_print_completes
triggers:
- trigger: state
entity_id: sensor.printdeck_phase
to: "completed"
conditions:
- condition: template
value_template: >-
{{ trigger.from_state is not none and
trigger.from_state.state in ['preparing', 'printing', 'paused'] }}
actions:
- action: light.turn_on
target:
entity_id: light.living_room
mode: singleObserva cómo la entidad de fase pasa a completed. Si la lámpara no se enciende, abre el seguimiento de la automatización para ver los resultados del disparador y de la condición.
La fase del trabajo es la mejor opción para la mayoría de las automatizaciones. La actividad del trabajo expone las actividades detalladas que controlan las reacciones de PrintDeck cuando la impresora las comunica.
Todos los valores de fase de trabajo compatibles:
unknownidlepreparingprintingpausedcompletedfailedcancelledTodos los valores de actividad de trabajo compatibles:
unknownstandbypreparingnozzle_heatingbed_heatinghomingbed_levelingnozzle_cleaningcalibratingfilament_changingfilament_unloadingfilament_loadingfilament_purgingprintingpausedcompletedfailedcancelledNo necesitas una entidad por cada valor. El sensor PrintDeck Activity cambia entre todas las actividades indicadas y una automatización puede reaccionar al valor que elijas.
connection.statestopped waiting_for_network connecting online offlineconnection.reachabilityunknown online offlineconnection.detail_levelsummary fulljob.kindprint calibrationLa disponibilidad de actividades detalladas depende de los datos que comunique la impresora conectada. El valor unknown de la API utiliza la reacción unavailable de PrintDeck como alternativa. La impresora seleccionada proporciona datos completos en tiempo real; las demás impresoras guardadas pueden proporcionar datos resumidos según el intervalo configurado de actualización de la lista de impresoras.
La integración nativa crea estas entidades automáticamente. Este paquete YAML se conserva para instalaciones REST manuales avanzadas.
rest:
- resource: "http://PRINTDECK-IP/v1/printers/1/status"
method: GET
headers:
Authorization: !secret printdeck_api_bearer
scan_interval: 10
timeout: 5
sensor:
- name: "PrintDeck Printer ID"
unique_id: printdeck_printer_1_id
value_template: "{{ value_json.status.printer_id }}"
- name: "PrintDeck Connection"
unique_id: printdeck_printer_1_connection
value_template: "{{ value_json.status.connection.state }}"
- name: "PrintDeck Reachability"
unique_id: printdeck_printer_1_reachability
value_template: "{{ value_json.status.connection.reachability }}"
- name: "PrintDeck Detail Level"
unique_id: printdeck_printer_1_detail_level
value_template: "{{ value_json.status.connection.detail_level }}"
- name: "PrintDeck Update Marker"
unique_id: printdeck_printer_1_updated_at_ms
value_template: "{{ value_json.status.connection.updated_at_ms }}"
unit_of_measurement: "ms"
- name: "PrintDeck Phase"
unique_id: printdeck_printer_1_phase
value_template: "{{ value_json.status.job.phase }}"
- name: "PrintDeck Job Kind"
unique_id: printdeck_printer_1_job_kind
value_template: "{{ value_json.status.job.kind }}"
- name: "PrintDeck Activity"
unique_id: printdeck_printer_1_activity
value_template: "{{ value_json.status.job.activity }}"
- name: "PrintDeck Job Name"
unique_id: printdeck_printer_1_job_name
value_template: "{{ value_json.status.job.name | default('none', true) }}"
- name: "PrintDeck Progress"
unique_id: printdeck_printer_1_progress
value_template: "{{ value_json.status.job.progress_percent }}"
availability: >-
{{ value_json.status.connection.detail_level == 'full' and
not value_json.status.connection.stale }}
unit_of_measurement: "%"
- name: "PrintDeck Elapsed"
unique_id: printdeck_printer_1_elapsed
value_template: "{{ value_json.status.job.elapsed_seconds }}"
availability: >-
{{ value_json.status.connection.detail_level == 'full' and
not value_json.status.connection.stale }}
device_class: duration
unit_of_measurement: "s"
- name: "PrintDeck Remaining"
unique_id: printdeck_printer_1_remaining
value_template: "{{ value_json.status.job.remaining_seconds }}"
availability: "{{ not value_json.status.connection.stale }}"
device_class: duration
unit_of_measurement: "s"
- name: "PrintDeck Current Layer"
unique_id: printdeck_printer_1_current_layer
value_template: "{{ value_json.status.job.current_layer }}"
availability: >-
{{ value_json.status.connection.detail_level == 'full' and
not value_json.status.connection.stale }}
- name: "PrintDeck Total Layers"
unique_id: printdeck_printer_1_total_layers
value_template: "{{ value_json.status.job.total_layers }}"
availability: >-
{{ value_json.status.connection.detail_level == 'full' and
not value_json.status.connection.stale }}
- name: "PrintDeck Nozzle Temperature"
unique_id: printdeck_printer_1_nozzle_temperature
value_template: "{{ value_json.status.temperatures.nozzle_current_c }}"
availability: >-
{{ value_json.status.temperatures.nozzle_current_c is not none and
not value_json.status.connection.stale }}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
- name: "PrintDeck Nozzle Target"
unique_id: printdeck_printer_1_nozzle_target
value_template: "{{ value_json.status.temperatures.nozzle_target_c }}"
availability: >-
{{ value_json.status.temperatures.nozzle_target_c is not none and
not value_json.status.connection.stale }}
device_class: temperature
unit_of_measurement: "°C"
- name: "PrintDeck Bed Temperature"
unique_id: printdeck_printer_1_bed_temperature
value_template: "{{ value_json.status.temperatures.bed_current_c }}"
availability: >-
{{ value_json.status.temperatures.bed_current_c is not none and
not value_json.status.connection.stale }}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
- name: "PrintDeck Bed Target"
unique_id: printdeck_printer_1_bed_target
value_template: "{{ value_json.status.temperatures.bed_target_c }}"
availability: >-
{{ value_json.status.temperatures.bed_target_c is not none and
not value_json.status.connection.stale }}
device_class: temperature
unit_of_measurement: "°C"
- name: "PrintDeck Chamber Temperature"
unique_id: printdeck_printer_1_chamber_temperature
value_template: "{{ value_json.status.temperatures.chamber_current_c }}"
availability: >-
{{ value_json.status.temperatures.chamber_current_c is not none and
not value_json.status.connection.stale }}
device_class: temperature
state_class: measurement
unit_of_measurement: "°C"
binary_sensor:
- name: "PrintDeck Data Stale"
unique_id: printdeck_printer_1_data_stale
value_template: "{{ value_json.status.connection.stale }}"
device_class: problem
- name: "PrintDeck Online"
unique_id: printdeck_printer_1_online
value_template: "{{ value_json.status.connection.state == 'online' }}"
device_class: connectivity
Guarda el token correspondiente en secrets.yaml y sustituye PRINTDECK-IP y el ID de impresora 1. Si configuration.yaml ya contiene una sección rest de nivel superior, añade este recurso debajo en lugar de crear una segunda clave rest.
Home Assistant consulta PrintDeck; PrintDeck no envía webhooks. Mantén ambos dispositivos en una red local de confianza y no expongas el puerto de la API a internet. La integración guarda el token en la entrada de configuración de Home Assistant; en una configuración REST manual, guárdalo en secrets.yaml.
El progreso, las temperaturas y las actividades detalladas utilizadas por las reacciones son más completos para la impresora seleccionada actualmente en PrintDeck. La conexión y el estado resumido del trabajo siguen disponibles para las demás impresoras guardadas.
Volver a Unified Printer APIPrintDeck envía datos normalizados de las impresoras a un servidor local como Mosquitto. Tus aplicaciones se suscriben a las actualizaciones en lugar de consultar repetidamente la API REST. HTTP y MQTT pueden funcionar por separado o juntos.
Recibe el estado del trabajo, el progreso, las temperaturas y la disponibilidad en tus paneles o flujos de Node-RED.
Reacciona a inicios de impresión observados, hitos de progreso y eventos que requieren atención. Los eventos en directo no se retienen ni se repiten tras reconectar.
Deja que Home Assistant cree dispositivos y entidades automáticamente con su integración MQTT incorporada. O elige PrintDeck mediante HACS con MQTT y mantén desactivada la detección estándar.