šŸ“˜ Blueprint Update Notifications

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

GitHub Link Click Here

Because even your blueprint automations deserve updates! :brain:

Like this blueprint? Consider hitting the :heart: button below :+1:

Version: 1.0 :fire:

Need help? :eyes: See our FAQ: Click Here

:newspaper: The Automation:

This automation can monitor my blueprints and check whether an update is available. To function correctly, you’ll need to create two sensors for each blueprint to track the version you are currently using. It can also monitor other developers’ blueprints as long as they use version numbers and you provide the required sensors to track those versions.

  • Trigger Options:

    • Button Helper:
      Manually trigger the update check from the Home Assistant user interface (UI).
    • Time & Day:
      Automatically check for blueprint updates at a specific time on the days you define.
  • Notification Options:

    • Mobile App Notifications:
      Send update alerts to one or more selected devices. Compatible with both Apple iOS and Android.
    • UI Notifications:
      Display update alerts directly within the Home Assistant user interface (UI).
  • Example:

:rocket: CHANGELOG

:shield: MY OTHER BLUEPRINTS

:bulb: Sensor Light - Motion Sensor - Door Sensor - Sun Elevation - LUX Value - Scenes - Time
:high_brightness: Smart Light - Entity - Sun Elevation - Ambient & Time Triggers
:infinity: Sensor Light Add On - Media & Movie Lights - House Alarm Lights - Smoke Alarm Lights & Exhaust Fans + More
:airplane: Holiday & Away Lighting
:shower: Bathroom Humidity Exhaust Fan
:low_battery: Low Battery Notifications & Actions
:vibration_mode: Appliance Notifications & Actions - Washing Machine - Clothes Dryer - Dish Washer - ETC
:loudspeaker: Notifications & Announcements
:calendar: Calendar Notifications & Actions
:round_pushpin: State Notifications & Actions
:battery: Battery Charger Notifications & Actions
:stop_button: Manual Control Status Tracker
:honeybee: Bee In The Hive Sensor
:robot: Android Notification Channel Manager
:toilet: Toilet Exhaust Fan with time delay
:hourglass_flowing_sand: Entity - Run ON Timer
:stopwatch: Trigger - Run ON Timer
:magic_wand: Manual light control with auto OFF
:door: Closet, Pantry, and Cupboard Lighting
:timer_clock: Timer
:thermometer: Temperature Control Fan
:snowflake: Temperature Control Exhaust Fan - Inverted
:eight_spoked_asterisk: Toggle Switch - Turn ON & OFF Entities
:nazar_amulet: Press Button - Turn ON & OFF Entities
:on: Switch - Turn ON & OFF Entities

Like this blueprint? Consider hitting the :heart: button below :+1:

5 Likes

FAQ

Q: How do I setup the sensors?

A: For more information please Click Here

Q: How do I setup the folder watcher?

A: For more information please Click Here

Q: Do you have any other developers blueprint sensors?

A: Yes, click here.

Q: How do I check if the blueprint is working?

A: Click here for steps to follow.

Q: What are the notification options on iOS and Android devices

A: Please Click Here

FAQ - How do I setup the sensors?

Why are there two sensors?

You need two sensors for each blueprint you want to track:

  1. GitHub REST Sensor
    Fetches the latest version from the online blueprint (via the raw GitHub or Gist URL).
  2. Local Command Line Sensor
    Reads the installed version from your local blueprint file using a shell command.

These sensors are compared to detect if a new version is available.


How often do these sensors update?

Only once per day.
The scan_interval is set to 86400 seconds (24 hours), which is more than enough.

Why only once a day?

  • Blueprints rarely update more than once daily.
  • Scanning too often may result in your IP being rate-limited or blocked by GitHub.
  • Every time the automation runs, it manually updates both sensors, so a daily scan is sufficient.

Can I change the name of the sensors?

Yes. The name: field defines how your sensor appears in Home Assistant.
You can rename it to suit your language or preferences, just ensure the entity_id is updated accordingly in your automations or dashboard.


How do I add these sensors?

Paste the following code into your configuration.yaml
(or into sensors.yaml or command_line.yaml if you split your configuration):

