Skip to main content

Streamlit Library for reporting and solar monitoring

Project description

Frequenz CS Reporting Library

Build Status PyPI Package Docs

Overview

Streamlit library that ships a ready-to-use client reporting UI. It fetches data from the Frequenz reporting API, applies the energy reporting utilities from frequenz-lib-notebooks, and renders dashboards, tables, and plots with reusable Streamlit components.

Features

  • Pre-built Streamlit app with navigation, landing page, and reporting view.
  • Connects to the Frequenz reporting API to fetch microgrid measurements.
  • Ready-made dashboards (metrics, plots, and tables) powered by frequenz-lib-notebooks.
  • Reusable components (sidebar filters, charts, tables) for your own pages.

Quick start

  1. Install the library (Python 3.12):
    pip install "frequenz-cs-reporting"
    
  2. Provide environment variables (see below). A .env file works with Streamlit:
    REPORTING_API_URL=https://your-reporting-endpoint
    API_KEY=your-api-key
    API_SECRET=your-api-secret
    MICROGRID_CONFIG_DIR=toml_directory/
    
  3. Add .toml files to the toml_directory.
  4. Run the bundled UI from the repo root:
    streamlit run app.py
    
    Use the sidebar to pick a microgrid, date range, timezone, and resolution.

Configuration

Environment

  • REPORTING_API_URL (required): Base URL for the Frequenz reporting API.
  • API_KEY and API_SECRET (required): Credentials used by the data client.
  • MICROGRID_CONFIG_DIR (optional): Directory containing TOML microgrid configs. Defaults to toml_directory/.

Microgrid configs

Microgrid definitions are loaded from TOML files in MICROGRID_CONFIG_DIR.

Running the Streamlit app

The app entry point is app.py. When you run streamlit run app.py, it:

  • Discovers pages from frequenz.cs_reporting.app_pages (the default build ships Home and Reporting pages).
  • Loads microgrid configs from MICROGRID_CONFIG_DIR and lists available IDs.
  • Fetches data via the reporting API.

Running in Deepnote

  • Running in Deepnote is supported; required environment variables can be injected via the Deepnote integration.
  • Add this library as a requirement in requirements.txt
  • Add the docker image from dockerhub (currently named: CS-Reporting in deepnote).
  • Copy the app.py to the folder structure in Deepnote.
  • Click on create_streamlit_application in Deepnote UI to create the app.

Library usage

Fetch microgrid data programmatically (sync wrapper shown):

from datetime import datetime, timedelta
from frequenz.cs_reporting.services.data_service import get_microgrid_data

df = get_microgrid_data(
    microgrid_id=241,
    start_date=datetime(2024, 1, 1),
    end_date=datetime(2024, 1, 2),
    resolution=timedelta(minutes=15),
)

Build your own Streamlit page and add it to the navigation by defining a PageSpec in frequenz.cs_reporting.app_pages:

# app_pages/custom.py
from frequenz.cs_reporting.rep_cs_core.page_spec import PageSpec
import streamlit as st

def render() -> None:
    st.title("Custom view")
    st.write("Add your own charts or tables here.")

PAGE = PageSpec(key="custom", title="Custom", icon="🛠️", order=10, render=render)

Development

  • Install dev tools: pip install -e ".[dev]".
  • Run tests: nox -l to see sessions, e.g. nox -s tests.
  • Build docs with MkDocs (README.md is the landing page). After installing the mkdocs extra you can use the docs nox session (if available) or run mkdocs serve.

Supported Platforms

The following platforms are officially supported (tested):

  • Python: 3.12
  • Operating System: Ubuntu Linux 20.04
  • Architectures: amd64, arm64

Contributing

If you want to know how to build this project and contribute to it, please check out the Contributing Guide.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frequenz_cs_reporting-0.2.10.tar.gz (3.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

frequenz_cs_reporting-0.2.10-py3-none-any.whl (3.2 MB view details)

Uploaded Python 3

File details

Details for the file frequenz_cs_reporting-0.2.10.tar.gz.

File metadata

  • Download URL: frequenz_cs_reporting-0.2.10.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for frequenz_cs_reporting-0.2.10.tar.gz
Algorithm Hash digest
SHA256 45d16a93a0443318f73641f27ef0ac4e98e8f2b38a86082763ebf5c099634aa2
MD5 bf7d9dd1f9e8cfbd87e0373accab7fe6
BLAKE2b-256 e35a0c3d9128a6d0dbd80a1a6479aa1a6b563138c4903e7e5011b9b63cfed4ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for frequenz_cs_reporting-0.2.10.tar.gz:

Publisher: ci.yaml on frequenz-floss/frequenz-cs-reporting

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file frequenz_cs_reporting-0.2.10-py3-none-any.whl.

File metadata

File hashes

Hashes for frequenz_cs_reporting-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 2e0f5c2fecf3e04205425d83a2dc607ba4b4bd2336d280326ee360312b113c42
MD5 b0ac0433a0d0091c8ee3573fbc888420
BLAKE2b-256 77306a561f3d87b550b0f76caff402eba9235afec51cd7598e53c923b823108c

See more details on using hashes here.

Provenance

The following attestation bundles were made for frequenz_cs_reporting-0.2.10-py3-none-any.whl:

Publisher: ci.yaml on frequenz-floss/frequenz-cs-reporting

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page