Yes, I use this automation:
- alias: Automation ran
id: 'Automation ran'
initial_state: 'off'
trigger:
platform: event
event_type: state_changed
condition:
condition: template
value_template: >
{% set skip_list = ['automation_ran', 'count_warnings', 'count_errors',
'activate_map_sensors_actueel', 'call_family_home',
'timed_python_scripts_per_20_secs'] %}
{{ trigger.event.data.entity_id.startswith('automation.') and
trigger.event.data.entity_id.split('.')[1] not in skip_list and
'old_state' in trigger.event.data and 'new_state' in trigger.event.data }}
action:
- condition: template
value_template: >
{{ trigger.event.data.new_state.attributes.last_triggered !=
trigger.event.data.old_state.attributes.last_triggered }}
- service: notify.filed_automations
data_template:
message: >
{{ as_timestamp(trigger.event.data.new_state.last_updated)|timestamp_custom("%d %b: %X") }}: {{ trigger.event.data.new_state.name }}
- service: python_script.last_automation
data_template:
event: '{{ trigger.event }}'
with this python script:
last_automation.py
# Get params
event = data.get('event')
#logger.error("LAST AUTOMATION: " + str(event))
# Sample: <Event call_service[L]: domain=automation, service=trigger, service_data=entity_id=automation.call_service_event_automation, service_call_id=1972124944-486>
# Find the automation name
#** pos_start = event.find('entity_id=')+10
pos_start = event.find('entity_id=')+21
pos_end = event.find(',', pos_start)
# Get the entity_id
#** entity_id = event[pos_start:pos_end]
entity_id = 'automation.' + event[pos_start:pos_end]
# get the state object
state = hass.states.get(entity_id)
# Make a time string in 24 hour format
#time_string = datetime.datetime.now().strftime('%I:%M')
dt = datetime.datetime.now() #state.attributes.get('last_triggered') #
time = "%02d:%02d:%02d" % (dt.hour, dt.minute, dt.second)
# try to get the automation friendly name
msg = []
try:
msg = state.name
except:
msg = None
if msg:
if not msg.startswith('Set '):
# Sensor update
hass.states.set('sensor.last_automation', msg, {
# 'custom_ui_state_card': 'state-card-value_only',
# 'text': sensor_message,
'unit_of_measurement': 'Aut',
'friendly_name': time,
'entity_picture': '/local/buttons/play-mode-repeat.png' })
then use the sensor sensor.last_automaton in frontend.
beware, if automation heavy, it can be a burden to the system. so you might want to comment out several automations in the skip list as I did.
I use this in my Home dashboard card, and have the automation there to en/disable on demand:
