From 0a2381e91bbaeaaf0fae0e2112dc970954aab35e Mon Sep 17 00:00:00 2001 From: rzen Date: Sun, 6 Jul 2025 16:45:10 -0400 Subject: [PATCH] cadence based fan management --- fan-cadence.yaml | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/fan-cadence.yaml b/fan-cadence.yaml index e69de29..05b9b21 100644 --- a/fan-cadence.yaml +++ b/fan-cadence.yaml @@ -0,0 +1,65 @@ +blueprint: + name: Fan Cadence with Light Check + description: > + Runs a fan on a cadence every X minutes. + Turns it off after Y seconds unless any of the specified lights are on. + domain: automation + input: + fan_entity: + name: Fan Entity + selector: + entity: + domain: fan + + interval_minutes: + name: Fan Activation Interval (minutes) + description: How often to turn the fan on + default: 15 + selector: + number: + min: 1 + max: 1440 + unit_of_measurement: minutes + + duration_seconds: + name: How Long to Keep Fan On (seconds) + description: How long the fan stays on before trying to turn it off + default: 60 + selector: + number: + min: 5 + max: 3600 + unit_of_measurement: seconds + + override_lights: + name: Override Lights + description: Fan will not be turned off if any of these lights are on + selector: + entity: + domain: light + multiple: true + +trigger: + - platform: time_pattern + minutes: "/{{ iif(interval_minutes | int > 0, interval_minutes, 15) }}" + +variables: + fan: !input fan_entity + lights: !input override_lights + +condition: [] + +action: + - service: fan.turn_on + target: + entity_id: "{{ fan }}" + - delay: + seconds: !input duration_seconds + - condition: template + value_template: > + {{ lights | map('states') | select('eq', 'on') | list | length == 0 }} + - service: fan.turn_off + target: + entity_id: "{{ fan }}" + +mode: parallel