# Example Home Assistant configuration file for a Voron V0. # Credit to GitHub users @Kruppes and @pedrolamas # sensor: - platform: rest name: Voron_V0_sensor resource: "http://192.168.178.56:7125/printer/objects/query?heater_bed&extruder&print_stats&toolhead&display_status&virtual_sdcard" json_attributes_path: "$.result.status" json_attributes: - heater_bed - extruder - print_stats - toolhead - display_status - virtual_sdcard value_template: >- {{ 'OK' if ('result' in value_json) else None }} # Adding an API key is only necessary while using the [authorization] component # and if Home Assistant is not a trusted client headers: x-api-key: 123456789abcdefghijklmno - platform: template sensors: vzero_hotend_target: friendly_name: 'V0.126 Hotend Target' device_class: temperature unit_of_measurement: '°C' value_template: >- {{ states.sensor.voron_v0_sensor.attributes['extruder']['target'] | float | round(1) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_hotend_actual: device_class: temperature unit_of_measurement: '°C' value_template: >- {{ states.sensor.voron_v0_sensor.attributes['extruder']['temperature'] | float | round(1) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_bed_target: device_class: temperature unit_of_measurement: '°C' value_template: >- {{ states.sensor.voron_v0_sensor.attributes['heater_bed']['target'] | float | round(1) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_bed_actual: device_class: temperature unit_of_measurement: '°C' value_template: >- {{ states.sensor.voron_v0_sensor.attributes['heater_bed']['temperature'] | float | round(1) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_state: icon_template: mdi:printer-3d value_template: >- {{ states.sensor.voron_v0_sensor.attributes['print_stats']['state'] if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_current_print: value_template: >- {{ states.sensor.voron_v0_sensor.attributes['print_stats']['filename'] if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_current_progress: unit_of_measurement: '%' icon_template: mdi:file-percent value_template: >- {{ (states.sensor.voron_v0_sensor.attributes['display_status']['progress'] * 100) | round(1) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_print_time: icon_template: mdi:clock-start value_template: >- {{ states.sensor.voron_v0_sensor.attributes['print_stats']['print_duration'] | timestamp_custom("%H:%M:%S", 0) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_time_remaining: icon_template: mdi:clock-end value_template: >- {{ (((states.sensor.voron_v0_sensor.attributes['print_stats']['print_duration'] / states.sensor.voron_v0_sensor.attributes['display_status']['progress'] - states.sensor.voron_v0_sensor.attributes['print_stats']['print_duration']) if states.sensor.voron_v0_sensor.attributes['display_status']['progress'] > 0 else 0) | timestamp_custom('%H:%M:%S', 0)) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_eta: icon_template: mdi:clock-outline value_template: >- {{ (as_timestamp(now()) + 2 * 60 * 60 + ((states.sensor.voron_v0_sensor.attributes['print_stats']['print_duration'] / states.sensor.voron_v0_sensor.attributes['display_status']['progress'] - states.sensor.voron_v0_sensor.attributes['print_stats']['print_duration']) if states.sensor.voron_v0_sensor.attributes['display_status']['progress'] > 0 else 0)) | timestamp_custom("%H:%M:%S", 0) if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_nozzletemp: icon_template: mdi:thermometer value_template: >- {{ [(states.sensor.voron_v0_sensor.attributes['extruder']['temperature'] | float | round(1) | string), " / ", (states.sensor.voron_v0_sensor.attributes['extruder']['target'] | float | round(1) | string)] | join if is_state('sensor.voron_v0_sensor', 'OK') else None }} vzero_bedtemp: icon_template: mdi:thermometer value_template: >- {{ [(states.sensor.voron_v0_sensor.attributes['heater_bed']['temperature'] | float | round(1) | string), " / ", (states.sensor.voron_v0_sensor.attributes['heater_bed']['target'] | float | round(1) | string)] | join if is_state('sensor.voron_v0_sensor', 'OK') else None }} # The following will allow you to control the power of devices configured in the "[power]" sections of moonraker # Make sure to change the `Printer` name below to the device name on your configuration # switch: - platform: rest name: Voron_V0_power resource: "http://192.168.178.56:7125/machine/device_power/device?device=Printer" body_on: '{"action": "on"}' body_off: '{"action": "off"}' headers: Content-Type: 'application/json' is_on_template: >- {{ 'result' in value_json and (value_json.result.values() | list | first == "on") }} # MJPEG camera can be exposed to HA # camera: - platform: mjpeg name: Voron_V0_camera still_image_url: http://192.168.178.56/webcam/?action=snapshot mjpeg_url: http://192.168.178.56/webcam/?action=stream