Different method is to call the shopping list JSON directly from the undocumented API using a REST sensor. However the value template ignores the “complete” status, which isn’t a problem for me. Nice and simple
# Shopping list
- platform: rest
name: Grocery List
headers:
authorization: !secret shopping_list
content-type: 'application/json'
resource: http://<HA-IP>:8123/api/shopping_list
value_template: "{{ value_json | map(attribute='name') | list | join(', ') }}"
method: GET
scan_interval: 60