Tracking consumption and cost
Date range:
2024-08-01 to 2025-12-18
STH consumption
Linton consumption
Gas consumption
Export
Costs
Gas tariff
get_gas_tariff <- function(property_index, out = meter_details){
res <- out$properties[[property_index]]$gas_meter_points
df <- bind_rows(res, .id = "source")
gas_tariff <- df |>
unnest_auto("agreements") |>
mutate(valid = ymd(str_sub(valid_from, 1, 10)),
valid_to = ifelse(!is.na(valid_to), ymd(str_sub(valid_to, 1, 10)), NA),
end = as.Date(ifelse(is.na(valid_to), Sys.Date(), valid_to)),
duration = end - valid
) |>
arrange(desc(valid))
gas_code <- gas_tariff[is.na(gas_tariff$valid_to), "tariff_code"]
trunc_gas <- gas_code |>
str_remove("G-1R-") |>
str_remove("-[AZ]$")
urlsgas <- paste0("https://api.octopus.energy/v1/products/", trunc_gas, "/gas-tariffs/", gas_code, "/standing-charges/")
urlugasur <- paste0("https://api.octopus.energy/v1/products/", trunc_gas, "/gas-tariffs/", gas_code, "/standard-unit-rates/")
scg <- request(urlsgas) |> req_perform() |>
resp_body_json() |>
enframe() |>
filter(name == "results") |>
unnest(value) |>
unnest_auto(value) |>
filter(payment_method == "DIRECT_DEBIT")
urg <- request(urlugasur) |> req_perform() |>
resp_body_json() |>
enframe() |>
filter(name == "results") |>
unnest(value) |>
unnest_auto(value) |>
filter(payment_method == "DIRECT_DEBIT")
return(list(gas_standing_charges = scg, gas_unit_rates = urg)
)
}Electricity tariff
get_electricity_tariff <- function(property_index, out = meter_details){
res <- out$properties[[property_index]]$electricity_meter_points
df <- bind_rows(res, .id = "source")
el_tariff <- df |>
unnest_auto("agreements") |>
mutate(valid = ymd(str_sub(valid_from, 1, 10)),
valid_to = ifelse(!is.na(valid_to), ymd(str_sub(valid_to, 1, 10)), NA),
end = as.Date(ifelse(is.na(valid_to), Sys.Date(), valid_to)),
duration = end - valid
) |>
arrange(desc(valid))
elec_code <- el_tariff[is.na(el_tariff$valid_to), "tariff_code"]
trunc_elec <- elec_code |>
mutate(code = str_remove(tariff_code, "E-1R-"),
code = str_remove(code, "-[AZ]$"),
urls_sc = paste0("https://api.octopus.energy/v1/products/", code, "/electricity-tariffs/", tariff_code, "/standing-charges/"),
urls_ur = paste0("https://api.octopus.energy/v1/products/", code, "/electricity-tariffs/", tariff_code, "/standard-unit-rates/"))
sce_import <- request(trunc_elec$urls_sc[2]) |> req_perform() |>
resp_body_json() |>
enframe() |>
filter(name == "results") |>
unnest(value) |>
unnest_auto(value)
ure_import <- request(trunc_elec$urls_ur[2]) |> req_perform() |>
resp_body_json() |>
enframe() |>
filter(name == "results") |>
unnest(value) |>
unnest_auto(value)
sce_export <- request(trunc_elec$urls_ur[1]) |> req_perform() |>
resp_body_json() |>
enframe() |>
filter(name == "results") |>
unnest(value) |>
unnest_auto(value)
return(list(elec_standing_charges = sce_import, elec_unit_rates = ure_import, elec_export_rates = sce_export
)
)
}