# Real-time Phasor Data Extraction for Analytics External Processing

**URL:** <http://discussions.gridprotectionalliance.org/t/real-time-phasor-data-extraction-for-analytics-external-processing/1291>\
**Category:** openHistorian\
**Created:** [July 25, 2024, 6:01pm UTC](http://discussions.gridprotectionalliance.org/t/real-time-phasor-data-extraction-for-analytics-external-processing/1291 "2024-07-25T18:01:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ricardlira](http://discussions.gridprotectionalliance.org/user_avatar/discussions.gridprotectionalliance.org/ricardlira/32/1314_2.png) [@ricardlira](http://discussions.gridprotectionalliance.org/u/ricardlira)\
**Post date:** [July 25, 2024, 6:01pm UTC](http://discussions.gridprotectionalliance.org/t/real-time-phasor-data-extraction-for-analytics-external-processing/1291/1 "2024-07-25T18:01:47Z")

</div>

Hello GPA team,

I am seeking your expertise on effectively extracting real-time phasor data from the openHistorian Instance using the custom output adapters. Our primary goal (as a prof-of-concept application) is to perform external calculations, such as real-time DFT and short-circuit detection, using this data (calculated externally by another serve). These calculations would be then stored in a MS SQL database which is read by Grafana dashboards.

To achieve accurate and timely results, minimal processing delay is crucial (ideally within a 5-10 second tolerance). While we have successfully tested CSV export as a preliminary step, we understand that this approach is not feasible for real-time processing due to the limitations of writing and reading to the same file simultaneously. Using the python connector works great but for rela-time processing is not fast enough to retrieve data.

Considering the available methods in openHistorian, as illustrated below, we would like to inquire about the most suitable option for our real-time analytics use case.

We are particularly interested in extracting approximately 30 signals at a sampling rate of 60 frames per second.

Your guidance on the optimal configuration and potential challenges would be greatly appreciated.

Figure 1: Available output connectors.  
 ![image](http://discussions.gridprotectionalliance.org/uploads/default/original/2X/3/3ed3c890fd015c87db6c0c2b5f331370de8cc2be.png)  
 ![image](http://discussions.gridprotectionalliance.org/uploads/default/original/2X/6/68979e92b8529b1637167a65d2ac62ff8f0301a1.png)

---

<div class="post-metadata">

**Author:** ![ritchiecarroll](http://discussions.gridprotectionalliance.org/user_avatar/discussions.gridprotectionalliance.org/ritchiecarroll/32/2_2.png) [@ritchiecarroll](http://discussions.gridprotectionalliance.org/u/ritchiecarroll)\
**Post date:** [July 25, 2024, 6:08pm UTC](http://discussions.gridprotectionalliance.org/t/real-time-phasor-data-extraction-for-analytics-external-processing/1291/2 "2024-07-25T18:08:16Z")

</div>

Have you considered just directly consuming streaming data via STTP?

---

<div class="post-metadata">

**Author:** ![ricardlira](http://discussions.gridprotectionalliance.org/user_avatar/discussions.gridprotectionalliance.org/ricardlira/32/1314_2.png) [@ricardlira](http://discussions.gridprotectionalliance.org/u/ricardlira)\
**Post date:** [July 25, 2024, 6:12pm UTC](http://discussions.gridprotectionalliance.org/t/real-time-phasor-data-extraction-for-analytics-external-processing/1291/3 "2024-07-25T18:12:32Z")

</div>

Not yet, since I don’t know how to interact with STTP via Python. Do you have examples? Thanks!

---

<div class="post-metadata">

**Author:** ![ritchiecarroll](http://discussions.gridprotectionalliance.org/user_avatar/discussions.gridprotectionalliance.org/ritchiecarroll/32/2_2.png) [@ritchiecarroll](http://discussions.gridprotectionalliance.org/u/ritchiecarroll)\
**Post date:** [July 25, 2024, 6:19pm UTC](http://discussions.gridprotectionalliance.org/t/real-time-phasor-data-extraction-for-analytics-external-processing/1291/4 "2024-07-25T18:19:19Z")

</div>

Here you go:

- [PyPI Library](https://pypi.org/project/sttpapi/)
- [API Reference](https://sttp.github.io/pyapi/)
- [Simple Example](https://github.com/sttp/pyapi/blob/main/examples/simplesubscribe/main.py)

Also, another option might be to use [IronPython](https://ironpython.net/) and develop code as an openPDC Action Adapter.

---

<div class="post-metadata">

**Author:** ![ricardlira](http://discussions.gridprotectionalliance.org/user_avatar/discussions.gridprotectionalliance.org/ricardlira/32/1314_2.png) [@ricardlira](http://discussions.gridprotectionalliance.org/u/ricardlira)\
**Post date:** [July 26, 2024, 7:31pm UTC](http://discussions.gridprotectionalliance.org/t/real-time-phasor-data-extraction-for-analytics-external-processing/1291/5 "2024-07-26T19:31:34Z")

</div>

Thanks, I will proceed with the test!
