This works for me:
- platform: template
sensors:
battery_huawei:
unit_of_measurement: '%'
value_template: >-
{% if states('sensor.lya_l29_battery_level') %}
{{ states('sensor.lya_l29_battery_level') | round }}
{% else %}
{{ states('sensor.battery_huawei') }}
{% endif %}
icon_template: >-
{% if is_state('sensor.battery_huawei', 'unknown') %}
mdi:battery-unknown
{% elif is_state('sensor.lya_l29_battery_state', 'charging') %}
mdi:battery-charging
{% elif states('sensor.lya_l29_battery_level')|float <= 5 %}
mdi:battery-outline
{% elif states('sensor.lya_l29_battery_level')|float >= 95 %}
mdi:battery
{% else %}
mdi:battery-{{(states('sensor.lya_l29_battery_level')|float / 10)|round*10}}
{% endif %}
Changes the icon of the battery based on its level and whether it’s charging or not. No colors, though. To do that, you can check out battery state card / entity row available on HACS.