Add N1 network tariff data with season/hour-based lookup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
(ns pmagnus.elprice.web.controllers.tariffs
|
||||
(:import
|
||||
[java.time LocalDateTime]))
|
||||
|
||||
(def n1-tariffs
|
||||
"N1 network tariffs in øre/kWh (incl. VAT), effective 2026-01-01.
|
||||
Source: https://n1.dk/elnetkunder/gaeldende-priser"
|
||||
{:summer {:low 10.98 ;; 00:00-06:00
|
||||
:high 16.47 ;; 06:00-17:00, 21:00-24:00
|
||||
:peak 42.83} ;; 17:00-21:00
|
||||
:winter {:low 10.98
|
||||
:high 32.95
|
||||
:peak 98.84}})
|
||||
|
||||
(defn season
|
||||
"Returns :summer (Apr-Sep) or :winter (Oct-Mar) for a given month (1-12)."
|
||||
[month]
|
||||
(if (<= 4 month 9) :summer :winter))
|
||||
|
||||
(defn load-level
|
||||
"Returns :low, :high, or :peak for a given hour (0-23).
|
||||
Low: 00:00-06:00
|
||||
High: 06:00-17:00, 21:00-24:00
|
||||
Peak: 17:00-21:00"
|
||||
[hour]
|
||||
(cond
|
||||
(< hour 6) :low
|
||||
(and (<= 6 hour) (< hour 17)) :high
|
||||
(and (<= 17 hour) (< hour 21)) :peak
|
||||
:else :high))
|
||||
|
||||
(defn tariff-for-hour
|
||||
"Returns the applicable N1 tariff in øre/kWh.
|
||||
Can be called with (month, hour) or a LocalDateTime."
|
||||
([^LocalDateTime dt]
|
||||
(tariff-for-hour (.getMonthValue dt) (.getHour dt)))
|
||||
([month hour]
|
||||
(get-in n1-tariffs [(season month) (load-level hour)])))
|
||||
Reference in New Issue
Block a user