Template sensor with attributes (invalid config)

I’m having issues with a template sensor that needs attributes.

sensor:
  - platform: template
    sensors:
      matsedel_backaskolan_skarmanpassad:
        friendly_name: "Matsedel Backaskolan skärmanpassad"
        value_template: "1"
        attribute_templates: >-
                          {%- set ns = namespace(json = {}, str = "") %}
                            {% set day = [ "Mån","Tis", "Ons", "Tors", "Fre" ]%}
                            {% for days in state_attr('sensor.matsedel_backaskolan_1', 'WeekState')['Days'] %}
                              {% set ns.str = "" %}
                              {% for meals in days["Meals"]%}  
                                {% set ns.str = ns.str + " eller " + meals.name %}
                              {%- endfor %}  
                               {% set ns.json = dict(ns.json, **{ day[loop.index-1] + "dag": ns.str[7:] }) %}
                            {%- endfor %}
                            
                            {% set ns.json = dict({"0":ns.json}) %}
                            
                            
                            {%- set ns2 = namespace(json = {}, str = "") %}
                            {% for days in state_attr('sensor.matsedel_backaskolan_2', 'WeekState')['Days'] %}
                              {% set ns2.str = "" %}
                              {% for meals in days["Meals"]%}  
                            
                                {% set ns2.str = ns2.str + " eller " + meals.name %}
                              {%- endfor %}  
                               {% set ns2.json = dict(ns2.json, **{ day[loop.index-1] + "dag": ns2.str[7:] }) %}
                            {%- endfor %}
                            {% set ns2.json = dict({"1":ns2.json}) %}
                            
                            {{ (ns.json, ns2.json)  | list}}

The output of them is:

[
  {
    "0": {
      "Måndag": "Pastasås med kyckling och tomat eller Pastasås med soltorkade tomater och örter",
      "Tisdag": "Potatisbullar med keso eller Potatisbullar med rökt hönskött eller Blodpudding",
      "Onsdag": "Tomatsoppa med pasta serveras med hummus och bröd eller Dal Tikka Masala serveras med kornris",
      "Torsdag": "Chili sin carne serveras med bulgur eller Chili con carne serveras med bulgur",
      "Fredag": "Fisknuggets med kall mangosås och ris eller Vegonuggets med kall mangosås och ris"
    }
  },
  {
    "1": {
      "Måndag": "Vi servar alltid kyckling från svenska gårdar! eller Indonesisk kycklingrätt med curry och mangochutney samt bulgur eller Veggie Penang serveras med bulgur",
      "Tisdag": "Paprikasoppa med pasta serveras med färskost och bröd eller Potatis och broccoligratäng",
      "Onsdag": "Fransk korvgryta serveras med bulgur eller Mexikansk böngryta serveras med bulgur",
      "Torsdag": "Fiskfilé Bordelaise med potatismos eller Panerad stekt sillflundra eller Kikärtsbiff serveras med potatismos",
      "Fredag": "Spaghetti med köttfärssås av nötfärs eller Spaghetti med bönfärssås eller Med kött från Sverige!"
    }
  }
]

I get this error:

Configuration warnings
Invalid config for ‘template’ from integration ‘sensor’ at configuration.yaml, line 842: expected a dictionary for dictionary value ‘sensors->matsedel_backaskolan_skarmanpassad->attribute_templates’, got '{%- set ns = namespace(json = {}, str = “”) %}\n {% set day = [ “Mån”,“Tis”, “Ons”, “Tors”, “Fre” ]%}\n {% for days in state_attr('sensor.matsedel_backaskolan_1', 'WeekState')['Days'] %}\n {% set ns.str = “” %}\n {% for meals in days[“Meals”]%} \n {% set ns.str = ns.str + " eller " + meals.name %}\n {%- endfor %} \n {% set ns.json = dict(ns.json, **{ day[loop.index-1] + “dag”: ns.str[7:] }) %}\n {%- endfor %}\n \n {% set ns.json = dict({“0”:ns.json}) %}\n \n …

I have also tried replacing the last line with:

                            "0": {{ ns.json }}
                            "1": {{ ns2.json}}

What have I done wrong?
I also tried following this example here:
Template - Home Assistant

The configuration is missing the name of the attribute.

Reference

Legacy Template Sensor - Attributes sorry, the link automatically goes to modern format

attribute_templates:
  name_of_attribute: >
     ... template goes here ...

Be aware that the link you posted shows an example for modern format (not what your example is using which is legacy format).

1 Like