{ config, ... }: let unstable = import (builtins.fetchTarball https://github.com/nixos/nixpkgs/tarball/nixpkgs-unstable) # reuse the current configuration { config = config.nixpkgs.config; }; in { services.home-assistant.customComponents = with unstable.home-assistant-custom-components; [ moonraker ]; services.home-assistant.config = { sensor = [ { platform = "rest"; name = "creality extruder"; resource = "http://k1c-63e9.cloonar.smart:7125/printer/objects/query?extruder"; value_template = "OK"; json_attributes_path = "$.result.status.extruder"; json_attributes = [ "pressure_advance" "power" "target" "temperature" ]; } { platform = "rest"; name = "creality print stats"; resource = "http://k1c-63e9.cloonar.smart:7125/printer/objects/query?print_stats"; value_template = "OK"; json_attributes_path = "$.result.status.print_stats"; json_attributes = [ "filename" "total_duration" "print_duration" "filament_used" "state" "message" ]; } { platform = "template"; sensors = { crality_hotend_actual = { friendly_name = "Hot End Actual"; value_template = "{{ state_attr('sensor.creality_extruder', 'temperature') | float | round(1) }}"; device_class = "temperature"; unit_of_measurement = "°C"; }; }; } ]; "automation 3d printer state" = { alias = "3d printer state change"; hide_entity = true; trigger = [ { platform = "template"; value_template = "{{ state_attr('sensor.creality_print_stats','state') == 'standby' }}"; } ]; action = { service = "notify.mobile_app_dominiks_iphone"; data = { message = "Printer status changed to {{ state_attr('sensor.creality_print_stats','state') }}"; }; }; }; }; }