Why is this template not working?

Dear all,
I have the following MQTT sensor:

  value_template: >
    {% if states("binary_sensor.octoprint_printing") == "on" %}
      {{ (value_json | default ('{"filament_type": "-"}' | from_json)).filament_type }}
    {% else %}
      -
    {% endif %}

When octoprint starts printing, it sends the following message (I omitted the irrelevant parts):

{
...
  "filament_type": "PETG",
...
}

For some reason, my sensor always gets to be - instead of the value. However, when I restart Home Assistant, it displays the correct value, PETG right after restart - the MQTT message is retained.
Been trying to figure this out for days now. Any idea why it can’t display the correct value without restarting HA?

Json does not have irrelevant parts.
Post the full json.

2 Likes

Well, here we go:

{
  "external perimeters extrusion width": "0.45mm",
  "perimeters extrusion width": "0.45mm",
  "infill extrusion width": "0.45mm",
  "solid infill extrusion width": "0.45mm",
  "top infill extrusion width": "0.40mm",
  "support material extrusion width": "0.35mm",
  "first layer extrusion width": "0.80mm",
  "max_layer_z": "64.2",
  "objects_info": "{\"objects\":[{\"name\":\"LeadScrewBrackets-Idler.stl id:0 copy 0\",\"polygon\":[[132.246,75.849],[139.205,77.099],[163.293,85.896],[166.716,92.146],[166.714,129.146],[163.178,134.146],[121.106,134.146],[115.005,130.706],[105.076,117.388],[102.511,108.948],[102.511,104.948],[116.723,104.947],[116.724,92.696],[114.122,92.692],[114.122,92.292],[116.724,92.292],[116.725,84.850],[102.512,84.848],[102.512,80.848],[106.048,75.847]]}]}",
  "filament used [mm]": "8298.78",
  "filament used [cm3]": "19.96",
  "filament used [g]": "25.35",
  "filament cost": "0.63",
  "total filament used [g]": "25.35",
  "total filament cost": "0.63",
  "total filament used for wipe tower [g]": "0.00",
  "estimated printing time (normal mode)": "2h 48m 12s",
  "estimated printing time (silent mode)": "2h 50m 6s",
  "estimated first layer printing time (normal mode)": "2m 14s",
  "estimated first layer printing time (silent mode)": "2m 14s",
  "prusaslicer_config": "end",
  "arc_fitting": "disabled",
  "autoemit_temperature_commands": "1",
  "automatic_extrusion_widths": "0",
  "automatic_infill_combination": "0",
  "automatic_infill_combination_max_layer_height": "100%",
  "avoid_crossing_curled_overhangs": "0",
  "avoid_crossing_perimeters": "0",
  "avoid_crossing_perimeters_max_detour": "0",
  "bed_custom_model": "",
  "bed_custom_texture": "",
  "bed_shape": "0x0,250x0,250x210,0x210",
  "bed_temperature": "90",
  "bed_temperature_extruder": "0",
  "before_layer_gcode": ";BEFORE_LAYER_CHANGE\\nG92 E0.0\\n;[layer_z]\\n\\n",
  "between_objects_gcode": "",
  "binary_gcode": "0",
  "bottom_fill_pattern": "monotonic",
  "bottom_solid_layers": "4",
  "bottom_solid_min_thickness": "0.5",
  "bridge_acceleration": "1000",
  "bridge_angle": "0",
  "bridge_fan_speed": "50",
  "bridge_flow_ratio": "0.95",
  "bridge_speed": "30",
  "brim_separation": "0",
  "brim_type": "outer_only",
  "brim_width": "0",
  "chamber_minimal_temperature": "0",
  "chamber_temperature": "0",
  "color_change_gcode": "M600\\nG1 E0.3 F1500 ; prime after color change",
  "colorprint_heights": "",
  "compatible_printers_condition_cummulative": "\"printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK3.*/ and nozzle_diameter[0]==0.4\";\"nozzle_diameter[0]!=0.8 and printer_model!=\\\"MK2SMM\\\" and printer_notes!~/.*MINI.*/ and printer_notes!~/.*PG.*/ and ! (printer_notes=~/.*PRINTER_VENDOR_PRUSA3D.*/ and printer_notes=~/.*PRINTER_MODEL_MK(2.5|3).*/ and single_extruder_multi_material) and printer_model!=\\\"MK3.5\\\"\"",
  "complete_objects": "0",
  "cooling": "1",
  "cooling_perimeter_transition_distance": "0",
  "cooling_slowdown_logic": "uniform_cooling",
  "cooling_tube_length": "5",
  "cooling_tube_retraction": "91.5",
  "custom_parameters_filament": "\"\"",
  "custom_parameters_print": "",
  "custom_parameters_printer": "",
  "default_acceleration": "1000",
  "default_filament_profile": "\"Prusament PLA\"",
  "default_print_profile": "0.15mm QUALITY @MK3",
  "deretract_speed": "0",
  "disable_fan_first_layers": "3",
  "dont_support_bridges": "1",
  "draft_shield": "disabled",
  "duplicate_distance": "6",
  "elefant_foot_compensation": "0.2",
  "enable_dynamic_fan_speeds": "0",
  "enable_dynamic_overhang_speeds": "0",
  "end_filament_gcode": "\"; Filament-specific end gcode\"",
  "end_gcode": "{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\\nG1 X0 Y200 F3600 ; park\\n{if layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\\nG4 ; wait\\nM221 S100 ; reset flow\\nM900 K0 ; reset LA\\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3|@0.25 nozzle MK3).*/}M907 E538 ; reset extruder motor current{endif}\\nM104 S0 ; turn off temperature\\nM140 S0 ; turn off heatbed\\nM107 ; turn off fan\\nM84 ; disable motors\\n; max_layer_z = [max_layer_z]",
  "ensure_vertical_shell_thickness": "enabled",
  "external_perimeter_acceleration": "0",
  "external_perimeter_extrusion_width": "0.45",
  "external_perimeter_speed": "25",
  "external_perimeters_first": "0",
  "extra_loading_move": "-2",
  "extra_perimeters": "0",
  "extra_perimeters_on_overhangs": "0",
  "extruder_clearance_height": "20",
  "extruder_clearance_radius": "45",
  "extruder_colour": "\"\"",
  "extruder_offset": "0x0",
  "extrusion_axis": "E",
  "extrusion_multiplier": "1",
  "extrusion_width": "0.45",
  "fan_always_on": "1",
  "fan_below_layer_time": "20",
  "filament_abrasive": "0",
  "filament_colour": "#FF0000",
  "filament_cooling_final_speed": "3.4",
  "filament_cooling_initial_speed": "2.2",
  "filament_cooling_moves": "4",
  "filament_cost": "25",
  "filament_density": "1.27",
  "filament_deretract_speed": "nil",
  "filament_diameter": "1.75",
  "filament_infill_max_crossing_speed": "0",
  "filament_infill_max_speed": "0",
  "filament_load_time": "0",
  "filament_loading_speed": "28",
  "filament_loading_speed_start": "3",
  "filament_max_volumetric_speed": "8",
  "filament_minimal_purge_on_wipe_tower": "15",
  "filament_multitool_ramming": "0",
  "filament_multitool_ramming_flow": "10",
  "filament_multitool_ramming_volume": "10",
  "filament_notes": "\"\"",
  "filament_purge_multiplier": "100%",
  "filament_ramming_parameters": "\"120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6\"",
  "filament_retract_before_travel": "nil",
  "filament_retract_before_wipe": "nil",
  "filament_retract_layer_change": "nil",
  "filament_retract_length": "1",
  "filament_retract_length_toolchange": "nil",
  "filament_retract_lift": "0.2",
  "filament_retract_lift_above": "nil",
  "filament_retract_lift_below": "nil",
  "filament_retract_restart_extra": "nil",
  "filament_retract_restart_extra_toolchange": "nil",
  "filament_retract_speed": "nil",
  "filament_seam_gap_distance": "nil",
  "filament_settings_id": "\"PETG - Creality CR - Red\"",
  "filament_shrinkage_compensation_xy": "0.33%",
  "filament_shrinkage_compensation_z": "0%",
  "filament_soluble": "0",
  "filament_spool_weight": "0",
  "filament_stamping_distance": "0",
  "filament_stamping_loading_speed": "20",
  "filament_toolchange_delay": "0",
  "filament_travel_lift_before_obstacle": "nil",
  "filament_travel_max_lift": "nil",
  "filament_travel_ramping_lift": "nil",
  "filament_travel_slope": "nil",
  "filament_type": "PETG",
  "filament_unload_time": "0",
  "filament_unloading_speed": "90",
  "filament_unloading_speed_start": "100",
  "filament_vendor": "Generic",
  "filament_wipe": "nil",
  "fill_angle": "45",
  "fill_density": "10%",
  "fill_pattern": "gyroid",
  "first_layer_acceleration": "1000",
  "first_layer_acceleration_over_raft": "0",
  "first_layer_bed_temperature": "85",
  "first_layer_extrusion_width": "0.8",
  "first_layer_height": "0.2",
  "first_layer_infill_speed": "0",
  "first_layer_speed": "15",
  "first_layer_speed_over_raft": "30",
  "first_layer_temperature": "240",
  "full_fan_speed_layer": "5",
  "fuzzy_skin": "none",
  "fuzzy_skin_point_dist": "0.8",
  "fuzzy_skin_thickness": "0.3",
  "gap_fill_enabled": "1",
  "gap_fill_speed": "40",
  "gcode_comments": "1",
  "gcode_flavor": "marlin",
  "gcode_label_objects": "octoprint",
  "gcode_resolution": "0.0125",
  "gcode_substitutions": "",
  "high_current_on_filament_swap": "0",
  "host_type": "prusalink",
  "idle_temperature": "nil",
  "infill_acceleration": "1000",
  "infill_anchor": "2.5",
  "infill_anchor_max": "12",
  "infill_every_layers": "1",
  "infill_extruder": "1",
  "infill_extrusion_width": "0.45",
  "infill_first": "0",
  "infill_overlap": "25%",
  "infill_speed": "30",
  "inherits_cummulative": "\"0.20mm QUALITY @MK3\";\"Generic PETG\";\"Original Prusa i3 MK3S & MK3S+\"",
  "interface_shells": "0",
  "interlocking_beam": "0",
  "interlocking_beam_layer_count": "2",
  "interlocking_beam_width": "0.8",
  "interlocking_boundary_avoidance": "2",
  "interlocking_depth": "2",
  "interlocking_orientation": "22.5",
  "ironing": "0",
  "ironing_flowrate": "15%",
  "ironing_spacing": "0.1",
  "ironing_speed": "15",
  "ironing_type": "top",
  "layer_gcode": ";AFTER_LAYER_CHANGE\\n;[layer_z]\\n\\n@SNAPSHOT",
  "layer_height": "0.2",
  "machine_limits_usage": "emit_to_gcode",
  "machine_max_acceleration_e": "5000,5000",
  "machine_max_acceleration_extruding": "1250,1250",
  "machine_max_acceleration_retracting": "1250,1250",
  "machine_max_acceleration_travel": "1500,1250",
  "machine_max_acceleration_x": "1000,960",
  "machine_max_acceleration_y": "1000,960",
  "machine_max_acceleration_z": "200,200",
  "machine_max_feedrate_e": "120,120",
  "machine_max_feedrate_x": "200,100",
  "machine_max_feedrate_y": "200,100",
  "machine_max_feedrate_z": "12,12",
  "machine_max_jerk_e": "4.5,4.5",
  "machine_max_jerk_x": "8,8",
  "machine_max_jerk_y": "8,8",
  "machine_max_jerk_z": "0.4,0.4",
  "machine_min_extruding_rate": "0,0",
  "machine_min_travel_rate": "0,0",
  "max_fan_speed": "50",
  "max_layer_height": "0.25",
  "max_print_height": "210",
  "max_print_speed": "200",
  "max_volumetric_extrusion_rate_slope_negative": "0",
  "max_volumetric_extrusion_rate_slope_positive": "0",
  "max_volumetric_speed": "0",
  "min_bead_width": "85%",
  "min_fan_speed": "30",
  "min_feature_size": "25%",
  "min_layer_height": "0.07",
  "min_print_speed": "15",
  "min_skirt_length": "4",
  "mmu_segmented_region_interlocking_depth": "0",
  "mmu_segmented_region_max_width": "0",
  "multimaterial_purging": "140",
  "notes": "",
  "nozzle_diameter": "0.4",
  "nozzle_high_flow": "0",
  "only_one_perimeter_first_layer": "0",
  "only_retract_when_crossing_perimeters": "0",
  "ooze_prevention": "0",
  "output_filename_format": "{input_filename_base}_{printing_filament_types}_{print_time}.gcode",
  "over_bridge_speed": "0",
  "overhang_fan_speed_0": "0",
  "overhang_fan_speed_1": "0",
  "overhang_fan_speed_2": "0",
  "overhang_fan_speed_3": "0",
  "overhang_speed_0": "15",
  "overhang_speed_1": "15",
  "overhang_speed_2": "20",
  "overhang_speed_3": "25",
  "overhangs": "1",
  "parking_pos_retraction": "92",
  "pause_print_gcode": "M601",
  "perimeter_acceleration": "800",
  "perimeter_extruder": "1",
  "perimeter_extrusion_width": "0.45",
  "perimeter_generator": "arachne",
  "perimeter_speed": "25",
  "perimeters": "2",
  "physical_printer_settings_id": "",
  "post_process": "",
  "prefer_clockwise_movements": "0",
  "print_settings_id": "0.20mm QUALITY 10% infill - PETG",
  "printer_model": "MK3S",
  "printer_notes": "Don't remove the following keywords! These keywords are used in the \"compatible printer\" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\\nPRINTER_VENDOR_PRUSA3D\\nPRINTER_MODEL_MK3\\n",
  "printer_settings_id": "Original Prusa i3 MK3S & MK3S+",
  "printer_technology": "FFF",
  "printer_variant": "0.4",
  "printer_vendor": "",
  "raft_contact_distance": "0.1",
  "raft_expansion": "1.5",
  "raft_first_layer_density": "90%",
  "raft_first_layer_expansion": "3",
  "raft_layers": "0",
  "remaining_times": "1",
  "resolution": "0",
  "retract_before_travel": "1",
  "retract_before_wipe": "0%",
  "retract_layer_change": "1",
  "retract_length": "0.8",
  "retract_length_toolchange": "4",
  "retract_lift": "0.4",
  "retract_lift_above": "0",
  "retract_lift_below": "209",
  "retract_restart_extra": "0",
  "retract_restart_extra_toolchange": "0",
  "retract_speed": "35",
  "scarf_seam_entire_loop": "0",
  "scarf_seam_length": "20",
  "scarf_seam_max_segment_length": "1",
  "scarf_seam_on_inner_perimeters": "0",
  "scarf_seam_only_on_smooth": "1",
  "scarf_seam_placement": "nowhere",
  "scarf_seam_start_height": "0%",
  "seam_gap_distance": "15%",
  "seam_position": "random",
  "silent_mode": "1",
  "single_extruder_multi_material": "0",
  "single_extruder_multi_material_priming": "0",
  "skirt_distance": "1",
  "skirt_height": "3",
  "skirts": "1",
  "slice_closing_radius": "0.049",
  "slicing_mode": "regular",
  "slowdown_below_layer_time": "15",
  "small_perimeter_speed": "25",
  "solid_infill_acceleration": "0",
  "solid_infill_below_area": "0",
  "solid_infill_every_layers": "0",
  "solid_infill_extruder": "1",
  "solid_infill_extrusion_width": "0.45",
  "solid_infill_speed": "80",
  "spiral_vase": "0",
  "staggered_inner_seams": "0",
  "standby_temperature_delta": "-5",
  "start_filament_gcode": "\"{if printer_notes!~/.*(MK3.5|MINIIS).*/}\\nM900 K{if printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.6}0.12{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/ and nozzle_diameter[0]==0.8}0.06{elsif printer_notes=~/.*PRINTER_MODEL_MINI.*/}0.2{elsif nozzle_diameter[0]==0.8}0.02{elsif nozzle_diameter[0]==0.6}0.04{else}0.08{endif} ; Filament gcode LA 1.5\\n{if printer_notes=~/.*PRINTER_MODEL_MINI.*/};{elsif printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}M900 K200{elsif nozzle_diameter[0]==0.6}M900 K24{elsif nozzle_diameter[0]==0.8};{else}M900 K45{endif} ; Filament gcode LA 1.0\\n{endif}\\n\\n{if printer_notes=~/.*MINIIS.*/}\\nM572 S{if nozzle_diameter[0]==0.6}0.22{elsif nozzle_diameter[0]==0.8}0.15{elsif nozzle_diameter[0]==0.4}0.36{elsif nozzle_diameter[0]==0.25}1.02{else}0{endif}\\n{endif}\\n\\n{if printer_notes=~/.*MK3.5.*/}\\nM572 S{if nozzle_diameter[0]==0.4}0.052{elsif nozzle_diameter[0]==0.5}0.042{elsif nozzle_diameter[0]==0.6}0.025{elsif nozzle_diameter[0]==0.8}0.018{elsif nozzle_diameter[0]==0.25}0.18{elsif nozzle_diameter[0]==0.3}0.1{else}0{endif} ; Filament gcode\\n{endif}\"",
  "start_gcode": "M862.3 P \"[printer_model]\" ; printer model check\\nM862.1 P[nozzle_diameter] ; nozzle diameter check\\nM115 U3.14.1 ; tell printer latest fw version\\nG90 ; use absolute coordinates\\nM83 ; extruder relative mode\\nM104 S[first_layer_temperature] ; set extruder temp\\nM140 S[first_layer_bed_temperature] ; set bed temp\\nM190 S[first_layer_bed_temperature] ; wait for bed temp\\nM109 S[first_layer_temperature] ; wait for extruder temp\\nG28 W ; home all without mesh bed level\\nG80 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])} ; mesh bed levelling\\n{if filament_settings_id[initial_tool]=~/.*Prusament PA11.*/}\\nG1 Z0.3 F720\\nG1 Y-3 F1000 ; go outside print area\\nG92 E0\\nG1 X60 E9 F1000 ; intro line\\nG1 X100 E9 F1000 ; intro line\\n{else}\\nG1 Z0.2 F720\\nG1 Y-3 F1000 ; go outside print area\\nG92 E0\\nG1 X60 E9 F1000 ; intro line\\nG1 X100 E12.5 F1000 ; intro line\\n{endif}\\nG92 E0\\nM221 S{if layer_height<0.075}100{else}95{endif}\\n\\n; Don't change E values below. Excessive value can damage the printer.\\n{if print_settings_id=~/.*(DETAIL @MK3|QUALITY @MK3).*/}M907 E430 ; set extruder motor current{endif}\\n{if print_settings_id=~/.*(SPEED @MK3|DRAFT @MK3).*/}M907 E538 ; set extruder motor current{endif}",
  "support_material": "1",
  "support_material_angle": "0",
  "support_material_auto": "0",
  "support_material_bottom_contact_distance": "0",
  "support_material_bottom_interface_layers": "-1",
  "support_material_buildplate_only": "0",
  "support_material_closing_radius": "2",
  "support_material_contact_distance": "0.1",
  "support_material_enforce_layers": "0",
  "support_material_extruder": "0",
  "support_material_extrusion_width": "0.35",
  "support_material_interface_contact_loops": "0",
  "support_material_interface_extruder": "0",
  "support_material_interface_layers": "2",
  "support_material_interface_pattern": "rectilinear",
  "support_material_interface_spacing": "0.2",
  "support_material_interface_speed": "80%",
  "support_material_pattern": "rectilinear",
  "support_material_spacing": "2",
  "support_material_speed": "35",
  "support_material_style": "grid",
  "support_material_synchronize_layers": "0",
  "support_material_threshold": "55",
  "support_material_with_sheath": "0",
  "support_material_xy_spacing": "50%",
  "support_tree_angle": "40",
  "support_tree_angle_slow": "25",
  "support_tree_branch_diameter": "2",
  "support_tree_branch_diameter_angle": "5",
  "support_tree_branch_diameter_double_wall": "3",
  "support_tree_branch_distance": "1",
  "support_tree_tip_diameter": "0.8",
  "support_tree_top_rate": "15%",
  "temperature": "235",
  "template_custom_gcode": "",
  "thick_bridges": "0",
  "thin_walls": "0",
  "thumbnails": "160x120/PNG, 16x16/PNG, 200x200/PNG, 640x480/PNG, 800x600/PNG",
  "thumbnails_format": "PNG",
  "toolchange_gcode": "",
  "top_fill_pattern": "monotonic",
  "top_infill_extrusion_width": "0.4",
  "top_one_perimeter_type": "none",
  "top_solid_infill_acceleration": "0",
  "top_solid_infill_speed": "25",
  "top_solid_layers": "5",
  "top_solid_min_thickness": "0.7",
  "travel_acceleration": "0",
  "travel_lift_before_obstacle": "0",
  "travel_max_lift": "0",
  "travel_ramping_lift": "0",
  "travel_short_distance_acceleration": "0",
  "travel_slope": "0",
  "travel_speed": "180",
  "travel_speed_z": "12",
  "use_firmware_retraction": "0",
  "use_relative_e_distances": "1",
  "use_volumetric_e": "0",
  "variable_layer_height": "1",
  "wall_distribution_count": "1",
  "wall_transition_angle": "10",
  "wall_transition_filter_deviation": "25%",
  "wall_transition_length": "100%",
  "wipe": "1",
  "wipe_into_infill": "0",
  "wipe_into_objects": "0",
  "wipe_tower": "1",
  "wipe_tower_acceleration": "0",
  "wipe_tower_bridging": "10",
  "wipe_tower_brim_width": "2",
  "wipe_tower_cone_angle": "0",
  "wipe_tower_extra_flow": "100%",
  "wipe_tower_extra_spacing": "100%",
  "wipe_tower_extruder": "0",
  "wipe_tower_no_sparse_layers": "0",
  "wipe_tower_width": "60",
  "wiping_volumes_matrix": "0",
  "wiping_volumes_use_custom_matrix": "0",
  "xy_size_compensation": "0",
  "z_offset": "0"
}

