Tracking consumption and cost

Published

January 4, 2026

Date range:

2024-08-01 to 2026-01-02

STH consumption

# A tibble: 516 × 9
   date       `off-peak`  peak    op     p   tot    mm   ann   mon
   <date>          <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1 2026-01-02       28.0  27.1  1.96  8.12 10.6   5.59 2039.  170.
 2 2026-01-01       20.9  16.5  1.46  4.95  6.89  5.59 2039.  170.
 3 2025-12-30       20.6  15.8  1.44  4.75  6.66  5.59 2039.  170.
 4 2025-12-29       23.0  13.3  1.61  3.99  6.06  5.59 2039.  170.
 5 2025-12-28       22.0  12.2  1.54  3.67  5.68  5.59 2039.  170.
 6 2025-12-27       48.0  19.5  3.36  5.84  9.67  5.59 2039.  170.
 7 2025-12-26       29.9  35.3  2.10 10.6  13.2   5.59 2039.  170.
 8 2025-12-25       24.3  33.2  1.70  9.95 12.1   5.59 2039.  170.
 9 2025-12-24       21.8  24.1  1.53  7.23  9.23  5.59 2039.  170.
10 2025-12-23       18.3  23.3  1.28  7.00  8.75  5.59 2039.  170.
# ℹ 506 more rows

Linton consumption

# A tibble: 522 × 9
   date       `off-peak`  peak    op      p   tot    mm   ann   mon
   <date>          <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
 1 2026-01-03       1.79 NA    0.126 NA     NA    0.844  308.  25.7
 2 2026-01-02       6.95  2.44 0.486  0.731  1.69 0.844  308.  25.7
 3 2026-01-01       7.56  2.53 0.529  0.759  1.76 0.844  308.  25.7
 4 2025-12-31       7.30  1.68 0.511  0.503  1.48 0.844  308.  25.7
 5 2025-12-30       7.63  2.88 0.534  0.865  1.87 0.844  308.  25.7
 6 2025-12-29       6.93  3.37 0.485  1.01   1.97 0.844  308.  25.7
 7 2025-12-28       7.07  3.57 0.495  1.07   2.04 0.844  308.  25.7
 8 2025-12-27       7.13  2.18 0.499  0.654  1.62 0.844  308.  25.7
 9 2025-12-26       7.43  1.91 0.520  0.573  1.56 0.844  308.  25.7
10 2025-12-25       7.20  1.71 0.504  0.513  1.49 0.844  308.  25.7
# ℹ 512 more rows

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
    )
    )
}
# A tibble: 102 × 10
    source  name  value_exc_vat value_inc_vat valid_from valid_to payment_method
    <chr>   <chr>         <dbl>         <dbl> <chr>      <chr>    <lgl>         
  1 elec_e… resu…          6.67          7.00 2026-01-0… 2026-01… NA            
  2 elec_e… resu…         27.8          29.2  2026-01-0… 2026-01… NA            
  3 elec_e… resu…          6.67          7.00 2026-01-0… 2026-01… NA            
  4 elec_e… resu…         27.8          29.2  2026-01-0… 2026-01… NA            
  5 elec_e… resu…          6.67          7.00 2026-01-0… 2026-01… NA            
  6 elec_e… resu…         27.8          29.2  2026-01-0… 2026-01… NA            
  7 elec_e… resu…          6.67          7.00 2026-01-0… 2026-01… NA            
  8 elec_e… resu…         27.8          29.2  2026-01-0… 2026-01… NA            
  9 elec_e… resu…          6.67          7.00 2026-01-0… 2026-01… NA            
 10 elec_e… resu…         27.8          29.2  2026-01-0… 2026-01… NA            
 11 elec_e… resu…          6.67          7.00 2025-12-3… 2026-01… NA            
 12 elec_e… resu…         27.8          29.2  2025-12-3… 2025-12… NA            
 13 elec_e… resu…          6.67          7.00 2025-12-3… 2025-12… NA            
 14 elec_e… resu…         27.8          29.2  2025-12-3… 2025-12… NA            
 15 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 16 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 17 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 18 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 19 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 20 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 21 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 22 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 23 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 24 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 25 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 26 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 27 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 28 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 29 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 30 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 31 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 32 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 33 elec_e… resu…          6.67          7.00 2025-12-2… 2025-12… NA            
 34 elec_e… resu…         27.8          29.2  2025-12-2… 2025-12… NA            
 35 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 36 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 37 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 38 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 39 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 40 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 41 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 42 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 43 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 44 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 45 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 46 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 47 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 48 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 49 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 50 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 51 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 52 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 53 elec_e… resu…          6.67          7.00 2025-12-1… 2025-12… NA            
 54 elec_e… resu…         27.8          29.2  2025-12-1… 2025-12… NA            
 55 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 56 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 57 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 58 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 59 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 60 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 61 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 62 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 63 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 64 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 65 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 66 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 67 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 68 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 69 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 70 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 71 elec_e… resu…          6.67          7.00 2025-12-0… 2025-12… NA            
 72 elec_e… resu…         27.8          29.2  2025-12-0… 2025-12… NA            
 73 elec_e… resu…          6.67          7.00 2025-11-3… 2025-12… NA            
 74 elec_e… resu…         27.8          29.2  2025-11-3… 2025-11… NA            
 75 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 76 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 77 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 78 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 79 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 80 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 81 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 82 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 83 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 84 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 85 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 86 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 87 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 88 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 89 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 90 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 91 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 92 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 93 elec_e… resu…          6.67          7.00 2025-11-2… 2025-11… NA            
 94 elec_e… resu…         27.8          29.2  2025-11-2… 2025-11… NA            
 95 elec_e… resu…          6.67          7.00 2025-11-1… 2025-11… NA            
 96 elec_e… resu…         27.8          29.2  2025-11-1… 2025-11… NA            
 97 elec_e… resu…          6.67          7.00 2025-11-1… 2025-11… NA            
 98 elec_e… resu…         27.8          29.2  2025-11-1… 2025-11… NA            
 99 elec_e… resu…          6.67          7.00 2025-11-1… 2025-11… NA            
