package carbon

  1. Overview
  2. Docs
OCaml library for accessing various Carbon Intensity APIs

Install

Dune Dependency

Authors

Maintainers

Sources

carbon-0.1.0.tbz
sha256=7fa704f5c5ff3bbc17d8e1cb8360e1dcb8e12fe909d5eac43a1242232560a97a
sha512=88cd08f1f12911bfc8651297111a45972e972278ae137b4bc3e28fddd02f57ced1d10b25fafc57fb760b9424cfd686d4ca48f3292ed4030838e2f66021440d8b

Description

Carbon provides access to various APIs to discover carbon intensity information for different countries.

Published: 04 Jul 2023

README

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 = ()

Dependencies (7)

  1. uri
  2. tls-eio < "1.0.0"
  3. ptime
  4. ezjsonm >= "1.2.0"
  5. cohttp-eio >= "6.0.0~alpha1"
  6. eio < "0.12"
  7. dune >= "3.0"

Dev Dependencies (4)

  1. odoc with-doc
  2. eio_main with-test
  3. mdx with-test
  4. mirage-crypto-rng-eio with-test & < "1.0.0"

Used by

None

Conflicts

None

OCaml

Innovation. Community. Security.