Question: Lowest Price Hour Sensor Template Issue

This is my code for my e-paper display that formats differently for highest and lowest price during the day.
Perhaps this can be useful for you?

    {% set ns = namespace( text_list = [], line =0) %} 
    {% set nordpool ="sensor.nordpool_kwh_se4_sek_3_10_025" %} 
    {% set cheapest = 5 %} 
    {% set expensivest = 5 %} 
    {% set decimal = "," %} {## decimal separator in currency ##} 
    {% set currency = "kr" %} {## include space if needed/wanted ##} 
    {% set position = "trailing" %} {## trailing or leading ##} 
    {% set decimal_places = 2 %}

    {% for day in ["today", "tomorrow"] %}
      {% for s in state_attr(nordpool,'raw_' ~ day)-%}
        {% if s.end > now() -%}
          {%- set ns.text_list = ns.text_list +  

           [{ "type": "rectangle",  
             "x_start": 1,
             "x_end": 127,
             "y_start": 1 + (25*ns.line), 
             "y_end": 25 + (25*ns.line),
             "width": 4 if s.value in (state_attr(nordpool, day) | sort(reverse = false))[0:cheapest] else 2,
             "fill": "white",
             "outline": "red" if s.value in (state_attr(nordpool, day) | sort(reverse = false))[0:cheapest] else "black"}] +

          [{ "type": "text",  
             "value": ("0" ~ s.start.hour)[-2:3] ~ ":00", 
             "font": "ppb.ttf",
             "x": 5,
             "y":  7 + (25*ns.line), 
             "size": 16,
             "color": "red" if s.value in (state_attr(nordpool, day) | sort(reverse = true))[0:expensivest] else "black"} ] +
             
          [{ "type": "text",  
             "value": (currency if position == "leading") ~ (((s.value | round(decimal_places) ~ "00000")[0:decimal_places+(s.value|string).split(".")[0]|length +1]) |string).replace(".", decimal) ~ (currency if position == "trailing"),
             "font": "ppb.ttf",
             "x": 58,
             "y":  7 + (25*ns.line), 
             "size": 16,
             "color": "red" if s.value in (state_attr(nordpool, day) | sort(reverse = true))[0:expensivest] else "black"} ] -%}
        
          {% set ns.line = ns.line + 1 %} 
        {% endif %}
      {%- endfor -%}
    {%- endfor -%}


    {{ ns.text_list }}

Or have a look at:

Cheapest Energy Hours - Jinja macro for dynamic energy prices - Share your Projects! - Home Assistant Community

2 Likes