:warning: Important:
Only include sensor: and command_line: once in your configuration file.
When you add any additional sensors, make sure they are placed under the correct heading (sensor: or command_line:).

Below are the sensors used for the :bulb:Sensor Light Blueprint.

sensor:
  - platform: rest
    name: "Sensor Light Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.githubusercontent.com/Blackshome/6edfec0ff6a25c5da0d07b88dc908238/raw/sensor-light.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Sensor Light Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/sensor-light.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400

How do I apply changes after adding the sensors?

  1. Save your configuration file.
  2. Restart Home Assistant:
    Go to Settings → System → Click the power icon (top-right) → Select Restart Home Assistant.
  3. After the restart, your sensors will become available.

How do I check if the sensors are working?

  • Add the sensors to any dashboard.
  • You should see version numbers like 1.2 or 1.3.
  • If the value shows unknown, the sensor may be misconfigured. Double-check:
    • The path to your local blueprint file
    • The URL of your GitHub Gist
    • Any formatting issues in your confi

What are all your blueprint sensors?

See the example code below for all of my blueprint sensors used to track the version of each blueprint. Simply copy the ones you need and adjust the names or settings to match your language or preferences.

Sensor Light - Motion Sensor - Door Sensor - Sun Elevation - LUX Value - Scenes - Time
sensor:
  - platform: rest
    name: "Sensor Light Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.githubusercontent.com/Blackshome/6edfec0ff6a25c5da0d07b88dc908238/raw/sensor-light.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Sensor Light Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/sensor-light.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Smart Light - Entity - Sun Elevation - Ambient & Time Triggers
sensor:
  - platform: rest
    name: "Smart Light Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/e6c8f1bf846bab2fa4431934a0a85770/raw/smart-light.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Smart Light Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/smart-light.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Sensor Light Add On - Media & Movie Lights - House Alarm Lights - Smoke Alarm Lights & Exhaust Fans + More
sensor:
  - platform: rest
    name: "Sensor Light Add On Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/85d6e7dbfa3390afbcf3e801b8be6294/raw/sensor-light-add-on.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Sensor Light Add On Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/sensor-light-add-on.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Holiday & Away Lighting
sensor:
  - platform: rest
    name: "Holiday & Away Lighting Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/0a34870755762bcb9fab159d5b94fd25/raw/holiday-away-lighting.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Holiday & Away Lighting Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/holiday-away-lighting.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Bathroom Humidity Exhaust Fan
sensor:
  - platform: rest
    name: "Bathroom Humidity Exhaust Fan Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/8e09a8213b834f1be4ab49ba880abed8/raw/bathroom-humidity-exhaust-fan.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Bathroom Humidity Exhaust Fan Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/bathroom-humidity-exhaust-fan.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Low Battery Notifications & Actions
sensor:
  - platform: rest
    name: "Low Battery Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/4010fb83bb8c19b5fa1425526c6ff0e2/raw/low-battery-notifications-and-actions.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Low Battery Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/low-battery-notifications-and-actions.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Appliance Notifications & Actions - Washing Machine - Clothes Dryer - Dish Washer - ETC
sensor:
  - platform: rest
    name: "Appliance Notification Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/42586b567d243d432887cadf54e18906/raw/appliance-notifications.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Apliance Notification Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/appliance-notifications.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Notifications & Announcements
sensor:
  - platform: rest
    name: "Notification & Announcments Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/180ca4a24af81cd5d843acfc039039bc/raw/notifications-and-announcements.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Notification & Announcments Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/notifications-and-announcements.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Calendar Notifications & Actions
sensor:
  - platform: rest
    name: "Calendar Notification Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/40bfd92fb1fe6a9a9189325704a3c81b/raw/calendar-notifications-and-actions.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Calendar Notification Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/calendar-notifications-and-actions.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
State Notifications & Actions
sensor:
  - platform: rest
    name: "State Notification Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/06f6f28e76299267b813dac48608f549/raw/state-notifications-and-actions.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "State Notification Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/state-notifications-and-actions.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Battery Charger Notifications & Actions
sensor:
  - platform: rest
    name: "Batery Charger Notification Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/b99340b548d7fe4aedd96adc8c7a175d/raw/battery-charger-notifications.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Battery Charger Notification Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/battery-charger-notifications.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Blueprint Update Notifications
