Skip to main content

ENTSO-E OPDM client SOAP API implementation in python

Project description

OPDM

Python implementation of OPDM SOAP API. OPDM is used to exchange Electrical Grid Models between ENTSO-E TSO-s and RSC-s

Other relevant API-s:

Installation

pip install opdm-api

or

pip install --user opdm-api

or

python -m pip install --user opdm-api

Usage

Initialise

import OPDM

service = OPDM.Client("https://opdm.elering.sise:8443", username="user", password="pass")

Upload File

Upload a file

response = service.publication_request(file_path_or_objet)

Upload all files in a directory

import glob
imort os

for file_name in glob.glob1(directory_path, "*.zip"):
    service.publication_request(os.path.join(directory_path, file_name))

Get File Upload/Publication Report

publication_report = service.get_profile_publication_report(model_ID)

or

publication_report = service.get_profile_publication_report(filename="uploaded_file_name.zip")

Subscribe for Model publications

Get available Publications

available_publications = service.publication_list()

Subscribe for BDS

available publications: BDS, IGM, CGM

response = service.publication_subscribe("BDS")

Subscribe for all IGM-s except RT

time_horizons = [f"{item:02d}" for item in list(range(1,32))] + ["ID", "1D", "2D", "YR"]
for time_horizon in time_horizons:
    print(f"Adding subscription for {time_horizon}")
    response = service.publication_subscribe("IGM", subscription_id=f"IGM-{time_horizon}", metadata_dict={'pmd:timeHorizon': time_horizon})
    print(response)

Cancel Subscription

response = service.publication_cancel_subscription(subscription_id)

Query Data

Model

Model consists of multiple files

response = service.query_object(object_type = "IGM", metadata_dict = {'pmd:scenarioDate': '2019-07-28T00:30:00', 'pmd:timeHorizon': '1D'})

File

response = service.query_profile('pmd:timeHorizon': '1D', 'pmd:cgmesProfile': 'SV'})

Create nice table of returned Query responses

import pandas

pandas.set_option("display.max_rows", 12)
pandas.set_option("display.max_columns", 10)
pandas.set_option("display.width", 1500)
pandas.set_option('display.max_colwidth', -1)

print(pandas.DataFrame(response['sm:QueryResult']['sm:part'][1:]))

Download a File

Download to OPDM Client and return local path to the file

response = service.get_content(file_UUID)
print(response['sm:GetContentResult']['sm:part'][1]['opdm:Profile']['opde:Content'])

Download and Save file

import base64
response = service.get_content(file_UUID, return_payload=True)
with open(f"{file_UUID}.zip", 'wb') as cgmes_file:
    report_file.write(base64.b64decode(response['sm:GetContentResult']['sm:part'][1]['opdm:Profile']['opde:Content'].encode()))

Manage Rulesets

List available Ruleset

service.list_available_rulesets()

Install Ruleset

service.install_rulesets(version="2.0.122")

Get installed Ruleset version

service.get_installed_ruleset_version()

Reset Ruleset

service.reset_ruleset()

Examples

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

opdm-api-0.1.3.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

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

opdm_api-0.1.3-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file opdm-api-0.1.3.tar.gz.

File metadata

  • Download URL: opdm-api-0.1.3.tar.gz
  • Upload date:
  • Size: 26.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for opdm-api-0.1.3.tar.gz
Algorithm Hash digest
SHA256 e5e1884d848190232ec62b7467e80451286a0c3c845faa87fbbf68837cc12c35
MD5 217d92d074f4d139c9fefba945b21b33
BLAKE2b-256 552beef02b44c13013e66873094cf0da98731f34448c6628907d65669407cb9e

See more details on using hashes here.

File details

Details for the file opdm_api-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: opdm_api-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for opdm_api-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 91913afc4a74e5fdeea5ba4c3442382342e0031b6384dbb05568691ff9495ef2
MD5 5a3f5921b6ae108c473fd82c6ee87f5c
BLAKE2b-256 c99515a9378972a1ac1a4ee2a7fee0fbb59ed443e72323c0cb7616ed539f52f2

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