100 elec_e… resu…         27.8          29.2  2025-11-1… 2025-11… NA            
101 elec_s… resu…          0             0    2024-10-2… <NA>     NA            
102 elec_u… resu…         15            15    2024-10-2… <NA>     NA            
# ℹ 3 more variables: type <chr>, peak <chr>, date <date>

Linton gas

# A tibble: 23 × 8
   source   name  value_exc_vat value_inc_vat valid_from valid_to payment_method
   <chr>    <chr>         <dbl>         <dbl> <chr>      <chr>    <chr>         
 1 gas_sta… resu…         31.8          33.4  2026-01-0… <NA>     DIRECT_DEBIT  
 2 gas_sta… resu…         31.2          32.7  2025-09-3… 2026-01… DIRECT_DEBIT  
 3 gas_sta… resu…         27.3          28.6  2025-06-3… 2025-09… DIRECT_DEBIT  
 4 gas_sta… resu…         29.6          31.1  2025-03-3… 2025-06… DIRECT_DEBIT  
 5 gas_sta… resu…         28.0          29.4  2024-09-3… 2025-03… DIRECT_DEBIT  
 6 gas_sta… resu…         27.6          28.9  2024-03-3… 2024-09… DIRECT_DEBIT  
 7 gas_sta… resu…         26.2          27.5  2024-01-0… 2024-03… DIRECT_DEBIT  
 8 gas_sta… resu…         26.2          27.5  2023-03-3… 2024-01… DIRECT_DEBIT  
 9 gas_sta… resu…         25.6          26.8  2022-11-0… 2023-03… DIRECT_DEBIT  
10 gas_uni… resu…          5.59          5.87 2026-01-0… <NA>     DIRECT_DEBIT  
# ℹ 13 more rows
# ℹ 1 more variable: date <date>

year

month

cons

cost

tot_cost

mean_cost

2,024

11

1,174.6326

83.26215

1,228.549

87.7535

2,024

12

1,004.6843

72.69136

1,228.549

87.7535

2,025

1

2,222.2344

148.42298

1,228.549

87.7535

2,025

2

2,676.3888

176.67138

1,228.549

87.7535

2,025

3

1,703.5371

116.16001

1,228.549

87.7535

2,025

4

1,173.2109

83.17372

1,228.549

87.7535

2,025

5

793.4290

59.55129

1,228.549

87.7535

2,025

6

273.3101

27.19989

1,228.549

87.7535

2,025

7

169.3819

20.73555

1,228.549

87.7535

2,025

8

219.1079

23.82851

1,228.549

87.7535

2,025

9

493.1067

40.87123

1,228.549

87.7535

2,025

10

1,269.7086

89.17587

1,228.549

87.7535

2,025

11

1,823.3929

123.61504

1,228.549

87.7535

2,025

12

2,459.6466

163.19002

1,228.549

87.7535