sensor:
  - platform: rest
    name: "Blueprint Update Notifications Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/ede9cf745f3b86ff8576c21b6ca1509a/raw/blueprint-update-notifications.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Blueprint Update Notifications Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/blueprint-update-notifications.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Manual Control Status Tracker
sensor:
  - platform: rest
    name: "Manual Control Status Tracker Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/993beed8b1c6ea29613b67f54d592456/raw/manual-control-status-tracker.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Manual Control Status Tracker Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/manual-control-status-tracker.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Bee In The Hive Sensor
sensor:
  - platform: rest
    name: "Bee In The Hive Sensor Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/00da6c9c96e1f7ec3aeeab400f048c16/raw/bee-in-the-hive-sensor.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Bee In The Hive Sensor Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/bee-in-the-hive-sensor.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Android Notification Channel Manager
sensor:
  - platform: rest
    name: "Android Notification Channel Manager Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/610854c4868aa73e32347ca54aa276ae/raw/android-notification-channel-manager.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Android Notification Channel Manager Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/android-notification-channel-manager.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Toilet Exhaust Fan with time delay
sensor:
  - platform: rest
    name: "Toilet Exhaust Fan Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/70349658a0c7543dbaa5f2e69e10cce0/raw/toilet-exhaust-fan.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Toilet Exhaust Fan Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/toilet-exhaust-fan.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Entity - Run ON Timer
sensor:
  - platform: rest
    name: "Entity - Run ON Timer Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/99ac675f3189a64b11daae5ff7eafaa7/raw/run-on-timer.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Entity - Run ON Timer Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/run-on-timer.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Trigger - Run ON Timer
sensor:
  - platform: rest
    name: "Trigger - Run ON Timer Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/495198096386f0db2cdaf91c0bda50ea/raw/trigger-run-on-timer.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Trigger - Run ON Timer Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/trigger-run-on-timer.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Manual light control with auto OFF
sensor:
  - platform: rest
    name: "Manual Light Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/9f9785d7aa0ba7978fa6515a2d73d192/raw/manual-light.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Manual Light Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/manual-light.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Closet, Pantry, and Cupboard Lighting
sensor:
  - platform: rest
    name: "Closet, Pantry, and Cupboard Lighting Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/5aac0fe94d23a71154aee5ba8d1375bc/raw/closet-pantry-cupboard-lighting.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Closet, Pantry, and Cupboard Lighting Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/closet-pantry-cupboard-lighting.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Timer
sensor:
  - platform: rest
    name: "Timer Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/ec0afd31dce7fc6b106e378d06b01940/raw/timer.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Timer Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/timer.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Temperature Control Fan
sensor:
  - platform: rest
    name: "Temperature Control Fan Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/043e1e4e8bcf91d7efa1fa56c06bde2f/raw/temperature-control-fan.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Temperature Control Fan Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/temperature-control-fan.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Temperature Control Exhaust Fan - Inverted
sensor:
  - platform: rest
    name: "Temperature Control Exhaust Fan - Inverted Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/b87a33849ca06dea3623480dbbbb45bb/raw/temperature-control-exhaust-fan-inverted.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Temperature Control Exhaust Fan - Inverted Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/temperature-control-exhaust-fan-inverted.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Toggle Switch - Turn ON & OFF Entities
sensor:
  - platform: rest
    name: "Toggle Switch Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/fd16903e90c2aa58c75e92d2cafc6115/raw/toggle-switch-turn-on-off-entities.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Toggle Switch Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/toggle-switch-turn-on-off-entities.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Press Button - Turn ON & OFF Entities
sensor:
  - platform: rest
    name: "Press Button Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/ca6be121c8d3e4404e33114fc88b599a/raw/press-button-turn-on-off-entities.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Press Button Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/press-button-turn-on-off-entities.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Switch - Turn ON & OFF Entities
