====== WLED Druckfortschritt Anzeige ====== ===== Für einen oder mehrere Drucker als Blueprint ===== Hierzu mit dem HA Editor eurer Wahl config → blueprints → automation einen eigenen Ordner anlegen.\\ darin z.B. eine Datei wled_print_progress.yaml und den unteren Inhalt einfügen. blueprint: name: WLED print progress (multi printer, rotating) description: 'Shows the progress of up to 4 printers on one WLED segment (Percent effect). Active printers are shown one after another, each for the chosen interval, each in its own color. Printers that are idle/offline are skipped. When no printer is printing, an optional idle preset or idle effect is applied. Leave the entities of unused printer slots empty. ' domain: automation input: segment_light: name: WLED segment (light) description: Light entity of the segment used for the progress bar (not the main segment). selector: entity: domain: - light integration: wled multiple: false reorder: false intensity_entity: name: WLED segment intensity (number) description: Intensity entity of the same segment. selector: entity: domain: - number integration: wled multiple: false reorder: false interval: name: Display time per printer (seconds) default: 5 selector: number: min: 1.0 max: 120.0 unit_of_measurement: s mode: box step: 1.0 inactive_states: name: States that count as "not printing" default: - idle - offline - finish - unknown - unavailable selector: text: multiple: true multiline: false idle_preset_entity: name: Idle - WLED preset selector (optional) description: 'Preset select entity of the WLED device. Note: a preset applies to the whole device, not just this segment. Takes priority over the idle effect. ' default: '' selector: entity: domain: - select integration: wled multiple: false reorder: false idle_preset_name: name: Idle - preset name description: Exact name of the preset to apply when no printer is printing. default: '' selector: text: multiline: false multiple: false idle_effect: name: Idle - segment effect (optional) description: 'Effect name for the progress segment when no printer is printing, e.g. Rainbow. Only used if no idle preset is set. If both are empty, the segment is turned off. ' default: '' selector: text: multiline: false multiple: false p1_status: name: Printer 1 - status selector: entity: domain: - sensor multiple: false reorder: false p1_progress: name: Printer 1 - progress (%) selector: entity: domain: - sensor multiple: false reorder: false p1_color: name: Printer 1 - color default: - 0 - 0 - 255 selector: color_rgb: {} p2_status: name: Printer 2 - status (optional) default: '' selector: entity: domain: - sensor multiple: false reorder: false p2_progress: name: Printer 2 - progress (%) (optional) default: '' selector: entity: domain: - sensor multiple: false reorder: false p2_color: name: Printer 2 - color default: - 0 - 255 - 0 selector: color_rgb: {} p3_status: name: Printer 3 - status (optional) default: '' selector: entity: domain: - sensor multiple: false reorder: false p3_progress: name: Printer 3 - progress (%) (optional) default: '' selector: entity: domain: - sensor multiple: false reorder: false p3_color: name: Printer 3 - color default: - 255 - 0 - 0 selector: color_rgb: {} p4_status: name: Printer 4 - status (optional) default: '' selector: entity: domain: - sensor multiple: false reorder: false p4_progress: name: Printer 4 - progress (%) (optional) default: '' selector: entity: domain: - sensor multiple: false reorder: false p4_color: name: Printer 4 - color default: - 255 - 255 - 0 selector: color_rgb: {} mode: restart max_exceeded: silent trigger_variables: inactive_states: !input inactive_states s1: !input p1_status s2: !input p2_status s3: !input p3_status s4: !input p4_status status_entities: '{{ [s1, s2, s3, s4] | select | list }}' variables: inactive_states: !input inactive_states idle_preset_entity: !input idle_preset_entity idle_preset_name: !input idle_preset_name idle_effect: !input idle_effect s1: !input p1_status s2: !input p2_status s3: !input p3_status s4: !input p4_status pr1: !input p1_progress pr2: !input p2_progress pr3: !input p3_progress pr4: !input p4_progress c1: !input p1_color c2: !input p2_color c3: !input p3_color c4: !input p4_color printers: "{{ [\n {'status': s1, 'progress': pr1, 'color': c1},\n {'status': s2, 'progress': pr2, 'color': c2},\n {'status': s3, 'progress': pr3, 'color': c3},\n \ {'status': s4, 'progress': pr4, 'color': c4}\n] | selectattr('status') | list }}" triggers: - trigger: template value_template: '{{ status_entities | map(''states'') | reject(''in'', inactive_states) | list | count> 0 }}' - trigger: template value_template: '{{ status_entities | map(''states'') | reject(''in'', inactive_states) | list | count == 0 }}' - trigger: homeassistant event: start actions: - repeat: while: - condition: template value_template: '{{ printers | map(attribute=''status'') | map(''states'') | reject(''in'', inactive_states) | list | count> 0 }}' sequence: - repeat: for_each: '{{ printers }}' sequence: - if: - condition: template value_template: '{{ states(repeat.item.status) not in inactive_states }}' then: - action: number.set_value target: entity_id: !input intensity_entity data: value: '{{ [[states(repeat.item.progress) | float(0) | int, 0] | max, 99] | min }}' - action: light.turn_on target: entity_id: !input segment_light data: effect: Percent rgb_color: '{{ repeat.item.color }}' - delay: seconds: !input interval - choose: - conditions: - condition: template value_template: '{{ idle_preset_entity != '''' and idle_preset_name != '''' }}' sequence: - action: select.select_option target: entity_id: '{{ idle_preset_entity }}' data: option: '{{ idle_preset_name }}' - conditions: - condition: template value_template: '{{ idle_effect != '''' }}' sequence: - action: light.turn_on target: entity_id: !input segment_light data: effect: '{{ idle_effect }}' default: - action: light.turn_off target: entity_id: !input segment_light ===== =====