Label_entities(): allow multiple labels selection (intersection)

I am using these as work-arounds for the time being

Select all entities labelled ‘bedroom’ OR ‘evening_lights’

label_entities_any(['bedroom', 'evening_lights'])
{%- macro label_entities_any(label_list) -%}
  {{- label_list | map('label_entities') | sum(start=[]) | sort |join(",") -}}
{%- endmacro -%}

Select all entities labelled ‘bedroom’ AND ‘evening_lights’

label_entities_all(['bedroom', 'evening_lights'])
{%- macro label_entities_all(label_list) -%}
  {%- set ns = namespace(entities=[]) -%}
  {%- set ns.entities = label_entities(label_list.pop(0)) -%}
  {%- for l in label_list -%}
    {%- set ns.entities = ns.entities|select('in',label_entities(l)|list )  -%}
  {%- endfor -%}
  {{- ns.entities|sort|join(",") -}}
{%- endmacro -%}
3 Likes