sensor:
  - platform: rest
    name: "Switch - Turn ON & OFF Entities Blueprint Gist Version Number"
    icon: mdi:cloud-tags
    resource: "https://gist.github.com/Blackshome/dbcd8ebfdd0350144fc1503fc0fa8112/raw/switch-turn-on-off-entities.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version:\\s*([0-9.]+)\\*\\*') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Switch - Turn ON & OFF Entities Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version: [0-9.]+' /config/blueprints/automation/Blackshome/switch-turn-on-off-entities.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400

FAQ - How to set up Folder Watcher

What is the Folder Watcher integration?

The Folder Watcher integration in Home Assistant monitors specified folders for changes like file creation, modification, deletion, or movement. When a change happens, it triggers events that you can use to start automations.


Why should I use Folder Watcher?

Folder Watcher helps you automatically detect updates to your blueprint files. When a blueprint file changes, Folder Watcher triggers automations that update your sensors, keeping them in sync with the latest blueprint version.


Do I need to use Folder Watcher?

No, the local version sensor will still update when Home Assistant restarts, when its scan interval runs, or whenever the automation is triggered. This option is not required unless you want version changes reflected immediately in the UI when you update the blueprint.


How do I set up Folder Watcher?

For detailed installation instructions, please visit the official Home Assistant page: Folder Watcher Integration.

After installation, follow these two steps:

  1. Add the folder to the allowlist
    To prevent errors like ā€œConfigured path is not in allowlistā€, add the following to your configuration.yaml:
homeassistant:
  allowlist_external_dirs:
    - /config/blueprints/automation/Blackshome/
  1. Configure Folder Watcher integration
  • Install the Folder Watcher integration from Home Assistant.
  • Add the folder path /config/blueprints/automation/Blackshome/ to monitor.
  • In your blueprint, enable the Folder Watcher option and enter the blueprint file name to watch (for example, sensor-light.yaml).

What if I use blueprints from other developers?

If you use blueprints from other developers stored in different folders, you will need to add those folders’ paths to the allowlist_external_dirs as well. For example:

homeassistant:
  allowlist_external_dirs:
    - /config/blueprints/automation/Blackshome/
    - /config/blueprints/automation/hvorragend/
    - /config/blueprints/automation/Blackymas/

You will also need to add each of these folders as additional entries in the Folder Watcher integration so it can monitor them properly.

Enjoy

Blacky :smiley:

Back to FAQ: Click Here

FAQ - Do you have any other developers blueprint sensors?

Yes, I’ve created sensors for two blueprints while testing this automation.
If you’d like to track the version of a specific blueprint, you can either create your own sensor or ask the blueprint’s developer to provide one.

If you’re a blueprint developer and would like to share your sensors, feel free to post them here, I’ll link them in this FAQ.

Please note: I don’t plan to develop sensors for every blueprint, so I kindly ask that you don’t request them from me directly.

Cover Control Automation (CCA)
sensor:
  - platform: rest
    name: "Cover Control Blueprint Github Version Number"
    icon: mdi:cloud-tags
    resource: "https://raw.githubusercontent.com/hvorragend/ha-blueprints/main/blueprints/automation/cover_control_automation.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version\\*\\*:\\s*([0-9.]+)') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "Cover Control Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version[*][*]: [0-9.]+' /config/blueprints/automation/hvorragend/cover_control_automation.yaml | grep -oE '[0-9.]+'"
      scan_interval: 86400
Sonoff NSPanel
sensor:
  - platform: rest
    name: "NSPanel Blueprint Github Version Number"
    icon: mdi:cloud-tags
    resource: "https://raw.githubusercontent.com/Blackymas/NSPanel_HA_Blueprint/main/nspanel_blueprint.yaml"
    method: GET
    headers:
      accept: "text/plain"
    value_template: >
      {% set match = value | regex_findall('\\*\\*Version\\*\\*:\\s*(v?[0-9.]+)') %}
      {{ match[0] if match else 'unknown' }}
    scan_interval: 86400


command_line:
  - sensor:
      name: "NSPanel Blueprint Local Version Number"
      icon: mdi:code-not-equal-variant
      command: "grep -oE '[*][*]Version[*][*]: v?[0-9.]+' /config/blueprints/automation/Blackymas/nspanel_blueprint.yaml | grep -oE 'v?[0-9.]+'"
      scan_interval: 86400

Enjoy

