{% set ns = namespace(lines=[]) %}
{% for domain, entities in states | groupby('domain') %}
  {% set ns.lines = ns.lines + ['[' ~ domain ~ ']'] %}
  {% for s in entities | sort(attribute='entity_id') %}
    {% set area = area_name(s.entity_id) if area_name(s.entity_id) else 'No area' %}
    {% set friendly = state_attr(s.entity_id, 'friendly_name') if state_attr(s.entity_id, 'friendly_name') else s.object_id %}
    {% set ns.lines = ns.lines + [
      s.entity_id ~ ' | ' ~ friendly ~ ' | ' ~ area
    ] %}
  {% endfor %}
  {% set ns.lines = ns.lines + [''] %}
{% endfor %}
{{ ns.lines | join('\n') }}