You should be able to use the state trigger, as such:
trigger:
- platform: state
entity_id: light.example #Insert your Entity here
to: unavailable
I hope that helps
You should be able to use the state trigger, as such:
trigger:
- platform: state
entity_id: light.example #Insert your Entity here
to: unavailable
I hope that helps
Thank you, but I have tons of yeelight and shelly devices and I have to do an automation for each of them. Is here any other way to check unavailability of all the devices in one automation? Like ping every 5 minutes and then notify if a specific device doesn’t reply (the ping it’s just an example )
Not to sure, did a quick google and found this yaml which may help.
Unavailable Sensor Detection and Notification (github.com)
Here is a link to the thread I found it from: Sensor - Unavailable/Offline Detection - Share your Projects! - Home Assistant Community (home-assistant.io)
I personally do not detect when devices go offline, as it happens far to often, but that is do to poor WIFI which will soon be replaced with a better Access Point.
I have now Netgear Orbi RBR50 with 2 satellites and in fact I have more stable WiFi connections compared with old Asus AP. Till now I got no device offline, but just in case I would like to be prepared. Anyway, thank you for your search, I’ll try to implement an unavailable sensor
Hey there. That unavailable sensor gist is mine. I put out an updated version recently and it didn’t work well. Just wanted to make sure you try the right one - the group version. It is the one linked above. I forgot to update the gist until I saw this thread.
Anyway, you should be able to just drop the package in and go! Let me know if you have any issues.
You can use the suggestion from the second post and just add all your entities you want to track to the list, no need for ine automation per device.
E.g. from my system
# Notify on Device Offline
- id: notify_on_device_offline
alias: "Benachrichtigung bei Gerät offline"
mode: parallel
trigger:
- platform: state
entity_id:
- sensor.battery_level_remote_light_livingroom
- sensor.battery_level_remote_light_dressroom
- sensor.battery_level_remote_light_bedroom
- sensor.battery_level_remote_light_office
- sensor.battery_level_remote_sabrina
- sensor.battery_level_remote_dimitri
- binary_sensor.motion_livingroom
- binary_sensor.motion_dressroom
- binary_sensor.motion_bedroom
- binary_sensor.motion_office
- sensor.temperature_bathroomsmall
- sensor.temperature_livingroom
- sensor.temperature_storageroom
- sensor.lux_outside
- sensor.lux_office
- binary_sensor.door_bathroomlarge
- binary_sensor.door_bathroomsmall
- binary_sensor.door_office
- binary_sensor.door_bedroom
- binary_sensor.door_dressroom
- binary_sensor.door_storageroom
- binary_sensor.door_kitchen
- binary_sensor.door_livingroom
- binary_sensor.door_main
- binary_sensor.window_bathroomlarge
- binary_sensor.window_office
- binary_sensor.window_dressroom
- binary_sensor.window_bedroom
- binary_sensor.window_kitchen
- binary_sensor.window_livingroom
- binary_sensor.water_leak_bathroomsmall
- binary_sensor.water_leak_bathroomlarge
- binary_sensor.water_leak_kitchen
- binary_sensor.water_leak_storageroom
to: "unavailable"
for:
minutes: 5
action:
- service: notify.mobile_app_phone_dimitri
data:
title: "Device offline!"
message: >
📵 {{ state_attr(trigger.to_state.entity_id, 'friendly_name') }} is offline more than 5 minutes!
data:
channel: Notfall
priority: high
ttl: 0
color: red
That’s great and simple, thank you. I added to the list all my Yeelight and Shelly devices, it works perfect!
Where would this code go? Configuration.yml?
It’s an automation
So obviously the code goes into automations.yaml
Thank you. I’m still super green on editing the yml files vs using the GUI.
I created a more generic method. Not perfect, but better than adding each device to an automation:
# add here device ids you wan't to ignore
ignore_entities=[
"media_player.821378bb_0f1e4b8e",
"light.821378bb_0f1e4b8e"
]
states=hass.states.all()
offline_devices=[]
for state in states:
if not state.entity_id in ignore_entities:
if state.state == "unavailable":
offline_devices.append(state.entity_id);
if len(offline_devices) > 0:
message = "\n".join(offline_devices)
logger.warn(message)
# in my example, i send a notification via telegram bot
hass.services.call("notify", "max", {
"title": "Devices offline",
"message": message.replace("_", "\_")
})
alias: Notify Device offline
description: ''
trigger:
- platform: time
at: '18:00'
condition: []
action:
- service: python_script.device_offline_notification
mode: single
That’s not really an alternative in my opinion, because it only runs once a day, so it would be possible that your device could in the worst case be offline for almost 24 hours before you get notified. And running it every 5 minutes with a time pattern trigger would be inefficient.
For a more generic approach you can take a look at the gist posted in one of the first posts.
Depending on your needs. For me, its good enough. Some unavailable entites, like my yeelights, which currently stops working randomly (i dont know why…), are a few minutes later available again. I personally don’t want to get notified every minute … But the gist above is definitly worth looking at.
Me neither, that’s why my automation only runs if the device has been unavailable for at least 5 minutes.
I have tried adapting this to my setup but I’m not receiving the notification.
If I type my own message, eg device offline, then it works. But not working when I use the message body in the example. Can anyone see what’s wrong?
Here is mine
alias: Notify Device Offline
description: ''
trigger:
- platform: state
entity_id:
- switch.porch_light
- switch.bedroom_light
- switch.kitchen_light
- switch.living_room_light
- cover.bedroom_blind
- cover.living_room_blind
to: Unavailable
for:
hours: 0
minutes: 5
seconds: 0
condition: []
action:
- service: notify.mobile_app_oppo_a5
data:
title: Device Offline!
message: >
📵 {{ state_attr(trigger.to_state.entity_id, 'friendly_name') }} is
offline more than 5 minutes!
mode: parallel
Edit: I was getting the message when using run actions command but not when the device was actually unavailable. I realised it was due to having the state as Unavailable with uppercase U. I changed it to lowercase and it is working now.
Hoq would I modify the python script to use WhatsApp notifications?
nvm I figured it out. Why do you replace underscores with backslash underscore? It’s very confusion but I bet you have your reasons.
If i dont have your notify parts on i get the notification if i add yours i never get notified? Help?
I made a few edits to notify the friendly name(s)
if len(offline_devices) > 0:
message = "Devices offline: " + "\n".join(offline_devices)
logger.warn(message)
names = ", ".join([str(hass.states.get(e).attributes.get("friendly_name",e)) for e in offline_devices])
# in my example, i send a notification via telegram bot
hass.services.call("notify", "mobile_app", {
"title": "📵 Devices offline",
"message": names
})
Hi Burningstove,
Thx for the great automation, I love to use this aswel
However I end up whit an error in the action side i cant complain
‘Error rendering data template: UndefinedError: ‘trigger’ is undefined’
I just copied yours, i suppoce
alias: Systeem - offline devices
description: ""
trigger:
- platform: state
entity_id:
- switch.th16_bk1_badkamer_verwarming
- switch.basic_bk2_badkamer_afzuiging
- switch.hottub_4ch_tasmota
- switch.4ch_t1_houthok_water
- switch.mini_t2_buitenlamp_wasbak
- switch.thr316d_ht1_bypass_klep
- switch.thr316d_ht2_kachel_pomp
- switch.thr316d_ht3_solarkoepel_pomp
- sensor.thr316d_ht4_ds18b20_temperature
- sensor.thr316d_ht5_ds18b20_temperature
- sensor.thr316_ht6_ds18b20_temperature
- sensor.th16_ht7_ds18b20_temperature
- switch.4ch_ht8_pomp_hottub_ww_warmtepomp
- switch.tasmota
- sensor.tasmota_basic_ds18b20_ds18b20_temperature
to: unavailable
for:
minutes: 5
action:
- service: notify.mobile_app_iphone_van_henk
data:
title: Device offline!
message: >
📵 {{ statet_attr(trigger.to_state.entity_id, 'friendly_name') }} is
offline more than 5 minutes!
data:
channel: Notfall
priority: high
ttl: 0
color: red
mode: parallel
I must be honest with you, i dont understand what is happening in the action part, its not just a notifyer
Thx in advance