Still WIP but I think I got the concept via this post:
{% set x = ['unavailable','unknown'] %}
{% set areas = namespace(home=[],b1=[],gf=[],ff=[],rf=[],od=[]) %}
{% set entities = states |rejectattr('state', 'in', x)|map(attribute='entity_id')|list %}
{%- for en in entities -%}
{%- if (area_name(en) != None and area_name(en) not in areas.home) -%}
{% set areas.home = areas.home + [area_name(en)] %}
{% if "GF " in area_name(en) %} {% set areas.gf = areas.gf + [area_name(en)] %}
{% elif "FF " in area_name(en) %} {% set areas.ff = areas.ff + [area_name(en)] %}
{% elif "RF " in area_name(en) %} {% set areas.rf = areas.rf + [area_name(en)] %}
{% elif "B1 " in area_name(en) %} {% set areas.b1 = areas.b1 + [area_name(en)] %}
{% else %} {% set areas.od = areas.od + [area_name(en)] %}
{% endif %}
{% endif %}
{%- endfor -%}