package carbon
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=7fa704f5c5ff3bbc17d8e1cb8360e1dcb8e12fe909d5eac43a1242232560a97a
sha512=88cd08f1f12911bfc8651297111a45972e972278ae137b4bc3e28fddd02f57ced1d10b25fafc57fb760b9424cfd686d4ca48f3292ed4030838e2f66021440d8b
README.md.html
carbon-intensity
Carbon Intensity is an OCaml client for querying various energy grid APIs to understand the energy generation mix. This enables programs like schedulers, energy monitors etc. to have a better understanding of their carbon intensity.
The API provides geographic-specific services, which allow you to exploit more fine-grained APIs and then a generic Intensity
interface for a global-oriented API.
Integrated APIs
Great Britain:
https://www.carbonintensity.org.uk/
France:
https://www.rte-france.com/eco2mix
Misc:
https://www.co2signal.com (requires API key)
Usage
A very simple use of the region specific API for Great Britain only requires the user to provide Eio's network capability.
# Eio_main.run @@ fun env ->
Mirage_crypto_rng_eio.run (module Mirage_crypto_rng.Fortuna) env @@ fun _ ->
Carbon.Gb.get_intensity env#net
|> Eio.traceln "%a" Carbon.Gb.Intensity.pp;;
+period: 2022-08-28T17:30Z - 2022-08-28T18:00Z
+forecast: 255 gCO2/kWh
+actual: None
+index: high
+
- : unit = ()
Some APIs require more configuration, for example an access token. In order to use them you will need to construct a configuration and pass this into any calls that are made. For example:
# Eio_main.run @@ fun env ->
Mirage_crypto_rng_eio.run (module Mirage_crypto_rng.Fortuna) env @@ fun _ ->
let token = Eio.Path.(load (env#fs / ".co2-token")) in
let t = Carbon.Co2_signal.v token in
Carbon.Co2_signal.get_intensity ~net:env#net ~country_code:`FR t
|> Eio.traceln "%a" Carbon.Co2_signal.Intensity.pp;;
+country: FR
+datetime: 2022-08-29T11:00:00.000Z
+intensity: 99 gCO2/kWh
+fossil fuel percentage: 15.230000
- : unit = ()