Blacky :smiley:

Back to FAQ: Click Here

1 Like

Thank you for providing an example of CCA. A wonderful helpful blueprint.

1 Like

FAQ - How do I check if the blueprint is working?

  1. Edit the version number in your local blueprint YAML file to a different value.
  2. Run the automation manually.
  3. You should receive a notification that a new version is available, and your sensors will be updated.
  4. Now update the blueprint file to the correct (latest) version and run the automation again.
  5. This time, you should not receive a notification because the versions match.
  6. Both sensors should update accordingly, confirming everything is working as expected.

Enjoy

Blacky :smiley:

Back to FAQ: Click Here

Initial release 1.0

New blueprint :partying_face: Hope you like it :wink:

While Home Assistant currently does not have a native blueprint update notification system, this blueprint serves as a useful stop-gap solution. It helps keep your automations and blueprints up to date until (hopefully) Home Assistant integrates an official update notifier directly into the platform.

If you like this blueprint? Consider hitting the :heart: button in the top post :+1:

If you like my blueprints, and would like to show your support or just say thank you? Click Here :smiling_face_with_three_hearts:

Enjoy

Blacky :grinning:

I was checking this out, because this one is interesting,
It seems like I have to create an automation per Blueprint,
is there a way to create one automation for all blueprints?
HA already knows the location of the blueprints which are imported.

@bkbartk

I looked into that, but in order for the blueprint to check for updates and notify you in a user-friendly way, it needs:

  1. Two sensors
  2. A URL to the online blueprint
  3. A file path to the local blueprint
  4. The name of the blueprint

Unfortunately, Home Assistant doesn’t currently expose this metadata in a way we can use programmatically. This blueprint is intended as a helpful stop-gap until Home Assistant hopefully provides native support for blueprint update checking.

In a recent YouTube video, Paulus and Franck mentioned that this feature might be added in the future, but it’s up to the core team if and when it happens. Ideally, Home Assistant could support metadata fields like version:, url:, and others directly in the blueprint definition. That would make update checks much simpler, since we already know where to look inside the blueprint file, we just lack standardized metadata. Without it, we need to rely on sensors to extract and compare that information manually. I won’t suggest how it should be implemented, the Home Assistant team is far more experienced and will know the best way forward.

I also explored making a single blueprint manage updates for multiple blueprints at once, but the number of inputs needed made things overly complex and confusing. So I’ve stuck with a simpler one automation per blueprint approach.

Once you’ve created your first update-check automation, you can duplicate it and just change the inputs for each blueprint you want to track.

Naming your automations clearly will help keep things organized, for example:
Blueprint Update Notification - Sensor Light
Blueprint Update Notification - Bathroom Exhaust Fan

You don’t have to track every blueprint, just the ones you care most about. As long as you can create sensors for them, this will work. You can find all the sensor examples for each of my blueprints in the FAQ.

Blacky :grinning:

This is really cool. You put what the below link does into a blueprint so people can use it easier. I’ve been pushing this thing for years and use it every day. The nice thing about it is that is scans the blueprints you have in the files system, parses for the URL, then checks if that url content matches the local content, and depending on options tells you it changed, or pulls it in, and gives you a notification if you want it.

Posting it here for you in case some of their code will give you ideas for improvements. (In case you have not seen this). It is working for automations, scripts, and templates. It’s not my code, I’ve just been using it.
:link:koter84 Blueprint Update Script

@Sir_Goodenough

I haven’t seen that post, but it sounds interesting. It’s great to have this discussion because ideally, I’d like to retire this blueprint and have Home Assistant offer a better, built-in solution.

In one YouTube discussion I did watch, I recall Paulus and Franck mentioning their concerns about potentially breaking users’ automations if Home Assistant provided an official update mechanism. I then put down some thoughts of my own for what I want to achieve with this blueprint:


