private static void ChannelsExamples(PIWebApiClient client, List <string> webIds) { //Example StartStream CancellationTokenSource cancellationSource1 = new CancellationTokenSource(); IObserver <PIItemsStreamValues> observer1 = new CustomChannelObserver(); Task channelTask1 = client.Channel.StartStream(webIds[0], observer1, cancellationSource1.Token); //Example StartStreamSet CancellationTokenSource cancellationSource2 = new CancellationTokenSource(); IObserver <PIItemsStreamValues> observer2 = new CustomChannelObserver(); PIElement element = client.Element.GetByPath("\\\\MARC-PI2016\\AFSDKTest\\Element2"); Task channelTask2 = client.Channel.StartStreamSet(element.WebId, observer2, cancellationSource2.Token); //Example StartStreamSets CancellationTokenSource cancellationSource3 = new CancellationTokenSource(); IObserver <PIItemsStreamValues> observer3 = new CustomChannelObserver(); Task channelTask3 = client.Channel.StartStreamSets(webIds, observer3, cancellationSource3.Token); System.Threading.Thread.Sleep(120000); cancellationSource3.Cancel(); cancellationSource2.Cancel(); cancellationSource1.Cancel(); channelTask1.Wait(); channelTask2.Wait(); channelTask3.Wait(); }
public void Init() { PIWebApiClient client = PIWebApiClientGenerator.GenerateInstance(); instance = client.Configuration; configElement = AFObject.FindObject(Constants.PIWEBAPI_CONFIGURATION_ELEMENT_PATH) as AFElement; corsExpHeaders = configElement.Attributes[Constants.PIWEBAPI_CONFIGURATION_CORSEXPHEADERS].GetValue().Value.ToString(); corsMethods = configElement.Attributes[Constants.PIWEBAPI_CONFIGURATION_CORSMETHODS].GetValue().Value.ToString(); scanSearchInterval = configElement.Attributes[Constants.PIWEBAPI_CONFIGURATION_CORSEACHSCANINTERVALS].GetValue().ValueAsInt32(); corsMethodsAttribute = configElement.Attributes[Constants.PIWEBAPI_CONFIGURATION_CORSMETHODS]; }
private void Login() { if (!string.IsNullOrEmpty(_username) && !string.IsNullOrEmpty(_password)) { var url = Xamarin.Forms.Application.Current.Resources["PIWebAPIUrl"].ToString(); var c = new PIWebApiClient(url, false, _username, _password); if (SimpleIoc.Default.ContainsCreated <PIWebApiClient>()) { SimpleIoc.Default.Unregister <PIWebApiClient>(); } SimpleIoc.Default.Register(() => c); var v = new SearchView(); Xamarin.Forms.Application.Current.MainPage.Navigation.PushAsync(v, true); } }
static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Yellow; ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; PIWebApiClient client = new PIWebApiClient("https://localhost/piwebapi", true); PIPoint point1 = client.Point.GetByPath("\\\\SATURN-MARCOS\\sinusoid"); PIPoint point2 = client.Point.GetByPath("\\\\SATURN-MARCOS\\sinusoidu"); PIPoint point3 = client.Point.GetByPath("\\\\SATURN-MARCOS\\cdt158"); List <string> webIds = new List <string>() { point1.WebId, point2.WebId, point3.WebId }; //Example 10 - PI Web API Channels - StartStreamSets CancellationTokenSource cancellationSource = new CancellationTokenSource(); IObserver <PIItemsStreamValues> observer = new CustomChannelObserver(); Task channelTask = client.Channel.StartStreamSets(webIds, observer, cancellationSource.Token); System.Threading.Thread.Sleep(120000); cancellationSource.Cancel(); channelTask.Wait(); }
static void Main(string[] args) { PIWebApiClient client = new PIWebApiClient(); bool connectionTest = client.Connect("https://marc-web-sql.marc.net/piwebapi", true); if (connectionTest == false) { return; } PIDataServer dataServer = client.DataServer.GetByPath("\\\\MARC-PI2016"); PIPoint createdPoint = client.Point.GetByPath("\\\\MARC-PI2016\\SINUSOIDR1259", null); string webId = createdPoint.WebId; createdPoint.DigitalSetName = null; createdPoint.EngineeringUnits = null; createdPoint.Descriptor = "14 Hour Sine Waveeeeee"; createdPoint.Future = false; createdPoint.Id = 0; createdPoint.Links = null; createdPoint.Name = null; createdPoint.Path = null; createdPoint.PointClass = null; createdPoint.PointType = null; createdPoint.WebId = null; createdPoint.Span = 0; createdPoint.Zero = 0; ApiResponseObject response = client.Point.UpdateWithHttpInfo(webId, createdPoint); Console.WriteLine(response.StatusCode); PIPoint point1 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoid"); PIPoint point2 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoidu"); PIPoint point3 = client.Point.GetByPath("\\\\marc-pi2016\\cdt158"); string webIds = point1.WebId + "," + point2.WebId + "," + point3.WebId; PIItemsStreamValues piItemsStreamValues = client.StreamSet.GetRecordedAdHoc(webIds, true, 10000); for (int i = 0; i < piItemsStreamValues.GetItemsLength(); i++) { Console.WriteLine(piItemsStreamValues.GetItem(i).Path); for (int j = 0; j < piItemsStreamValues.GetItem(i).GetItemsLength(); j++) { Console.WriteLine(piItemsStreamValues.GetItem(i).GetItem(j).Value); } } PIItemsStreamValues streamValuesItems = new PIItemsStreamValues(); streamValuesItems.CreateItemsArray(3); PITimedValue value1 = new PITimedValue(); value1.Value = 2; value1.Timestamp = "*-1d"; PITimedValue value2 = new PITimedValue(); value2.Value = 3; value2.Timestamp = "*-2d"; PITimedValue value3 = new PITimedValue(); value3.Value = 4; value3.Timestamp = "*-1d"; PITimedValue value4 = new PITimedValue(); value4.Value = 5; value4.Timestamp = "*-2d"; PITimedValue value5 = new PITimedValue(); value5.Value = 6; value5.Timestamp = "*-1d"; PITimedValue value6 = new PITimedValue(); value6.Value = 7; value6.Timestamp = "*-2d"; PIStreamValues streamValue1 = new PIStreamValues(); streamValue1.WebId = point1.WebId; streamValue1.CreateItemsArray(2); streamValue1.SetItem(0, value1); streamValue1.SetItem(1, value2); streamValuesItems.SetItem(0, streamValue1); PIStreamValues streamValue2 = new PIStreamValues(); streamValue2.WebId = point2.WebId; streamValue2.CreateItemsArray(2); streamValue2.SetItem(0, value3); streamValue2.SetItem(1, value4); streamValuesItems.SetItem(1, streamValue2); PIStreamValues streamValue3 = new PIStreamValues(); streamValue3.WebId = point2.WebId; streamValue3.CreateItemsArray(2); streamValue3.SetItem(0, value5); streamValue3.SetItem(1, value6); streamValuesItems.SetItem(2, streamValue3); ApiResponsePIItemsItemsSubstatus responsee = client.StreamSet.UpdateValuesAdHocWithHttpInfo(streamValuesItems); PIElement myElement = client.Element.GetByPath("\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm"); Console.WriteLine(myElement.Description); PIItemsAttribute attributes = client.Element.GetAttributes(myElement.WebId, 1000, false, false, false, 0); Console.WriteLine(attributes); PIAttribute attribute = client.Attribute.GetByPath(string.Format("{0}|{1}", "\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm", attributes.Items[0].Name)); PITimedValue value = client.Stream.GetEnd(attribute.WebId); Console.WriteLine(value); string expression = "'sinusoid'*2 + 'cdt158'"; PITimedValues values1 = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression, times: "*-1d, *-2d"); string expression2 = "'cdt158'+tagval('sinusoid','*-1d')"; PITimedValues values2 = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression2, times: "*-1d, *-2d"); PIItemsSummaryValue itemsSummaryValue = client.Calculation.GetSummary(expression: expression2, startTime: "*-1d", endTime: "*", webId: dataServer.WebId, summaryTypes: "Average, Maximum"); //Get the attribute's end of the stream value PITimedValue newValue = client.Stream.GetEnd(attribute.WebId); //Stream Updates PIItemsStreamUpdatesRegister piItemsStreamUpdatesRegister = client.StreamSet.RegisterStreamSetUpdates(webIds); List <string> markersList = piItemsStreamUpdatesRegister.Items.Select(i => i.LatestMarker).ToList(); string markers = String.Join(",", markersList.ToArray()); int k = 3; while (k > 0) { PIItemsStreamUpdatesRetrieve piItemsStreamUpdatesRetrieve = client.StreamSet.RetrieveStreamSetUpdates(markers); markersList = piItemsStreamUpdatesRetrieve.Items.Select(i => i.LatestMarker).ToList(); markers = String.Join(",", markersList.ToArray()); foreach (PIStreamUpdatesRetrieve item in piItemsStreamUpdatesRetrieve.Items) { foreach (PIDataPipeEvent piEvent in item.Events) { Console.WriteLine("Action={0}, Value={1}, SourcePath={2}", piEvent.Action, piEvent.Value, item.SourcePath); } } System.Threading.Thread.Sleep(30000); k--; } }
public void Init() { PIWebApiClient client = PIWebApiClientGenerator.GenerateInstance(); instance = client.System; }
static void Main(string[] args) { //Create an instance of the PI Web API top level object. PIWebApiClient client = new PIWebApiClient("https://marc-web-sql.marc.net/piwebapi", true); // TODO: The PI Web API client must provide a user name and password when using “basic” authentication // Store passwords outside of the code in a hardware TPM, trusted service (credential manager) or in a protected file. // Code to return the user name and password is not shown here. var homeLanding = client.Home.Get(); ////Get the PI Data Archive object PIDataServer dataServer = client.DataServer.GetByPath("\\\\MARC-PI2016"); string expression = "'sinusoid'*2 + 'cdt158'"; PITimedValues values = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression, time: new List <string>() { "*-1d" }); string expression2 = "'cdt158'+tagval('sinusoid','*-1d')"; PITimedValues values2 = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression2, time: new List <string>() { "*-1d" }); PIItemsSummaryValue itemsSummaryValue = client.Calculation.GetSummary(expression: expression2, startTime: "*-1d", endTime: "*", webId: dataServer.WebId, summaryType: new List <string>() { "Average", "Maximum" }); //Get PI Point PIPoint createdPoint = client.Point.GetByPath("\\\\MARC-PI2016\\SINUSOIDR1259", null); //Change the description of the PI Point string webId = createdPoint.WebId; createdPoint.DigitalSetName = null; createdPoint.EngineeringUnits = null; createdPoint.Descriptor = "New description"; createdPoint.Future = null; createdPoint.Id = null; createdPoint.Links = null; createdPoint.Name = null; createdPoint.Path = null; createdPoint.PointClass = null; createdPoint.PointType = null; createdPoint.Span = null; createdPoint.Zero = null; createdPoint.WebId = null; //Update PI Point ApiResponse <Object> response = client.Point.UpdateWithHttpInfo(webId, createdPoint); //Check if the request was successful Console.WriteLine(response.StatusCode); //Get PI Points WebIds PIPoint point1 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoid"); PIPoint point2 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoidu", selectedFields: "webId;name"); PIPoint point3 = client.Point.GetByPath("\\\\marc-pi2016\\cdt158"); List <string> webIds = new List <string>() { point1.WebId, point2.WebId, point3.WebId }; //Get recorded values in bulk PIItemsStreamValues piItemsStreamValues = client.StreamSet.GetRecordedAdHoc(webId: webIds, startTime: "*-3d", endTime: "*"); //Send values in bulk var streamValuesItems = new PIItemsStreamValues(); var streamValue1 = new PIStreamValues(); var streamValue2 = new PIStreamValues(); var streamValue3 = new PIStreamValues(); var value1 = new PITimedValue(); var value2 = new PITimedValue(); var value3 = new PITimedValue(); var value4 = new PITimedValue(); var value5 = new PITimedValue(); var value6 = new PITimedValue(); value1.Value = 2; value1.Timestamp = "*-1d"; value2.Value = 3; value2.Timestamp = "*-2d"; value3.Value = 4; value3.Timestamp = "*-1d"; value4.Value = 5; value4.Timestamp = "*-2d"; value5.Value = 6; value5.Timestamp = "*-1d"; value6.Value = 7; value6.Timestamp = "*-2d"; streamValue1.WebId = point1.WebId; streamValue1.Items = new List <PITimedValue>(); streamValue1.Items.Add(value1); streamValue1.Items.Add(value2); streamValue2.WebId = point2.WebId; streamValue2.Items = new List <PITimedValue>(); streamValue2.Items.Add(value3); streamValue2.Items.Add(value4); streamValue3.WebId = point2.WebId; streamValue3.Items = new List <PITimedValue>(); streamValue3.Items.Add(value5); streamValue3.Items.Add(value6); ApiResponse <PIItemsItemsSubstatus> response2 = client.StreamSet.UpdateValuesAdHocWithHttpInfo(new List <PIStreamValues>() { streamValue1, streamValue2, streamValue3 }); //Get an element given a path PIElement myElement = client.Element.GetByPath("\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm"); //Get element's attributes PIItemsAttribute attributes = client.Element.GetAttributes(myElement.WebId, null, 1000, null, false); //Get an attribute given a path PIAttribute attribute = client.Attribute.GetByPath(string.Format("{0}|{1}", "\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm", attributes.Items[0].Name)); WebIdInfo webIdInfo = client.WebIdHelper.GetWebIdInfo(myElement.WebId); WebIdInfo webIdInfo2 = client.WebIdHelper.GetWebIdInfo(attribute.WebId); WebIdInfo webIdInfo4 = client.WebIdHelper.GetWebIdInfo(point1.WebId); WebIdInfo webIdInfo3 = client.WebIdHelper.GetWebIdInfo(dataServer.WebId); //Get the attribute's end of the stream value PITimedValue value = client.Stream.GetEnd(attribute.WebId); //Cancelling the HTTP request with the CancellationToken Stopwatch watch = Stopwatch.StartNew(); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); PIItemsStreamValues bulkValues = null; try { Task t = Task.Run(async() => { bulkValues = await client.StreamSet.GetRecordedAdHocAsync(webId: webIds, startTime: "*-1800d", endTime: "*", maxCount: 50000, cancellationToken: cancellationTokenSource.Token); }); //Cancel the request after 4s System.Threading.Thread.Sleep(4000); cancellationTokenSource.Cancel(); t.Wait(); Console.WriteLine("Completed task: Time elapsed: {0}s", 0.001 * watch.ElapsedMilliseconds); } catch (Exception) { Console.WriteLine("Cancelled task: Time elapsed: {0}s", 0.001 * watch.ElapsedMilliseconds); }; //Stream Updates PIItemsStreamUpdatesRegister piItemsStreamUpdatesRegister = client.StreamSet.RegisterStreamSetUpdates(webIds); List <string> markers = piItemsStreamUpdatesRegister.Items.Select(i => i.LatestMarker).ToList(); int k = 3; while (k > 0) { PIItemsStreamUpdatesRetrieve piItemsStreamUpdatesRetrieve = client.StreamSet.RetrieveStreamSetUpdates(markers); markers = piItemsStreamUpdatesRetrieve.Items.Select(i => i.LatestMarker).ToList(); foreach (PIStreamUpdatesRetrieve item in piItemsStreamUpdatesRetrieve.Items) { foreach (PIDataPipeEvent piEvent in item.Events) { Console.WriteLine("Action={0}, Value={1}, SourcePath={2}", piEvent.Action, piEvent.Value, item.SourcePath); } } System.Threading.Thread.Sleep(30000); k--; } ChannelsExamples(client, webIds); Console.WriteLine("Finished"); Console.ReadKey(); }
public SearchViewModel(PIWebApiClient client) { _client = client; InitClient(); }
public EventFrameAnnotationViewModel(PIWebApiClient client) { _client = client; }
static void Main(string[] args) { //Create an instance of the PI Web API top level object. PIWebApiClient client = new PIWebApiClient("https://marc-web-sql.marc.net/piwebapi", true); //Get the PI Data Archive object PIDataServer dataServer = client.DataServer.GetByPath("\\\\MARC-PI2016"); //Get PI Point PIPoint createdPoint = client.Point.GetByPath("\\\\MARC-PI2016\\SINUSOIDR1259", null); //Change the description of the PI Point string webId = createdPoint.WebId; createdPoint.DigitalSetName = null; createdPoint.EngineeringUnits = null; createdPoint.Descriptor = "New description"; createdPoint.Future = null; createdPoint.Id = null; createdPoint.Links = null; createdPoint.Name = null; createdPoint.Path = null; createdPoint.PointClass = null; createdPoint.PointType = null; createdPoint.WebId = null; //Update PI Point ApiResponse <Object> response = client.Point.UpdateWithHttpInfo(webId, createdPoint); //Check if the request was successful Console.WriteLine(response.StatusCode); //Get PI Points WebIds PIPoint point1 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoid"); PIPoint point2 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoidu"); PIPoint point3 = client.Point.GetByPath("\\\\marc-pi2016\\cdt158"); List <string> webIds = new List <string>() { point1.WebId, point1.WebId, point1.WebId }; //Get recorded values in bulk PIItemsStreamValues piItemsStreamValues = client.StreamSet.GetRecordedAdHoc(webIds, startTime: "*-3d", endTime: "*"); //Send values in bulk var streamValuesItems = new PIItemsStreamValues(); var streamValue1 = new PIStreamValues(); var streamValue2 = new PIStreamValues(); var streamValue3 = new PIStreamValues(); var value1 = new PITimedValue(); var value2 = new PITimedValue(); var value3 = new PITimedValue(); var value4 = new PITimedValue(); var value5 = new PITimedValue(); var value6 = new PITimedValue(); value1.Value = 2; value1.Timestamp = "*-1d"; value2.Value = 3; value2.Timestamp = "*-2d"; value3.Value = 4; value3.Timestamp = "*-1d"; value4.Value = 5; value4.Timestamp = "*-2d"; value5.Value = 6; value5.Timestamp = "*-1d"; value6.Value = 7; value6.Timestamp = "*-2d"; streamValue1.WebId = point1.WebId; streamValue1.Items = new List <PITimedValue>(); streamValue1.Items.Add(value1); streamValue1.Items.Add(value2); streamValue2.WebId = point2.WebId; streamValue2.Items = new List <PITimedValue>(); streamValue2.Items.Add(value3); streamValue2.Items.Add(value4); streamValue3.WebId = point2.WebId; streamValue3.Items = new List <PITimedValue>(); streamValue3.Items.Add(value5); streamValue3.Items.Add(value6); ApiResponse <PIItemsItemsSubstatus> response2 = client.StreamSet.UpdateValuesAdHocWithHttpInfo(new List <PIStreamValues>() { streamValue1, streamValue2, streamValue3 }); //Get an element given a path PIElement myElement = client.Element.GetByPath("\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm"); //Get element's attributes PIItemsAttribute attributes = client.Element.GetAttributes(myElement.WebId, null, 1000, null, false); //Get an attribute given a path PIAttribute attribute = client.Attribute.GetByPath(string.Format("{0}|{1}", "\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm", attributes.Items[0].Name)); //Get the attribute's end of the stream value PITimedValue value = client.Stream.GetEnd(attribute.WebId); }
public EventFrameViewModel(PIWebApiClient client) { _client = client; }
static void Main(string[] args) { var username = "******"; var password = "******"; var uri = "https://pi.dvnhackathon.com/piwebapi"; // connect to the pi-webapi PIWebApiClient client = new PIWebApiClient(uri, false, username, password); Console.WriteLine($"Connected to {uri}"); // the webId for accessing the skid element var skidId = "E0kmIZsN6_90OPP6Ztf91JxQQG-r8JTT5xGpRgANOmHTrQT1NJU09GVFBJLTAwMVxERVZPTlxTS0lEU1xTS0lEICM3Nw"; // get a list of attirbutes on this element indexed to name var attributeDict = new Dictionary <string, string>(); foreach (var attribute in client.Element.GetAttributes(skidId).Items) { attributeDict.Add(attribute.Name, attribute.WebId); foreach (var child in client.Attribute.GetAttributes(attribute.WebId).Items) { attributeDict.Add($"{attribute.Name} {child.Name}", child.WebId); } } Console.WriteLine($"Found {attributeDict.Count} attributes."); //var batchRequest = new Dictionary<string, PIRequest>(); //batchRequest.Add("1", new PIRequest("GET", $"{uri}/streams/A0EkmIZsN6_90OPP6Ztf91JxQQG-r8JTT5xGpRgANOmHTrQEngcZuEydlc9S6njbLWPaQT1NJU09GVFBJLTAwMVxERVZPTlxTS0lEU1xTS0lEICM3N3xBQ1RJVkUgR0VMIEJSRUFLRVI/value")); //var batch = client.BatchApi.Execute(batchRequest); //foreach (var response in batch) //{ // Console.Write($"{response.Key} -> {response.Value}"); //} // get data for our key attribute (data will be aligned to its timestamps) Console.WriteLine($"Requesting history for 'Treating Pressure' key item."); var timestamps = new List <string>(); var startTime = "1/1/2017"; var lastStartTime = ""; while (startTime != lastStartTime) { Console.Write($" -> {startTime}"); lastStartTime = startTime; var keyTimestamps = client.Stream.GetRecorded( webId: "A0EkmIZsN6_90OPP6Ztf91JxQQG-r8JTT5xGpRgANOmHTrQfy8liDPVAlkrZEtw0Fh1wgT1NJU09GVFBJLTAwMVxERVZPTlxTS0lEU1xTS0lEICM3N3xUUkVBVElORyBQUkVTU1VSRQ", startTime: startTime, endTime: "*", maxCount: 25000 ); foreach (var t in keyTimestamps.Items) { timestamps.Add(t.Timestamp); startTime = t.Timestamp; } Console.WriteLine($" [{keyTimestamps.Items.Count}]"); } Console.WriteLine($"Found {timestamps.Count} timestamped values for key item."); // keep track of the row var rowCount = 0; var maxRows = timestamps.Count; // write the data to a file so we have better access, its all just history anyway // why is the webapi so slow? wireless network traffic? using (var csv = new StreamWriter("data.csv", false)) { foreach (var timestamp in timestamps) { Console.WriteLine($"{++rowCount}/{maxRows}: {timestamp}"); // write timestamp var rowString = $"\"timestamp\": {timestamp},"; // get the values for each item at this timestamp foreach (var a in attributeDict) { var time = new List <string>(); time.Add(timestamp); var v = client.Stream.GetInterpolatedAtTimes(a.Value, time: time); if (v.Items[0].Value.ToString().StartsWith("{", StringComparison.InvariantCulture)) { rowString += ($"\"{a.Key.Replace(" ", "")}\": null,"); } else { rowString += ($"\"{a.Key.Replace(" ", "")}\": {v.Items[0].Value},"); } } // remove the last comma rowString = rowString.Remove(rowString.Length - 1); // write to the file csv.WriteLine($"{{{rowString}}}"); } } }
private static async Task RunAsync() { PIWebApiClient client = new PIWebApiClient("https://localhost/piwebapi", true); //Example 1 - Connecting to PI Web API PILanding landing = await client.Home.GetAsync(); Console.WriteLine("The System Link is {0}", landing.Links.System); //Example 2 - Getting the PI Objects Web ID PIDataServer dataServer = client.DataServer.GetByName("SATURN-MARCOS"); PIPoint sinusoidPoint = client.Point.GetByPath("\\\\SATURN-MARCOS\\sinusoid"); PIElement element = client.Element.GetByPath("\\\\SATURN-MARCOS\\Talk\\Element1"); PIAttribute attribute = client.Attribute.GetByPath("\\\\SATURN-MARCOS\\Talk\\Element1|Attribute1"); //Example 3 - Handling exceptions try { PIWebApiClient client2 = new PIWebApiClient("https://devdata.osisoft.com/piwebapi", true); //Example 1 - Connecting to PI Web API await client2.Home.GetAsync(); } catch (ApiException e) { Console.WriteLine("Expected exception: {0}", e.Message); } try { PIPoint sinusoidPoint2 = client.Point.GetByPath("\\\\SATURN-MARCOS\\sin453534usoid"); } catch (ApiException e) { Console.WriteLine("Expected exception: {0}", e.Message); } //Example 4 - Change the description of the PI Point PIPoint updatedPIPoint = new PIPoint(); updatedPIPoint.Descriptor = "New descriptor!!"; var res = client.Point.UpdateWithHttpInfo(sinusoidPoint.WebId, updatedPIPoint); if (res.StatusCode < 300) { Console.WriteLine("Success!"); } //Example 5 - Retrieving data in bulk PIPoint point1 = client.Point.GetByPath("\\\\SATURN-MARCOS\\sinusoid"); PIPoint point2 = client.Point.GetByPath("\\\\SATURN-MARCOS\\sinusoidu"); PIPoint point3 = client.Point.GetByPath("\\\\SATURN-MARCOS\\cdt158"); List <string> webIds = new List <string>() { point1.WebId, point2.WebId, point3.WebId }; PIItemsStreamValues itemsStreamValues = client.StreamSet.GetRecordedAdHoc(webIds, startTime: "*-1d", endTime: "*"); foreach (PIStreamValues streamValues in itemsStreamValues.Items) { foreach (PITimedValue value in streamValues.Items) { Console.WriteLine("{0} {1} {2}", streamValues.Name, value.Value, value.Timestamp); } } ////Example 6 - Sending data in bulk var piStreamValuesList = new List <PIStreamValues>() { new PIStreamValues() { WebId = point1.WebId, Items = new List <PITimedValue>() { new PITimedValue() { Value = 2, Timestamp = "*-1d" }, new PITimedValue() { Value = 3, Timestamp = "*-2d" } }, }, new PIStreamValues() { WebId = point2.WebId, Items = new List <PITimedValue>() { new PITimedValue() { Value = 4, Timestamp = "*-1d" }, new PITimedValue() { Value = 5, Timestamp = "*-2d" } }, }, new PIStreamValues() { WebId = point3.WebId, Items = new List <PITimedValue>() { new PITimedValue() { Value = 6, Timestamp = "*-1d" }, new PITimedValue() { Value = 7, Timestamp = "*-2d" } }, }, }; ApiResponse <PIItemsItemsSubstatus> response2 = client.StreamSet.UpdateValuesAdHocWithHttpInfo(piStreamValuesList); if (response2.StatusCode < 300) { Console.WriteLine("The values were updated successfully."); } //Example 7 - PI Web API Batch Dictionary <string, PIRequest> batch = new Dictionary <string, PIRequest>() { { "1", new PIRequest("GET", "https://localhost/piwebapi/points?path=\\\\SATURN-MARCOS\\sinusoid") }, { "2", new PIRequest("GET", "https://localhost/piwebapi/points?path=\\\\SATURN-MARCOS\\cdt158") }, { "3", new PIRequest() { Method = "GET", Resource = "https://localhost/piwebapi/streamsets/value?webid={0}&webid={1}", Parameters = new List <string>() { "$.1.Content.WebId", "$.2.Content.WebId" }, ParentIds = new List <string>() { "1", "2" } } } }; Dictionary <string, PIResponse> batchResponse = await client.BatchApi.ExecuteAsync(batch); if (batchResponse.All(r => r.Value.Status == 200)) { PIPoint pointBatch1 = JsonConvert.DeserializeObject <PIPoint>(batchResponse["1"].Content.ToString()); PIPoint pointBatch2 = JsonConvert.DeserializeObject <PIPoint>(batchResponse["2"].Content.ToString()); PIItemsStreamValue batchStreamValues = JsonConvert.DeserializeObject <PIItemsStreamValue>(batchResponse["3"].Content.ToString()); foreach (PIStreamValue piStreamValue in batchStreamValues.Items) { Console.WriteLine("PI Point: {0}, Value: {1}, Timestamp: {2}", piStreamValue.Name, piStreamValue.Value.Value, piStreamValue.Value.Timestamp); } } //Example 8 - Getting Web ID 2.0 information WebIdInfo webIdInfo = client.WebIdHelper.GetWebIdInfo(element.WebId); Console.WriteLine("Element Path is: {0}", webIdInfo.Path); WebIdInfo webIdInfo2 = client.WebIdHelper.GetWebIdInfo(attribute.WebId); Console.WriteLine("Attribute Path is: {0}", webIdInfo.Path); WebIdInfo webIdInfo4 = client.WebIdHelper.GetWebIdInfo(point1.WebId); Console.WriteLine("PI Point Path is: {0}", webIdInfo.Path); WebIdInfo webIdInfo3 = client.WebIdHelper.GetWebIdInfo(dataServer.WebId); Console.WriteLine("PI Data Server Path is: {0}", webIdInfo.Path); //Example 9 - Generating Web ID 2.0 using path string webId1PathOnly = client.WebIdHelper.GenerateWebIdByPath("\\\\SATURN-MARCOS", typeof(PIDataServer)); PIDataServer dataServer2 = client.DataServer.Get(webId1PathOnly); string webId2PathOnly = client.WebIdHelper.GenerateWebIdByPath("\\\\SATURN-MARCOS\\Talk\\Element1|Attribute1", typeof(PIAttribute), typeof(PIElement)); PIAttribute attribute2 = client.Attribute.Get(webId2PathOnly); }
static void Main(string[] args) { PIWebApiClient client = new PIWebApiClient(); bool connectionTest = client.Connect("https://marc-web-sql.marc.net/piwebapi", true); if (connectionTest == false) { return; } PIDataServer dataServer = client.DataServer.GetByPath("\\\\MARC-PI2016"); PIPoint createdPoint = client.Point.GetByPath("\\\\MARC-PI2016\\SINUSOIDR1259", null); string webId = createdPoint.WebId; createdPoint.DigitalSetName = null; createdPoint.EngineeringUnits = null; createdPoint.Descriptor = "14 Hour Sine Waveeeeee"; createdPoint.Future = false; createdPoint.Id = 0; createdPoint.Links = null; createdPoint.Name = null; createdPoint.Path = null; createdPoint.PointClass = null; createdPoint.PointType = null; createdPoint.WebId = null; ApiResponseObject response = client.Point.UpdateWithHttpInfo(webId, createdPoint); Console.WriteLine(response.StatusCode); PIPoint point1 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoid"); PIPoint point2 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoidu"); PIPoint point3 = client.Point.GetByPath("\\\\marc-pi2016\\cdt158"); string webIds = point1.WebId + "," + point1.WebId + "," + point1.WebId; PIItemsStreamValues piItemsStreamValues = client.StreamSet.GetRecordedAdHoc(webIds, true, 10000); for (int i = 0; i < piItemsStreamValues.GetItemsLength(); i++) { Console.WriteLine(piItemsStreamValues.GetItem(i).Path); for (int j = 0; j < piItemsStreamValues.GetItem(i).GetItemsLength(); j++) { Console.WriteLine(piItemsStreamValues.GetItem(i).GetItem(j).Value); } } PIItemsStreamValues streamValuesItems = new PIItemsStreamValues(); streamValuesItems.CreateItemsArray(3); PITimedValue value1 = new PITimedValue(); value1.Value = 2; value1.Timestamp = "*-1d"; PITimedValue value2 = new PITimedValue(); value2.Value = 3; value2.Timestamp = "*-2d"; PITimedValue value3 = new PITimedValue(); value3.Value = 4; value3.Timestamp = "*-1d"; PITimedValue value4 = new PITimedValue(); value4.Value = 5; value4.Timestamp = "*-2d"; PITimedValue value5 = new PITimedValue(); value5.Value = 6; value5.Timestamp = "*-1d"; PITimedValue value6 = new PITimedValue(); value6.Value = 7; value6.Timestamp = "*-2d"; PIStreamValues streamValue1 = new PIStreamValues(); streamValue1.WebId = point1.WebId; streamValue1.CreateItemsArray(2); streamValue1.SetItem(0, value1); streamValue1.SetItem(1, value2); streamValuesItems.SetItem(0, streamValue1); PIStreamValues streamValue2 = new PIStreamValues(); streamValue2.WebId = point2.WebId; streamValue2.CreateItemsArray(2); streamValue2.SetItem(0, value3); streamValue2.SetItem(1, value4); streamValuesItems.SetItem(1, streamValue2); PIStreamValues streamValue3 = new PIStreamValues(); streamValue3.WebId = point2.WebId; streamValue3.CreateItemsArray(2); streamValue3.SetItem(0, value5); streamValue3.SetItem(1, value6); streamValuesItems.SetItem(2, streamValue3); ApiResponsePIItemsItemsSubstatus responsee = client.StreamSet.UpdateValuesAdHocWithHttpInfo(streamValuesItems); PIElement myElement = client.Element.GetByPath("\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm"); Console.WriteLine(myElement.Description); PIItemsAttribute attributes = client.Element.GetAttributes(myElement.WebId, 1000, false, false, false, 0); Console.WriteLine(attributes); PIAttribute attribute = client.Attribute.GetByPath(string.Format("{0}|{1}", "\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm", attributes.Items[0].Name)); PITimedValue value = client.Stream.GetEnd(attribute.WebId); Console.WriteLine(value); }
static void Main(string[] args) { //Do not verify Ssl certificate ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; //Create an instance of the PI Web API top level object. PIWebApiClient client = new PIWebApiClient("https://marc-rras.osisoft.int/piwebapi", false, "marc.adm", "kk"); //PIWebApiClient client = new PIWebApiClient("https://devdata.osisoft.com/piwebapi", false, "webapiuser", "!try3.14webapi!"); var homeLanding = client.Home.Get(); ////Get the PI Data Archive object PIDataServer dataServer = client.DataServer.GetByPath("\\\\MARC-PI2016"); string expression = "'sinusoid'*2 + 'cdt158'"; PITimedValues values = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression, time: new List <string>() { "*-1d" }); string expression2 = "'cdt158'+tagval('sinusoid','*-1d')"; PITimedValues values2 = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression2, time: new List <string>() { "*-1d" }); PIItemsSummaryValue itemsSummaryValue = client.Calculation.GetSummary(expression: expression2, startTime: "*-1d", endTime: "*", webId: dataServer.WebId, summaryType: new List <string>() { "Average", "Maximum" }); //Get PI Point PIPoint createdPoint = client.Point.GetByPath("\\\\MARC-PI2016\\SINUSOIDR1259", null); //Change the description of the PI Point string webId = createdPoint.WebId; createdPoint.DigitalSetName = null; createdPoint.EngineeringUnits = null; createdPoint.Descriptor = "New description"; createdPoint.Future = null; createdPoint.Id = null; createdPoint.Links = null; createdPoint.Name = null; createdPoint.Path = null; createdPoint.PointClass = null; createdPoint.PointType = null; createdPoint.WebId = null; //Update PI Point ApiResponse <Object> response = client.Point.UpdateWithHttpInfo(webId, createdPoint); //Check if the request was successful Console.WriteLine(response.StatusCode); //Get PI Points WebIds PIPoint point1 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoid"); PIPoint point2 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoidu", selectedFields: "webId;name"); PIPoint point3 = client.Point.GetByPath("\\\\marc-pi2016\\cdt158"); List <string> webIds = new List <string>() { point1.WebId, point2.WebId, point3.WebId }; //Get recorded values in bulk PIItemsStreamValues piItemsStreamValues = client.StreamSet.GetRecordedAdHoc(webId: webIds, startTime: "*-3d", endTime: "*"); //Send values in bulk var streamValuesItems = new PIItemsStreamValues(); var streamValue1 = new PIStreamValues(); var streamValue2 = new PIStreamValues(); var streamValue3 = new PIStreamValues(); var value1 = new PITimedValue(); var value2 = new PITimedValue(); var value3 = new PITimedValue(); var value4 = new PITimedValue(); var value5 = new PITimedValue(); var value6 = new PITimedValue(); value1.Value = 2; value1.Timestamp = "*-1d"; value2.Value = 3; value2.Timestamp = "*-2d"; value3.Value = 4; value3.Timestamp = "*-1d"; value4.Value = 5; value4.Timestamp = "*-2d"; value5.Value = 6; value5.Timestamp = "*-1d"; value6.Value = 7; value6.Timestamp = "*-2d"; streamValue1.WebId = point1.WebId; streamValue1.Items = new List <PITimedValue>(); streamValue1.Items.Add(value1); streamValue1.Items.Add(value2); streamValue2.WebId = point2.WebId; streamValue2.Items = new List <PITimedValue>(); streamValue2.Items.Add(value3); streamValue2.Items.Add(value4); streamValue3.WebId = point2.WebId; streamValue3.Items = new List <PITimedValue>(); streamValue3.Items.Add(value5); streamValue3.Items.Add(value6); ApiResponse <PIItemsItemsSubstatus> response2 = client.StreamSet.UpdateValuesAdHocWithHttpInfo(new List <PIStreamValues>() { streamValue1, streamValue2, streamValue3 }); //Get an element given a path PIElement myElement = client.Element.GetByPath("\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm"); //Get element's attributes PIItemsAttribute attributes = client.Element.GetAttributes(myElement.WebId, null, 1000, null, false); //Get an attribute given a path PIAttribute attribute = client.Attribute.GetByPath(string.Format("{0}|{1}", "\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm", attributes.Items[0].Name)); WebIdInfo webIdInfo = client.WebIdHelper.GetWebIdInfo(myElement.WebId); WebIdInfo webIdInfo2 = client.WebIdHelper.GetWebIdInfo(attribute.WebId); WebIdInfo webIdInfo4 = client.WebIdHelper.GetWebIdInfo(point1.WebId); WebIdInfo webIdInfo3 = client.WebIdHelper.GetWebIdInfo(dataServer.WebId); //Get the attribute's end of the stream value PITimedValue value = client.Stream.GetEnd(attribute.WebId); //Cancelling the HTTP request with the CancellationToken Stopwatch watch = Stopwatch.StartNew(); CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); PIItemsStreamValues bulkValues = null; try { Task t = Task.Run(async() => { bulkValues = await client.StreamSet.GetRecordedAdHocAsync(webId: webIds, startTime: "*-1800d", endTime: "*", maxCount: 50000, cancellationToken: cancellationTokenSource.Token); }); //Cancel the request after 4s System.Threading.Thread.Sleep(4000); cancellationTokenSource.Cancel(); t.Wait(); Console.WriteLine("Completed task: Time elapsed: {0}s", 0.001 * watch.ElapsedMilliseconds); } catch (Exception) { Console.WriteLine("Cancelled task: Time elapsed: {0}s", 0.001 * watch.ElapsedMilliseconds); }; }
public RelatedElementDetailViewModel(PIWebApiClient client) { _client = client; }
public void CommonInit() { client = PIWebApiClientGenerator.GenerateInstance(); }
static void Main(string[] args) { //Create an instance of the PI Web API top level object. string username = Environment.GetEnvironmentVariable("pi_u"); string password = Environment.GetEnvironmentVariable("pi_p"); string piWebApiUrl = args[0]; string piServerName = args[1]; string tagName = args[2]; //Do not verify Ssl certificate ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; PIWebApiClient client = new PIWebApiClient(piWebApiUrl, useKerberos: true, username, password); string pointPath = $@"{piServerName}\{tagName}"; PIPoint point1a = client.Point.GetByPath(pointPath); PITimedValue value = client.Stream.GetEnd(point1a.WebId); Console.WriteLine($"{tagName}: {value.Value}"); string startTime = "8-Jan-2020"; string endTime = "10-Jan-2020"; PITimedValues values = client.Stream.GetInterpolated(point1a.WebId, startTime: startTime, endTime: endTime); foreach (PITimedValue item in values.Items) { Console.WriteLine($@"{item.Timestamp} {item.Value}"); } //PIDataServer dataServer = client.DataServer.GetByPath("\\\\PIPreProd"); //string expression = "'sinusoid'*2 + 'cdt158'"; //PITimedValues values = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression, time: new List<string>() { "*-1d" }); //string expression2 = "'cdt158'+tagval('sinusoid','*-1d')"; //PITimedValues values2 = client.Calculation.GetAtTimes(webId: dataServer.WebId, expression: expression2, time: new List<string>() { "*-1d" }); //PIItemsSummaryValue itemsSummaryValue = client.Calculation.GetSummary(expression: expression2, startTime: "*-1d", endTime: "*", webId: dataServer.WebId, // summaryType: new List<string>() { "Average", "Maximum" }); ////Get PI Point //PIPoint createdPoint = client.Point.GetByPath("\\\\MARC-PI2016\\SINUSOIDR1259", null); ////Change the description of the PI Point //string webId = createdPoint.WebId; //createdPoint.DigitalSetName = null; //createdPoint.EngineeringUnits = null; //createdPoint.Descriptor = "New description"; //createdPoint.Future = null; //createdPoint.Id = null; //createdPoint.Links = null; //createdPoint.Name = null; //createdPoint.Path = null; //createdPoint.PointClass = null; //createdPoint.PointType = null; //createdPoint.WebId = null; ////Update PI Point //ApiResponse<Object> response = client.Point.UpdateWithHttpInfo(webId, createdPoint); ////Check if the request was successful //Console.WriteLine(response.StatusCode); ////Get PI Points WebIds //PIPoint point1 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoid"); //PIPoint point2 = client.Point.GetByPath("\\\\marc-pi2016\\sinusoidu", selectedFields: "webId;name"); //PIPoint point3 = client.Point.GetByPath("\\\\marc-pi2016\\cdt158"); //List<string> webIds = new List<string>() { point1.WebId, point2.WebId, point3.WebId }; ////Get recorded values in bulk //PIItemsStreamValues piItemsStreamValues = client.StreamSet.GetRecordedAdHoc(webId: webIds, startTime: "*-3d", endTime: "*"); ////Send values in bulk //var streamValuesItems = new PIItemsStreamValues(); //var streamValue1 = new PIStreamValues(); //var streamValue2 = new PIStreamValues(); //var streamValue3 = new PIStreamValues(); //var value1 = new PITimedValue(); //var value2 = new PITimedValue(); //var value3 = new PITimedValue(); //var value4 = new PITimedValue(); //var value5 = new PITimedValue(); //var value6 = new PITimedValue(); //value1.Value = 2; //value1.Timestamp = "*-1d"; //value2.Value = 3; //value2.Timestamp = "*-2d"; //value3.Value = 4; //value3.Timestamp = "*-1d"; //value4.Value = 5; //value4.Timestamp = "*-2d"; //value5.Value = 6; //value5.Timestamp = "*-1d"; //value6.Value = 7; //value6.Timestamp = "*-2d"; //streamValue1.WebId = point1.WebId; //streamValue1.Items = new List<PITimedValue>(); //streamValue1.Items.Add(value1); //streamValue1.Items.Add(value2); //streamValue2.WebId = point2.WebId; //streamValue2.Items = new List<PITimedValue>(); //streamValue2.Items.Add(value3); //streamValue2.Items.Add(value4); //streamValue3.WebId = point2.WebId; //streamValue3.Items = new List<PITimedValue>(); //streamValue3.Items.Add(value5); //streamValue3.Items.Add(value6); //ApiResponse<PIItemsItemsSubstatus> response2 = client.StreamSet.UpdateValuesAdHocWithHttpInfo(new List<PIStreamValues>() { streamValue1, streamValue2, streamValue3 }); ////Get an element given a path //PIElement myElement = client.Element.GetByPath("\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm"); ////Get element's attributes //PIItemsAttribute attributes = client.Element.GetAttributes(myElement.WebId, null, 1000, null, false); ////Get an attribute given a path //PIAttribute attribute = client.Attribute.GetByPath(string.Format("{0}|{1}", "\\\\MARC-PI2016\\CrossPlatformLab\\marc.adm", attributes.Items[0].Name)); //WebIdInfo webIdInfo = client.WebIdHelper.GetWebIdInfo(myElement.WebId); //WebIdInfo webIdInfo2 = client.WebIdHelper.GetWebIdInfo(attribute.WebId); //WebIdInfo webIdInfo4 = client.WebIdHelper.GetWebIdInfo(point1.WebId); //WebIdInfo webIdInfo3 = client.WebIdHelper.GetWebIdInfo(dataServer.WebId); ////Get the attribute's end of the stream value //PITimedValue value = client.Stream.GetEnd(attribute.WebId); ////Cancelling the HTTP request with the CancellationToken //Stopwatch watch = Stopwatch.StartNew(); //CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); //PIItemsStreamValues bulkValues = null; //try //{ // Task t = Task.Run(async () => // { // bulkValues = await client.StreamSet.GetRecordedAdHocAsync(webId: webIds, startTime: "*-1800d", endTime: "*", maxCount: 50000, cancellationToken: cancellationTokenSource.Token); // }); // //Cancel the request after 4s // System.Threading.Thread.Sleep(4000); // cancellationTokenSource.Cancel(); // t.Wait(); // Console.WriteLine("Completed task: Time elapsed: {0}s", 0.001 * watch.ElapsedMilliseconds); //} //catch (Exception) //{ // Console.WriteLine("Cancelled task: Time elapsed: {0}s", 0.001 * watch.ElapsedMilliseconds); //}; }