further expanding on the whatson.py im using this for all entity groups (lights here as an example):
##########################################################################################
# Lights:
# Badges images: /config/www/lights
##########################################################################################
lights_on = []
#show only lights, not light groups
#excluded = ['light.custom_group_for_group','light.custom_group_for_lights_2']
#total_lights_on = hass.states.get('input_boolean.whats_on').attributes.get('lights_on')
state = hass.states.get('automation.sense_lights_change')
if state:
total_on = hass.states.get('input_boolean.whats_on').attributes.get('lights_on')
for entity_id in hass.states.get(lightEntities).attributes['entity_id']:
dt = state.last_updated + datetime.timedelta(hours=2)
time = '%02d:%02d' % (dt.hour, dt.minute)
if hass.states.get(entity_id).state is 'on': #and entity_id not in excluded
lights_on.append(hass.states.get(entity_id).attributes['friendly_name'])
if len(lights_on) > 0:
picture = '/local/lights/hue_pl.png'
message = ', '.join(lights_on)
sensor_message = 'Lights on: ' + message
lights_desc = '=- Lights on: {} -- {} since {}'.format(total_on, message,time)
uom = 'Lights'
if len(lights_on) == 1:
uom = 'Light'
else:
picture = '/local/lights/bulboff.png'
message= ''
sensor_message= 'No lights on'
uom = 'Lights'
sensor_lights_desc = '{}'.format(sensor_message)
hass.states.set('sensor.lights_badge', total_on, {
# 'custom_ui_state_card': 'state-card-value_only',
'text': sensor_message,
'unit_of_measurement': uom,
'friendly_name': time,
'entity_picture': picture
})
giving me this in the frontend:
more_info on that:
whatson:
I use the same info (and then some) in a bigger Summary.py (text-only) (built on and inspired by @mviezzer here: Summary card and badges for people, devices and status (with python script and custom card)), showing a full summary of the Home (whats an assistant for…?)
and per sensor, some graphical embellishments are always cool:
Have fun!