foxess 0.2.3

Rust library for communication with FoxESS Cloud
Documentation

Foxess API client library

The foxess crate implements a subset of available FoxESS Cloud APIs.

Its purpose is mainly focused on APIs that help in executing automatic scheduling of battery charging and battery discharging (self-use) given external data such as tariffs from e.g.:

  • Nordpool in the Nordic European region or some other supplier of daily tariffs.
  • Weather temperature forecast data to estimate household power consumption
  • Weather cloud forecast data and sun incidence calculations to estimate PV power production
  • Etc. depending on level of ambition/precision in estimates

The APIs are tested for a Fox H3 model SK-HWR-12, and although the FoxESS Cloud APIs are general, settings and variables are not guaranteed to be fully supported by all inverters.

License

This library comes with a standard MIT license

Features

  • async (default) - Enables async requests using reqwest
  • blocking - Enables blocking requests using reqwest

async and blocking features are mutually exclusive, and since async is default, one must declare default-features = false when enabling blocking

Blocking mode (alternative)

This crate defaults to the async feature, and the documentation on docs.rs is generated for the async API.

If you prefer a blocking API, disable default features and enable blocking instead:

[dependencies]

foxess = { version = "0.x.y", default-features = false, features = ["blocking"] }

The blocking API uses the same Fox type name, but methods are synchronous (no .await).

Usage Overview

Note down your inverter serial number, can be found from within the FoxCloud2.0 app or the FoxESS Cloud V2 site web site.

Get an API key, it can be retrieved from the FoxESS Cloud V1 site under User Profile/API Management.

Decide whether to use the blocking or non-blocking feature in cargo.toml dependencies

[dependencies]
# Non-blocking (async)
foxess = "0.x.y"

# Non-blocking (async) if you want clarity
foxess = { version = "0.x.y", features = ["async"] }

# Blocking
foxess = { version = "0.x.y", default-features = false, features = ["blocking"] }