From bf35b55e036982fc26f2e092c05bd83dc7051192 Mon Sep 17 00:00:00 2001 From: Martijn van der Pol Date: Thu, 20 Apr 2023 13:01:34 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20Failsafe=20for=20insufficient=20?= =?UTF-8?q?values?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cheapest_energy_hours.jinja | 44 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/cheapest_energy_hours.jinja b/cheapest_energy_hours.jinja index dfa0bdf..efe9697 100644 --- a/cheapest_energy_hours.jinja +++ b/cheapest_energy_hours.jinja @@ -35,29 +35,29 @@ | list %} {# Check if there is data, and find the right hour block #} - {%- if values %} - {%- set ns = namespace(average=none, start=none, min=none, max=none, weighted_average=none) %} - {%- for i in values[:values|length-(h-1)] %} - {%- set ix = loop.index0 %} - {%- set list = values[ix:ix+h] | map(attribute=vk) | list %} - {%- set a = (list | sum + list[th-1] * (hw-1)) / (h + (hw -1)) %} - {%- set b = ns.weighted_average %} - {%- set min = list | min %} - {%- set max = list | max %} - {%- if ns.average is none or ((a < b) if l else (a > b)) %} - {%- set ns.list = list %} - {%- set ns.min = min %} - {%- set ns.max = max %} - {%- set ns.weighted_average = a %} - {%- set ns.average = list | average %} - {%- set ns.start = as_datetime(i[tk]) if str else i[tk] %} - {%- set ns.end = ns.start + timedelta(hours=h+1) %} - {%- endif %} - {%- endfor %} - {# output date based on the selected mode#} - {{ ns[m] | round(5) if ns[m] | is_number else ns[m] }} + {%- if values | count >= h %} + {%- set ns = namespace(average=none, start=none, min=none, max=none, weighted_average=none) %} + {%- for i in values[:values|length-(h-1)] %} + {%- set ix = loop.index0 %} + {%- set list = values[ix:ix+h] | map(attribute=vk) | list %} + {%- set a = (list | sum + list[th-1] * (hw-1)) / (h + (hw -1)) %} + {%- set b = ns.weighted_average %} + {%- set min = list | min %} + {%- set max = list | max %} + {%- if ns.average is none or ((a < b) if l else (a > b)) %} + {%- set ns.list = list %} + {%- set ns.min = min %} + {%- set ns.max = max %} + {%- set ns.weighted_average = a %} + {%- set ns.average = list | average %} + {%- set ns.start = as_datetime(i[tk]) if str else i[tk] %} + {%- set ns.end = ns.start + timedelta(hours=h+1) %} + {%- endif %} + {%- endfor %} + {# output date based on the selected mode#} + {{ ns[m] | round(5) if ns[m] | is_number else ns[m] }} {%- else %} - No data within current selection + No{{ 't enough' if values }} data within current selection {%- endif %} {% endif %} {%- endmacro %} \ No newline at end of file