IEEE 2030.5 client for GridAppSD
Project description
GridAPPSD IEEE 2030.5 Client
A Python client library for IEEE 2030.5 (Smart Energy Profile 2.0) servers with persistent connections and extensible event handling.
Features
- Persistent Connections: Uses modern HTTP client with connection pooling
- Extensible Event Handling: Abstract base class for custom event processing
- Async Support: Full asyncio integration for non-blocking operations
- Subscription Management: Automatic tracking and renewal of subscriptions
- Multi-format Support: Handles XML, JSON, and EXI content types
- TLS Authentication: Certificate-based authentication for secure communications
- Type Annotations: Modern Python typing for better IDE support and validation
Installation
# Install from PyPI
pip install gridappsd-2030-5-client
# Or with Poetry
poetry add gridappsd-2030-5-client
Quick Start
Basic Usage
import logging
from gridappsd_2030_5_client import IEEE2030Client, IEEE2030EventHandler
# Configure logging
logging.basicConfig(level=logging.INFO)
# Create a custom event handler
class MyEventHandler(IEEE2030EventHandler):
def on_connect(self, client):
print("Connected to IEEE 2030.5 server!")
def on_subscription_update(self, client, resource, data):
print(f"Received update for {resource}: {data}")
# Create and use the client
client = IEEE2030Client(
base_url="https://ieee2030server.example.com/api",
event_handler=MyEventHandler(),
cert_path="client_cert.pem",
key_path="client_key.pem",
ca_cert_path="ca_cert.pem"
)
try:
# Connect to the server
if client.connect():
# Get device capability
capability = client.get_device_capability()
print(f"Device capability: {capability}")
# Subscribe to resources
client.create_subscription("drp/1/dre") # Demand response events
# Start polling for updates
client.start_polling()
# Wait for events
input("Press Enter to stop...")
finally:
# Disconnect and clean up
client.disconnect()
Async Usage
import asyncio
from gridappsd_2030_5_client import IEEE2030Client, IEEE2030EventHandler
# Create a custom event handler
class MyEventHandler(IEEE2030EventHandler):
def on_connect(self, client):
print("Connected to IEEE 2030.5 server!")
async def main():
# Create client
client = IEEE2030Client(
base_url="https://ieee2030server.example.com/api",
event_handler=MyEventHandler(),
cert_path="client_cert.pem",
key_path="client_key.pem",
ca_cert_path="ca_cert.pem"
)
try:
# Connect to the server asynchronously
if await client.async_connect():
# Start polling for updates
client.start_polling()
# Wait for some time
await asyncio.sleep(300) # Run for 5 minutes
finally:
# Disconnect and clean up
client.disconnect()
# Run the async program
asyncio.run(main())
Development
# Clone the repository
git clone https://github.com/GRIDAPPSD/gridappsd-2030-5-client.git
cd gridappsd-2030-5-client
# Install dependencies with Poetry
poetry install
# Run tests
poetry run pytest
# Run tests with coverage
poetry run pytest --cov=gridappsd_2030_5_client
# Format code
poetry run black gridappsd_2030_5_client
License
BSD 3-Clause License
Copyright (c) 2023, GridAPPSD Contributors All rights reserved.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gridappsd_2030_5_client-0.2.2.tar.gz.
File metadata
- Download URL: gridappsd_2030_5_client-0.2.2.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5402452f6bf61cbbe89fd90f9926188ab4725e04eb2eba1efe1034aca9bd61f1
|
|
| MD5 |
199d49ac4d0f27d2fc2aec7d3b740377
|
|
| BLAKE2b-256 |
f2c047209618ff7b85a42270a5bed1dc8a995972c4ec5193672b7e08baf10433
|
Provenance
The following attestation bundles were made for gridappsd_2030_5_client-0.2.2.tar.gz:
Publisher:
publish-to-pypi.yml on GRIDAPPSD/gridappsd-2030_5-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gridappsd_2030_5_client-0.2.2.tar.gz -
Subject digest:
5402452f6bf61cbbe89fd90f9926188ab4725e04eb2eba1efe1034aca9bd61f1 - Sigstore transparency entry: 213741669
- Sigstore integration time:
-
Permalink:
GRIDAPPSD/gridappsd-2030_5-client@b62fba90072da3f9609433b87a7416ae2c7aa736 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/GRIDAPPSD
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@b62fba90072da3f9609433b87a7416ae2c7aa736 -
Trigger Event:
release
-
Statement type:
File details
Details for the file gridappsd_2030_5_client-0.2.2-py3-none-any.whl.
File metadata
- Download URL: gridappsd_2030_5_client-0.2.2-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cfeb65d39bba2fb8e1aef5725c7af1672e55a2e8eddaa02108e6203c3cececd
|
|
| MD5 |
14c9017fb969a7c0dc911b63899a4400
|
|
| BLAKE2b-256 |
11076da23f833eecc1f3fd1184090d0a0a1f9d7ad058e81367cf8e5592f849ef
|
Provenance
The following attestation bundles were made for gridappsd_2030_5_client-0.2.2-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on GRIDAPPSD/gridappsd-2030_5-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gridappsd_2030_5_client-0.2.2-py3-none-any.whl -
Subject digest:
0cfeb65d39bba2fb8e1aef5725c7af1672e55a2e8eddaa02108e6203c3cececd - Sigstore transparency entry: 213741671
- Sigstore integration time:
-
Permalink:
GRIDAPPSD/gridappsd-2030_5-client@b62fba90072da3f9609433b87a7416ae2c7aa736 -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/GRIDAPPSD
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@b62fba90072da3f9609433b87a7416ae2c7aa736 -
Trigger Event:
release
-
Statement type: