Skip to main content

How do I access PI System data from Java or Linux?

How do I access PI System data from Java or Linux?

PI System is traditionally Windows-centric, but modern APIs make cross-platform access straightforward.

PI Web API (Recommended)

The best option for Java and Linux — it's a REST API accessible from any platform.

Java with HttpClient

import java.net.http.*;
import java.net.URI;

HttpClient client = HttpClient.newBuilder()
    .authenticator(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user", "pass".toCharArray());
        }
    })
    .build();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://piwebapi/piwebapi/points?nameFilter=sinusoid"))
    .GET()
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());

Java with Spring RestTemplate

RestTemplate rest = new RestTemplate();
rest.getInterceptors().add(new BasicAuthenticationInterceptor("user", "pass"));

String url = "https://piwebapi/piwebapi/streams/{webId}/recorded?startTime=*-1d";
JsonNode data = rest.getForObject(url, JsonNode.class, webId);

PI JDBC Driver (Legacy)

AVEVA provides a JDBC driver for PI OLEDB:

  • Requires a Windows machine running PI JDBC Gateway
  • Java applications connect via JDBC to the gateway
  • The gateway translates to PI OLEDB calls

This adds complexity — prefer PI Web API for new projects.

OMF (OSIsoft Message Format)

For writing data from Linux/Java:

curl -X POST https://piwebapi/piwebapi/omf \
  -H "Content-Type: application/json" \
  -H "X-Requested-With: XMLHttpRequest" \
  -d '[{"containerid": "c1", "values": [{"Timestamp": "2024-01-15T10:00:00Z", "Value": 42}]}]'

Python on Linux

Python with requests is the most popular non-Windows approach:

import requests
from requests_kerberos import HTTPKerberosAuth

response = requests.get(
    "https://piwebapi/piwebapi/dataservers",
    auth=HTTPKerberosAuth(),
    verify="/path/to/ca-cert.pem"
)

Authentication on Linux

  • Kerberos works on Linux — configure /etc/krb5.conf and use kinit to get tickets
  • Basic auth works if enabled on PI Web API (not recommended for production)
  • Bearer tokens via OIDC — configure PI Web API with your identity provider

Docker / Kubernetes

For containerized workloads:

  • Use PI Web API as the data access layer
  • No PI client libraries needed in containers
  • Authenticate via service accounts or OIDC tokens

Want to ask a follow-up?

PiChat can help with your specific PI System use case. Ask follow-up questions, get code examples, and troubleshoot issues.

Related Questions

Dive Deeper

More Questions

How do I configure PI AF templates?How do I authenticate with PI Web API from Python?What's the difference between snapshot and archive values in PI?What's the difference between PI Vision and PI ProcessBook?How do I build effective PI Vision displays?What are PI Event Frames and how do I use them?How do I write PI AF Analytics expressions?How do I use PI DataLink in Excel?Should I use PI Web API or AF SDK for my application?How do I write data to PI Data Archive?What are the main components of PI System architecture?How do I optimize PI Data Archive performance?How do I set up the PI Interface for OPC DA?How do I use PI Connector for UFL to import file data?How do I set up PI Data Archive high availability with collectives?What are the security best practices for PI System?How do I migrate PI Data Archive to a new server?How do I connect Power BI to PI System?How do I manage units of measure in PI System?What's the best way to learn PI System?How does PI time syntax work?What are good PI tag naming conventions?How do I set up PI AF notification rules?How do I use batch requests in PI Web API?How do I connect to PI AF Server using AF SDK in C#?How do I write VBA macros in PI ProcessBook?How does PI data compression work?How do I get real-time streaming updates from PI Web API?How do I troubleshoot PI AF Analysis errors?How do I write SQL queries against PI using PI OLEDB?What is PI interface buffering and how do I configure it?How do I search and query PI Event Frames?What is PI Integrator for Business Analytics?How do I fix the 'Point does not exist' error in PI System?What is the difference between PI ACE and AF Analytics?How do I manually enter data into PI Data Archive?What are AF hierarchy design best practices?What is a WebID in PI Web API and how does it work?How do I configure Kerberos authentication for PI System?Can I deploy PI System in the cloud?How do I calculate summaries (average, total, min, max) in PI?What are PI digital states and how do I use them?How do I connect PI System data to Grafana?How do I backup and restore PI Data Archive?How do I create custom symbols in PI Vision?How do I automate PI System tasks with PowerShell?What is AVEVA Connect and how does it relate to PI System?How do I check and handle data quality in PI System?How do I handle pagination in PI Web API responses?How does AVEVA PI System licensing work?How do I plan a PI System upgrade?