:dart: Goals for the Blueprint

  1. User-Friendly Design
    Make it accessible to most Home Assistant users without requiring technical knowledge. Include all the information needed to set it up and use it.
  2. Selective Monitoring
    Allow users to monitor only the blueprints that they would like to monitor.
  3. Contextual Notifications
    Provide a link in each notification, either to the community forum, GitHub, or a custom URL, so users can easily check what’s changed and assess any breaking changes before updating.
  4. User-Controlled Updates
    Let users decide when and how to apply updates. This avoids the concern raised by Paulus and Franck and ensures users remain in control of their own setup.
  5. Flexible Notification Options
    Let users choose how they’re notified, via the mobile app, persistent notifications, or both.
  6. Custom Actions
    Support flexible actions like voice announcements (a hot topic right now), daily update routines, Telegram, email, or anything else users prefer, powered by custom actions.
  7. Language Flexibility
    Make it easy to customize notification text for different languages or personal preferences.
  8. Community Feedback Driven
    Respond to feedback from users who want an easier way to know when a blueprint update is available.
  9. Open for Other Authors
    Enable other blueprint authors to use the same or a similar format (version numbers in the description) so their blueprints can also be checked by the community.

:bulb: Additional Thoughts

I explored a version-checking approach using the version number or update date from GitHub, but that required a text_input to store the current version (not in blueprint file) and a manual action button to update it, not very user-friendly.

Instead, comparing the version numbers found in the local and online files looked to be more practical. The only requirement is that authors must include a version number in the description and format their blueprint in a way that works with the sensor.

This did concern me, but if other authors follow the same version format I use, it becomes much easier to support their blueprints by simply copying my version and sensor format. That said, it’s still not an ideal solution, as it doesn’t automatically cover all blueprints, it relies on authors using a specific structure. I did explore other blueprints that include version numbers, and while I could retrieve the version info, each one was tailored differently to suit the author’s format, which again isn’t a consistent or scalable approach. Maybe I could look at parsing the entire blueprint file instead, like the method suggested in your post.


:jigsaw: A Suggestion for Home Assistant Core

It would be great if Home Assistant introduced a unified metadata structure for blueprints. Just like there’s already a source_url:, something like the following could really help:

update_info:
  source_url: https://github.com/...
  community_url: https://community.home-assistant.io/...
  version_number: 4f71833a7aaae179e2d9d8b5f210b60206f1dab5

Breakdown:

  1. source_url:
    Already exists, used to track where the blueprint was imported from.
  2. community_url:
    Could be automatically populated based on where the blueprint was imported from.
    If the user clicks the ā€œImport Blueprintā€ button (common on the Community Forum or GitHub), Home Assistant already knows the source URL. It could use this to provide a link to the original discussion thread, GitHub repo, or the source site, making it easier for users to access changelogs, support, and discussions around updates.
    3. version_number:
    Can be pulled directly from GitHub using a REST sensor, similar to how Home Assistant already retrieves the source_url:.
    Example: This gets my Sensor Light Blueprint gist version number from GitHub:
Sensor:
  - platform: rest
    name: "Gist Sensor Light Revision"
    resource: "https://api.github.com/gists/6edfec0ff6a25c5da0d07b88dc908238"
    method: GET
    headers:
      accept: "application/json"
    value_template: "{{ value_json.history[0].version }}"
    scan_interval: 46400

Add a toggle in the Blueprints UI page to enable or disable update checking per blueprint.

  • When toggled ON, Home Assistant checks that the blueprint contains the required update_info metadata:
update_info:
  source_url: https://github.com/...
  community_url: https://community.home-assistant.io/...
  version_number: 4f71833a7aaae179e2d9d8b5f210b60206f1dab5
  • This metadata must be present and populated when the blueprint was imported via the Import Blueprint button.

  • If the metadata is missing or the blueprint was not imported via the import button, the toggle cannot be enabled.

    This gives users simple control over which blueprints get update checks while ensuring only properly formatted and imported blueprints are monitored.


Again, the Home Assistant team is far more experienced and will know the best way forward. I just hope they consider developing an official blueprint update checker in the future, something simple, reliable, and user-friendly that benefits both blueprint authors and users alike.

Blacky :grinning:

2 Likes

