From 06177cb9f08b92ba4f9e70a19ae59e896e163f3a Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Mon, 9 Feb 2026 12:42:59 +0300 Subject: [PATCH] Make `Start Date` and `Control Flag` inputs optional in `Periodic Notification` - Start Date: when empty, day interval is ignored and notifications fire daily - Control Flag: when empty, notifications always fire (no toggle control) - Update documentation to reflect optional inputs - Fix markdown linting issues Co-Authored-By: Claude Sonnet 4.5 --- Common/Periodic Notification/README.md | 14 +++++++------- Common/Periodic Notification/blueprint.yaml | 17 ++++++++++++----- manifest.json | 2 +- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/Common/Periodic Notification/README.md b/Common/Periodic Notification/README.md index b95d0cf..4ed26ff 100644 --- a/Common/Periodic Notification/README.md +++ b/Common/Periodic Notification/README.md @@ -1,6 +1,6 @@ # Periodic Notification -Sends notifications at specified times on a repeating day schedule, controlled by a toggle entity. +Sends notifications at specified times on an optional repeating day schedule with optional toggle control. ## Features @@ -8,13 +8,13 @@ Sends notifications at specified times on a repeating day schedule, controlled b - Customizable multiline message - Flexible time schedule (multiple times per day) - Configurable day interval (every N days) -- On/off control via input_boolean or switch entity +- Optional on/off control via input_boolean or switch entity ## How It Works 1. The automation triggers at each configured notification time (checked every minute) -2. It verifies the control flag entity is ON -3. It calculates whether today falls on the correct day in the interval cycle, counting from the configured start date +2. It verifies the control flag entity is ON (if configured) +3. It calculates whether today falls on the correct day in the interval cycle (if start date is configured) 4. If all conditions pass, the message is sent to all notification targets ### Day Interval Calculation @@ -28,13 +28,13 @@ Setting the day interval to **1** sends notifications every day. ## Configuration | Input | Description | -|---|---| +| --- | --- | | **Notification Targets** | One or more `notify` entities (e.g., `notify.mobile_app_phone`) | | **Message** | The notification text to send (supports multiline) | | **Notification Times** | Comma-separated times in 24-hour `HH:MM` format (e.g., `08:00, 14:30, 20:00`) | | **Day Interval** | Number of days between notification cycles (1 = daily) | | **Start Date** | Reference date for the interval calculation (optional — leave empty to send every day) | -| **Control Flag** | `input_boolean` or `switch` entity to enable/disable notifications | +| **Control Flag** | `input_boolean` or `switch` entity to enable/disable notifications (optional — leave empty to always send) | ### Time Format @@ -50,4 +50,4 @@ Set the `is_debug` variable to `true` in the automation YAML to enable persisten ## Author -Alexei Dolgolyov (dolgolyov.alexei@gmail.com) +Alexei Dolgolyov () diff --git a/Common/Periodic Notification/blueprint.yaml b/Common/Periodic Notification/blueprint.yaml index f75f07c..34fac70 100644 --- a/Common/Periodic Notification/blueprint.yaml +++ b/Common/Periodic Notification/blueprint.yaml @@ -83,10 +83,12 @@ blueprint: collapsed: false input: control_flag: - name: Control Flag + name: Control Flag (optional) description: > Toggle entity to enable or disable notifications. Notifications are only sent when this entity is ON. + Leave empty to always send notifications. + default: "" selector: entity: domain: @@ -120,6 +122,7 @@ variables: message_text: !input message interval: !input day_interval start_date: !input start_date + control_flag: !input control_flag # Debug flag - set to true to enable persistent notifications for troubleshooting is_debug: false @@ -128,10 +131,14 @@ variables: # Conditions # ============================================================================= condition: - # Control flag must be ON - - condition: state - entity_id: !input control_flag - state: "on" + # Control flag must be ON (skipped if no control flag) + - condition: template + value_template: > + {%- if control_flag | length == 0 -%} + true + {%- else -%} + {{ is_state(control_flag, 'on') }} + {%- endif -%} # Today must fall on the correct day in the interval cycle (skipped if no start date) - condition: template diff --git a/manifest.json b/manifest.json index f477809..a0197e8 100644 --- a/manifest.json +++ b/manifest.json @@ -1,3 +1,3 @@ { - "version": "1.34.0" + "version": "1.35.0" }