Skip to main content

Solar monitoring and control daemons

Project description

evse-hub

Solar monitoring and control daemons for Modbus-based EVSE (Electric Vehicle Supply Equipment) and energy monitoring, including polling, status tracking, MQTT integration, and InfluxDB data persistence.

Structure

evse_hub/
├── cli/
│   ├── evse_online.py
│   ├── evse_poll.py
│   ├── evse_scan.py
│   ├── mqtt_power_logger.py
│   ├── runtime.py
│   ├── status.py
│   └── supervisor.py
├── influx/
│   ├── influx_client.py
│   └── influx_writes.py
├── modbus/
│   ├── etrel/
│   │   ├── etrel.py
│   │   ├── modbus_reads.py
│   │   └── modbus_writes.py
│   └── modbus_device.py
├── mqtt/
│   ├── interface.py
│   └── parsers.py
├── ops/
│   └── heartbeat.py
└── tools/
    ├── async_tools.py
    ├── config.py
    ├── device_config.py
    └── wifi.py

Main Components

CLI Tools (evse_hub/cli/)

  • evse_online.py: Service for tracking online status of EVSE endpoints and writing status to JSON.
  • evse_poll.py: Polls Modbus devices for master/charger data and writes to InfluxDB.
  • evse_scan.py: Scans a network for Modbus TCP devices.
  • mqtt_power_logger.py: Async MQTT power logger with InfluxDB integration for monitoring power data from MQTT topics.
  • runtime.py: Defines EndpointRuntime, which holds runtime state for a Modbus endpoint.
  • status.py: Defines StatusSnapshot and utilities for loading endpoint status from JSON.
  • supervisor.py: Orchestrates polling tasks for all endpoints, starting/stopping them based on online status.

Modbus Support (evse_hub/modbus/)

  • modbus_device.py: Abstraction for Modbus TCP client connections and polling.
  • etrel/modbus_reads.py: Functions for reading Etrel-specific Modbus registers.
  • etrel/modbus_writes.py: Functions for writing to Etrel Modbus registers.

MQTT Support (evse_hub/mqtt/)

  • interface.py: MQTT configuration dataclasses and topic state tracking for power monitoring.
  • parsers.py: Message parsers for different MQTT formats (Frient impulse loggers, Shelly Pro 3EM three-phase power).

InfluxDB Integration (evse_hub/influx/)

  • influx_client.py: Singleton InfluxDB client manager with connection pooling for persistent database connections.
  • influx_writes.py: Functions for writing EVSE and master data to InfluxDB.

Utilities (evse_hub/tools/)

  • async_tools.py: Async helpers for running blocking code.
  • config.py: Configuration loading utilities.
  • device_config.py: Endpoint configuration dataclasses and YAML loading.
  • wifi.py: WiFi-related utilities.

Example: Polling and Supervising Endpoints

  • Use evse_online.py to maintain a status file of which endpoints are online.
  • Use supervisor.py to start/stop polling tasks for each endpoint based on their online status.
  • Polled data is written to InfluxDB using the routines in influx_writes.py.

Key Classes

  • EndpointRuntime: Holds runtime state for a single Modbus endpoint (config, client, locks, task, etc).
  • StatusSnapshot: Immutable snapshot of endpoint online status at a given timestamp.

Key Functions

  • poll_endpoint: Polls a single endpoint for its configured roles.
  • supervisor: Orchestrates the lifecycle of all endpoint runtime objects and manages their polling tasks.

This README is auto-generated from the code and docstrings in src/evse_hub/. For details on each module, see the source files and their docstrings.

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

evse_hub-0.7.1.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

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

evse_hub-0.7.1-py3-none-any.whl (35.5 kB view details)

Uploaded Python 3

File details

Details for the file evse_hub-0.7.1.tar.gz.

File metadata

  • Download URL: evse_hub-0.7.1.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for evse_hub-0.7.1.tar.gz
Algorithm Hash digest
SHA256 ab4a9bf99c9bde9c7c58ea60b87130033462fff7939afed35c6e8e62cf2bfcec
MD5 0c74ca8cb8d6418d4041fc4c03d5d6b1
BLAKE2b-256 dafac3458d9c1132640d3516508e28852b11fc50d2421348f48aab91b1c9861d

See more details on using hashes here.

File details

Details for the file evse_hub-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: evse_hub-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 35.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for evse_hub-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 70f32583cd64b30c7a884b2d9319ee2175136eda971fdb048c5f721f14147e2f
MD5 70fa37138ce951f8fb1c1a3558b4a62b
BLAKE2b-256 5ff4a78496818f308c3872693cdac388815387132d5eb69ee7a5209645a3259d

See more details on using hashes here.

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