I have this bash one running, but 2 things I like about what it does and what yours probably does is if the author changes something I have it within a day. Also I can import a blueprint, and since HA donks with the formatting, the ā€˜update’ tool detects that it’s different and then downloads the version as it is stored in the GIT site or the Forum page if the author stores it there. I get to see the original formatting not the filtered one.
I have also added an automation and script reload after the bash script is done to load the new code. Dangerous but a thing people might want to do, I don’t know if you offer it.

Now when I developing a new version of something, this messes with me and un-does my changes if I forget to disable the update for this one. Done that a few times. So a reminder to anyone that is adjusting the actual blueprint code, turn this blueprint off for that one because it will (and is designed to) revert your local changes in favor of the original.

@Sir_Goodenough

This is why it is good for user to manually update just like a Home Assistant update.

My one just gives you the notification. Something like this

You then have a link to the forum to check it out. If you are happy with the new release press the import blueprint button again and your done.

This is my settings for the sensor light blueprint. You just need to update the button and your device and maybe disable the Folder Watcher Option.

alias: Blueprint Update Notification - Sensor Light
description: ""
use_blueprint:
  path: Blackshome/blueprint-update-notifications.yaml
  input:
    blueprint_local_sensor: sensor.sensor_light_blueprint_local_version_number
    button_entity: input_button.blueprint_version_checker
    include_button: enable_button_trigger
    notify_device:
      - 53.......
    blueprint_github_sensor: sensor.sensor_light_blueprint_gist_version_number
    blueprint_url: >-
      https://community.home-assistant.io/t/sensor-light-motion-sensor-door-sensor-sun-elevation-lux-value-scenes-time-light-control-device-tracker-night-lights/481048
    include_notify: enable_mobile_app_notify
    include_persistent_notification: enable_persistent_notification
    include_folder_watcher: enable_folder_watcher
    blueprint_file_name: sensor-light.yaml
    persistent_message_url_title: Click Here to view the blueprint!
    include_blueprint_url: enable_blueprint_url
    include_version_numbers: enable_version_numbers
    include_time: time_enabled
    time: "17:00:00"
    blueprint_name: šŸ’”Sensor Light

Blacky :grinning:

That is very user friendly. Very nice.

FAQ - A Guide to Notification Options on iOS and Android Devices

:apple: iOS ONLY OPTIONS

What are Notification Interruption Levels on iOS?

On devices running iOS 15 and later, you can configure the interruption level for your notifications to ensure they are delivered according to your preferences. This feature allows you to choose how notifications are presented and how they interrupt your activities.

Interruption level Breaks through Focus Overrides Ring/Silent switch on iPhone and iPad
Default No No
Critical Notification Yes Yes
Time Sensitive Notification Yes - Must be enabled in focus No
Quiet notifications without waking screen No No

Notification Sound - iOS Only

The Home Assistant app for iOS includes built-in notification sounds, and you can import sounds from your iOS device into the Home Assistant app. Custom sounds can also be added via iTunes or from your cloud storage.

:warning: Note: In the blueprint, make sure to enter the full filename (including the file extension) in the Notification Sound - iOS Only input, as shown below. If left blank, your device will play the default notification sound based on its settings.

  • Built-in Notification Sounds:

    Home Assistant includes some built-in sounds that are already preinstalled in the Home Assistant iOS App.

    1. On your iPhone, go to:
      Settings > Home Assistant App > Notifications > Home Assistant Notification Settings > Sounds
    2. Tap the Bundled tab.

    These are the built-in Home Assistant sounds. You can copy the file names into your Notification Sounds – iOS Only input.

  • iOS Device Sounds:

    You can also import iOS system sounds into the Home Assistant iOS App.

    1. On your iPhone, go to:
      Settings > Home Assistant App > Notifications > Home Assistant Notification Settings > Sounds
    2. Tap the System tab, then select Import System Sounds.
    3. Wait for the sounds to load, then restart your device.

    You can now use iOS system sounds in your notifications by copying the file names into your Notification Sounds – iOS Only input.

  • Via iTunes:

    1. Connect your device and open iTunes.
    2. Select your device and go to File Sharing.
    3. Choose Home Assistant and add your WAV files (formatted as 32-bit float 48000Hz).
    4. Click Sync and disconnect the device.
    5. On your iPhone, go to:
      Settings > Home Assistant App > Notifications > Home Assistant Notification Settings > Sounds
    6. Tap the Import tab and select Import sounds from iTunes File Sharing.
  • Via Cloud Storage:

    1. Install and log in to your cloud storage app (e.g., Dropbox, Google Drive).
    2. Upload your WAV files (formatted as 32-bit float 48000Hz) to the cloud.
    3. On your iPhone, go to:
      Settings > Home Assistant App > Notifications > Home Assistant Notification Settings > Sounds
    4. Tap the Import tab, select Import custom sound, choose your files, and tap Done.
    5. Restart your device if needed.

