To help with some of your questions:
For color changes on state, is this what you want?
I use auto-entries card for almost everything and I name my sensors having that in mind.
The entities card has an option to change color based on state.
type: 'custom:auto-entities'
sort:
method: state
numeric: true
card:
type: entities
title: Motion
state_color: true
show_empty: false
unique: true
filter:
include:
- entity_id: '*motion*'
options:
secondary_info: last-changed
- entity_id: binary_sensor.doorbell
options:
secondary_info: last-changed
exclude:
- state: unknown
- domain: automation
I also utilize the custom-button-text-card alot which allows me to change the icon to many possible options based on state (more than binary):
type: 'custom:button-text-card'
title: |
[[[ return states["sensor.purpleair_description"].state ]]]
subtitle: >
[[[ return "Air Quaility Index is " + states["sensor.purpleair_aqi_a"].state
]]]
icon_size: 55
icon_color: |
[[[
if(states["sensor.purpleair_aqi_a"].state > 300){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 200){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 150){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 100){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 50){
return 'black';
} else{
return 'black';
}
]]]
icon: |
[[[
if(states["sensor.purpleair_aqi_a"].state > 300){
return 'mdi:emoticon-dead';
} else if(states["sensor.purpleair_aqi_a"].state > 200){
return 'mdi:emoticon-cry';
} else if(states["sensor.purpleair_aqi_a"].state > 150){
return 'mdi:emoticon-sad';
} else if(states["sensor.purpleair_aqi_a"].state > 100){
return 'mdi:emoticon-confused';
} else if(states["sensor.purpleair_aqi_a"].state > 50){
return 'mdi:emoticon-neutral';
} else{
return 'mdi:emoticon-happy';
}
]]]
font_color: |
[[[
if(states["sensor.purpleair_aqi_a"].state > 300){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 200){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 150){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 100){
return 'white';
} else if(states["sensor.purpleair_aqi_a"].state > 50){
return 'black';
} else{
return 'black';
}
]]]
large: true
background_color: |
[[[
if(states["sensor.purpleair_aqi_a"].state > 300){
return '#731425';
} else if(states["sensor.purpleair_aqi_a"].state > 200){
return '#8C1A4B';
} else if(states["sensor.purpleair_aqi_a"].state > 150){
return '#EA3324';
} else if(states["sensor.purpleair_aqi_a"].state > 100){
return '#EF8533';
} else if(states["sensor.purpleair_aqi_a"].state > 50){
return '#FFFF55';
} else{
return '#68FF43';
}
]]]
https://community.home-assistant.io/t/lovelace-button-text-card/210687/8