Forked from dbrand666/link_multiple_devices.yaml
Last active
October 2, 2025 21:13
-
-
Save jmaroeder/c0952533a3f2c746eef83db268ddbbba to your computer and use it in GitHub Desktop.
Select multiple entities to link their on/off state. If any selected entity is turned on or off, the other selected entities will be sent a matching on or off command.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| blueprint: | |
| name: Link On/Off/Brightness State of Multiple Devices | |
| description: | | |
| ## Link On/Off/Brightness State of Multiple Devices v1.1.1 | |
| Select multiple entities to link their on/off and brightness state. If any selected entity is turned on or off, or its brightness is adjusted, the other selected entities will be sent a matching on or off command. | |
| You can select any entity, but only entities supported by the `homeassistant.turn_on` or `homeassistant.turn_off` service calls will work. | |
| ### Requirements | |
| * All selected entities MUST suport `homeassistant.turn_on` and `homeassistant.turn_off` or errors will be logged and the blueprint will not work. | |
| * Requires Home Assistant 2022.5.0 or newer. | |
| ### Credits | |
| * [@adchevrier](https://community.home-assistant.io/u/adchevrier) for the [initial blueprint](https://community.home-assistant.io/t/synchronize-the-on-off-state-of-2-entities/259010) | |
| * [@hebus](https://community.home-assistant.io/u/hebus) for [this fantastic template](https://community.home-assistant.io/t/synchronize-the-on-off-state-of-2-entities/259010/38) | |
| * [@dbrand666](https://github.com/dbrand666) for [various fixes](https://gist.github.com/dbrand666/b731672b2a282b9afd51a97e6e5c2b2b) | |
| domain: automation | |
| homeassistant: | |
| min_version: 2022.5.0 | |
| input: | |
| linked_entities: | |
| name: Entities to link | |
| selector: | |
| entity: | |
| multiple: true | |
| transition: | |
| name: Transition | |
| selector: | |
| number: | |
| min: 0 | |
| max: 3600 | |
| unit_of_measurement: seconds | |
| default: 0 | |
| mode: restart | |
| max_exceeded: silent | |
| variables: | |
| linked_entities: !input linked_entities | |
| transition: !input transition | |
| trigger: | |
| - platform: state | |
| entity_id: !input linked_entities | |
| - platform: state | |
| entity_id: !input linked_entities | |
| attribute: brightness | |
| condition: | |
| - condition: template | |
| value_template: '{{ trigger.to_state.state != trigger.from_state.state or trigger.to_state.attributes.brightness != trigger.from_state.attributes.brightness }}' | |
| - condition: template | |
| value_template: '{{ (trigger.to_state.state == "on") or (trigger.to_state.state == "off") }}' | |
| - condition: template | |
| value_template: '{{ trigger.to_state.context.parent_id is none or (trigger.to_state.context.id != this.context.id and trigger.to_state.context.parent_id != this.context.id) }}' | |
| action: | |
| - service: homeassistant.turn_{{ trigger.to_state.state }} | |
| target: | |
| entity_id: '{{ expand(linked_entities) | selectattr("entity_id", "!=", trigger.entity_id) | map(attribute="entity_id") | list }}' | |
| data: > | |
| {% if trigger.to_state.state == "on" %} | |
| {"brightness": "{{ trigger.to_state.attributes.brightness }}", "transition": "{{ transition }}"} | |
| {% else %} | |
| {} | |
| {% endif %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Suggested change to support 2024.10 syntax. Note that line:
Modified for 2014.10 syntax (triggers: trigger, etc) AND min_version - SoundOfMind, 2024 10 02
can be removed. I don't deserve any credit - you and the other contributors did the hard work.
Thanks!
blueprint:
name: Link On/Off/Brightness State of Multiple Devices
description: |
## Link On/Off/Brightness State of Multiple Devices v1.1.1
## jmaroede/link_multiple_devices.yaml
## Modified for 2014.10 syntax (triggers: trigger, etc) AND min_version - SoundOfMind, 2024 10 02
domain: automation
homeassistant:
min_version: 2024.10.0
input:
linked_entities:
name: Entities to link
selector:
entity:
multiple: true
transition:
name: Transition
selector:
number:
min: 0
max: 3600
unit_of_measurement: seconds
default: 0
mode: restart
max_exceeded: silent
variables:
linked_entities: !input linked_entities
transition: !input transition
triggers:
entity_id: !input linked_entities
entity_id: !input linked_entities
attribute: brightness
conditions:
value_template: "{{ trigger.to_state.state != trigger.from_state.state or trigger.to_state.attributes.brightness != trigger.from_state.attributes.brightness }}"
value_template: '{{ (trigger.to_state.state == "on") or (trigger.to_state.state == "off") }}'
value_template: "{{ trigger.to_state.context.parent_id is none or (trigger.to_state.context.id != this.context.id and trigger.to_state.context.parent_id != this.context.id) }}"
actions:
target:
entity_id: '{{ expand(linked_entities) | selectattr("entity_id", "!=", trigger.entity_id) | map(attribute="entity_id") | list }}'
data: >
{% if trigger.to_state.state == "on" %}
{"brightness": "{{ trigger.to_state.attributes.brightness }}", "transition": "{{ transition }}"}
{% else %}
{}
{% endif %}