There seems to be something “illegal” in the json.
I just tested the code in php and only when I removed everything but the type then it worked.
Obviously, it would work at some point but there is something not right with the json.
Don’t have time for debugging now.
But my first thought was that there was some array, but that does not seem to be the case.

Looks ok to me and it checks out here: https://jsonpathfinder.com/

Try it this way:

value_template: >
  {% if is_state("binary_sensor.octoprint_printing","on") and value_json.filament_type is defined %}
    {{ value_json.filament_type }}
  {% else %}
    -
  {% endif %}

Nope, in this case the original issue is gone (i.e. the value displays correctly when starting a print, but it throws an error (value-json is undefined) when the print is finished (octoprint publishes another similar message when it is finished, but with a lot less detail, which doesn’t have “filament_type”. That’s why I used default ('{"filament_type": "-"}' in the beginning.

  value_template: >
    {% if states("binary_sensor.octoprint_printing") == "on" and value_json is defined %}
      {{ value_json.get('filament_type', '-') }}
    {% else %}
      -
    {% endif %}

Nah, same problem. :frowning: It’s not a huge issue for me, I don’t really need it on my dashboard, I just hate that I don’t understand why it works when just restarting HA and not otherwise…

Show this message.

Just did a try now, and the message published was an empty message. Starting to think that the MQTT plugin in OctoPrint is acting up…
I’ll post back when another message comes up…

In fact, this “empty” message is not so empty. I don’t exactly know what it is just yet, but it removes the history in MQTT Explorer…

This seems to be working (finally):

  value_template: >
    {% if is_state("binary_sensor.octoprint_printing","on") and value_json is defined %}
      {% if value_json.filament_type is defined %}
        {{ value_json.filament_type }}
      {% else %}
        -    
      {% endif %}
    {% else %}
      -
    {% endif %}

also, the MQTT plugin needs to be configured as such:

The empty message till comes, but the template above seems to handle all possible values during my testing.

FYI using value_json.get('filament_type', '-') is shorter, does the same thing as as defined with the if statement, and is faster.

Cool, thanks!!!

@petro Where is this documented? I’ve never seen it like that, and now I’m hoping that wherever it is documented, I’ll find other good, similar stuff as well…

That’s just how dictionaries work. It would be documented in the Jinja documentation, not HA.

I see, thanks!!!