:robot: ANDROID ONLY OPTIONS

What are High Priority Notifications?

Notifications will appear immediately in most cases. However, in some cases (such as when the phone is stationary or when the screen has been turned off for a prolonged period of time), default notifications will not ring the phone until the screen is turned on. High priority notifications are designed to alert you to important events or updates that require your immediate attention, ensuring they are received promptly even in these situations.

What are Sticky Notifications?

Sticky notifications are a type of notification that remain on your device’s notification shade until they are manually dismissed by the user. Unlike regular notifications, which can disappear when they are tapped, sticky notifications ensure that important messages are persistently visible until you actively clear or swipe them away, ensuring that critical information stays visible until addressed.

Notification Channels

What are Notification Channels?

Notification channels are a feature for Android devices only. They allow you to categorize notifications, making it easier to manage and prioritize them. Each channel can have its own settings, such as notification style, sound, vibration, blink light, app icon badges, locked screen, and do not disturb, ensuring that you receive notifications in the manner most appropriate for each type of notification you receive.

How Do I Create a Notification Channel?

Before creating channels, it is best to consider what channels you would like to have for your notifications. This will help you structure it correctly, as once you create a channel, it can be removed but will never be deleted unless you reset your app. Taking the time to consider how you would like it structured will help you in the long run.

Some ideas for a channel structure are as follows:

You could just set the notification type. Emergency, General Notification, Dinner Ready, Time for Bed, Appliance Finished, etc.

Or maybe something like this.

  1. Critical
  • Sound and pop-up.
  • Vibrate.
  • Blink light.
  • Locked screen.
  • Ignore Do Not Disturb.
  • Description : Notifications for emergency situations (e.g., fire alarm, flood alert, smoke detector, carbon monoxide detector, security breaches).
  1. High
  • Sound and pop-up.
  • Vibrate.
  • Locked screen.
  • Ignore Do Not Disturb.
  • Description : Notifications for reminders (e.g., upcoming appointment, power outage, rubbish reminder).
  1. General (Default)
  • Sound.
  • Vibrate.
  • Description : Notifications for general updates (e.g., appliance finished, battery low).
  1. Low
  • Silent.
  • Vibrate.
  • Description : Notifications for less critical updates (e.g., appliance started, unavailable sensor, battery low).
  1. Minimal
  • Silent and minimized.
  • Description : Notifications for non-urgent updates (e.g., reminder, Home Assistant update avalible).

To create a new channel, simply enter a name in the input. When your automation sends the first notification, it will create the channel on your device. After the channel is created, you can customize its notification settings to your preference directly on your device.

How Do I Edit a Notification Channel?

There are a few ways to do this:

  1. On your device, go into Settings > Notifications > Home Assistant and you will see categories. These are your channels. Select the one you would like to customize and make your adjustments.
  2. When a notification is received, slowly slide it to the left and you will see a settings icon. Click on it, and it will take you to categories. These are your channels. Select the one you would like to customize and make your adjustments.

How Do I Delete a Notification Channel?

I have a blueprint that will help you remove a notification channel. See link below.

:robot: Android Notification Channel Manager

Hope this helps to explain some of the settings :face_with_monocle:

Enjoy

Blacky :smiley:

Back to FAQ: Click Here

New Update 1.1

:toolbox: Maintenance

  • Mobile App Notify make provided URL links work.

If you like this blueprint? Consider hitting the :heart: button in the top post :+1:

If you like my blueprints, and would like to show your support or just say thank you? Click Here :smiling_face_with_three_hearts:

Enjoy

Blacky :grinning: