Hopefully, you grok at least a little Python, because itāll make the following point of view a bit easier to understand.
Blueprints, are kind of like Python functions: They are named things that take several inputs to perform an action. So, hereās very simple pattern to encapsulate logic.
def print_thing(thing):
print(f"From Print Thing {thing}")
print_thing("a")
print_thing("b")
print_thing("c")
It could also be done this way:
def print_things(things):
for thing in things:
print(f"From Print Things {thing}")
print_things(['a','b','c'])
Neither of these is ābetterā without context.
The overhead in Home Assistant is negligible between two automations with the same trigger and a different action in each, vs one automation with a trigger and two actions.
Actually writing cloned automations (i.e. without a blueprint available) was never advocated because itās cumbersome and requires a lot of extra work if modifications are ever made. In the above Python example, imagine if print_thing
was more complex, and then imagine if we didnāt have definable functions. Cloning it would look like this:
thing = "a"
print(f"From Print Thing {thing}")
thing = "b"
print(f"From Print Thing {thing}")
thing = "c"
print(f"From Print Thing {thing}")
But, not cloning it would look like this:
things = ['a','b','c']
for thing in things:
print(f"From Print Things {thing}")
In this case, the second version is less verbose and much easier to modify. So, our advice was always ādonāt clone the automation, add a trigger/action to it insteadā. However now that we have blueprints (functions) that advice can change if it benefits readability, functionality, or ease of development/troubleshooting. And, in some cases, it will.