If I do it this way, every time I add a new sensor; I have to go modify the automation. With a blueprint, it is done automatically
I am lazy
good point bro not Lazy just trying to be smart
here read this
just change the motion to moisture job done
The blueprint is missing an action section, this is where am getting it wrong. I used another BP as base but the editor doesn’t like " default: !input ‘actions’ "
blueprint:
name: Detect water and notify
description: detect 'moisture' device-class and if so execute an action.
domain: automation
input:
actions:
name: Actions
description: Notifications or similar to be run. {{sensors}} is replaced with the names of sensors.
selector:
action: {}
variables:
sensors: >-
{% set result = namespace(sensors=[]) %}
{% for state in states.sensor | selectattr('attributes.device_class', '==', 'moisture') %}
{% set result.sensors = result.sensors + [state.name ~ ' (' ~ state.state ~ ' %)'] %}
{% endfor %}
{% for state in states.binary_sensor | selectattr('attributes.device_class', '==', 'moisture') | selectattr('state', '==', 'on') %}
{% set result.sensors = result.sensors + [state.name] %}
{% endfor %}
{{result.sensors|join(', ')}}
trigger:
- type: moist
platform: device
action:
- choose: []
default: !input 'actions'
mode: single
Can you make a link to this blueprint? I was looking for this functionality!
I don’t want to maintain a blueprint, but I created one for my own use for my water sensors. If someone wants to publish properly, feel free to take this.
blueprint:
name: Moisture Sensor
description: Perform action when moisture sensor turns wet
domain: automation
input:
actions:
name: Actions
description: Notifications or similar to be run.
{{ trigger.event.data.new_state.attributes.friendly_name }} will be the name of the
sensor
selector:
action: {}
trigger:
- event_data: {}
event_type: state_changed
platform: event
condition:
- condition: template
value_template: '{{ trigger.event.data.new_state.attributes.device_class == "moisture" }}'
- condition: template
value_template: '{{ trigger.event.data.new_state.state == "on" }}'
action:
- choose: []
default: !input 'actions'
mode: single
I create an action on Call service
calling the notify.mobile_app_my_iphone
with data like:
message: 'Leak detected by {{ trigger.event.data.new_state.attributes.friendly_name }}'
data:
push:
sound:
name: default
critical: 1
volume: 1
@ mrmarcsmith
I didn’t have the time to complete it and publish but I will try to do that very soon and publish it.
@ joel_d1
I can use yours and merge with mine if needed, is that ok ?
Here is my simple blueprint that will send a notification to a defined device if moisture is detected by any configured sensor: https://gist.github.com/bbbenji/d4d1fe1856ec54370a422508c8963f2a
It also relays the sensor’s friendly_name
in the message.
Just select where the notification should go and you’re all set.
I know this is a bit off topic but I like this idea and wanted to share my water notification script, I have my water sensor sitting in my sump, so if my pump fails I want it to get me out of bed! The mobile app max volume alert is great for this.
water_alarm:
sequence:
- alias: Water Alarm
repeat:
while:
- condition: state
entity_id: binary_sensor.basement_water_sensor
state: 'on'
# Don't do it too many times
- condition: template
value_template: "{{ repeat.index <= 60 }}"
sequence:
- service: notify.mobile_app_chriss_iphone
data:
title: "Water Alarm Triggered!"
message: "Check the sump pump in the basement!"
data:
push:
sound:
name: default
critical: 1
volume: 1.0
- delay: '00:01:00'
- service: notify.chris_sms
data:
title: "Water Alarm Triggered"
message: "Check the sump pump in the basement"
- delay: '00:01:00'
Nice. But I have a notify.group and with the existing blueprint I am not allowed to use this
action:
domain: mobile_app
type: notify
device_id: !input notify_device
I can only select one mobile, what do I have to change to be able to select my:
notify.ios_group_phones in the blueprint
Blueprint’s device selector won’t show groups, just mobile apps (which makes sense, given it has a selector of mobile_app
). Maybe someone else can expand on the issue.
I have other automations where I can select the notify group.
Does anyone know what I should change mobile_app to? in order to make this possible
Please share the blueprint and I can take a look.
I haven’t had time to work on this but now I want to use the alert integration to notify and confirm. This way the alert will continue and until you go and acknowledge it or the conditions change
I posted a comment on your GitHub but wanted to make one here too for anyone running into a problem like I did. I was not getting any notifications for leaks and looked at the yaml and was getting an error. I needed to remove the !input from the actions to relieve the error and can confirm it fires off as expected.
was:
action:
domain: mobile_app
type: notify
device_id: !input notify_device
Now:
action:
domain: mobile_app
type: notify
device_id: notify_device
Hope this helps someone.
Thanks for the typo fix @LCSteve!
As for the !input
error you’re are getting, I have no idea why… It’s a valid tag and required for it to be configurable. See: Blueprint tutorial - Home Assistant
I found this, and the configuration where you use just one blueprint / automation for all sensors are genious.
One thing bugs me a bit, though:
This automation uses the friendly name of the entity that is triggered, in this case the water leak entity.
If I don’t set a new friendly name for that entity, it gives me messages like this: “Testsensor water leak has detected a leak”, which seems a bit strange to me.
Isn’t it possible to change the action in the automation to use the device friendly name instead?
See this picture:
Can that be done? And if so, how?
Thanks
I am not sure that’s possible without making the blueprint overly complicated. Keep in mind that it’s listening to moisture
entities, not their devices. Just change the entity’s friendly name. As an example, I use “Kitchen flood sensor” so my notification would show “Kitchen flood sensor has detected a leak.”
Yes, that’s what I ended up doing. Thanks for the blueprint, nice work!
Let me start this by saying that I’m in no way a HA automation expert. It seems that this automation triggers every time ANY state changes, and the evaluates the condition as to whether the event has a device class of moisture. Probably 99% of the times this automation triggers, it immediately exits out as the state change was something other than moisture. Is there any way to limit the automation to only trigger on state changes of moisture sensors instead of all state changes?
Hi @benji,
I’ve been using this blueprint for a few weeks now and I never would’ve gotten this far without you, so thanks.
I migrated from Hubitat and they had a built in feature for this as well as some smart subsequent automations. I’m not here to tell anybody that this needs to be changed, but here’s some things that’ve helped me on another platform and I altered your blueprint to fit my needs (which might be useful to others).
Basic operation:
Detects the state change of moisture type sensors to on
Turn off DND on all voice assistants to prep for the announcements in case it’s at night
Turn off water supply valve (this is the part that was built into hubitat and what I am suggesting)
The water supply valve has it’s own independent automations that notify the house and devices if it is ever closed.
Activate a scene that turns all accent lights in the house blue
Notify phones with the dynamic announcement including leak sensor name
Announce via voice assistants including leak sensor name
By this time, the water supply valve would be closed and another message would’ve went to phones/voice assistant indicating the threat has been neutralized by turning off the water (in case I am unable to witness the messages in real time, the phones will still say where the leak was and that the water supply valve was closed).
This of course could all be in one automation and that’s where I was headed with this but then I decided at the last minute, I want to be notified of a water supply valve closure in all circumstances (not just leaks) so I left it separate for my circumstance.
Now that the lights are blue, I know where the leak is, and the water has been turned off, what do I do? I tied the lights reset automation back to the water supply valve being opened. Reason being, a leak sensor could stop being wet but the issue not yet resolved (because the water is still off or perhaps the leak is unresolved). The resetting of all the lights was cumbersome in Hubitat but I have adaptive lighting in HA, so I just automate a toggle on the adaptive lights and it puts everything back to how it should be. I guess this would be different for the user; a scene could be used for this too.
mode: single
- id: '1642307791979'
alias: Leak Detection - Notifier and Shutdown
description: ''
trigger:
- platform: event
event_type: state_changed
event_data: {}
condition:
- condition: template
value_template: '{{ trigger.event.data.new_state.attributes.device_class == "moisture"
}}'
- condition: template
value_template: '{{ trigger.event.data.new_state.state == "on" }}'
action:
- service: script.alexa_disable_do_not_disturb_all_devices
- type: turn_off
device_id: dfd03c8879f516f34824e0ade307bdf8
entity_id: switch.water_supply_valve
domain: switch
- service: scene.turn_on
target:
entity_id: scene.leak_detection_scene
- service: notify.mobile_app_sarge_s_phone
data:
message: '{{ trigger.event.data.new_state.attributes.friendly_name }} has detected
a leak.'
- service: notify.mobile_app_iphone
data:
message: '{{ trigger.event.data.new_state.attributes.friendly_name }} has detected
a leak.'
- service: notify.alexa_media
data:
target: media_player.kitchen_echo_show, media_player.2nd_floor_hallway_echo_dot,media_player.bathroom_1_echo_dot,
media_player.bedroom_2_echo_show,media_player.bedroom_echo_show, media_player.office_echo_show,media_player.garage_entryway_echo_show,
media_player.garage_echo_dot
data:
type: announce
message: '{{ trigger.event.data.new_state.attributes.friendly_name }} has detected
a leak.'
mode: single
These are merely fun suggestions that I’ve used in my personal setup and you can decide to incorporate them or not. Again, I want to thank you for the foundational legwork that made this easy for me to do.