====SampleStream Example====
In this case, we're going to perform a search for the last time Turbine #1 from the Optrix **Wind Farm Demo** was offline for more than a second.
First, we import the libraries we need...
import ardiapi
import samplestream
Then we connect to our ARDI server...
srv = ardiapi.Server("demo.optrix.com.au/s/ex")
Now we create an AQL query to get our data.
query = "'Wind Turbine #1' ASSET 'Power' PROPERTY VALUES"
Next, set up our [[class_samplestream|SampleStream]]. In this case we're going to look at our data one minute at-a-time, with one-second resolution.
sstream = samplestream.samplestream(srv,query,60,60,-60)
Next, set up the //span// of our search. We're going to want to look back up to four days.
sstream.Span(datetime.datetime.now() - datetime.timedelta(days=4),datetime.datetime.now())
And finally, we need to kick it all off!
stoptime = None
#Loop until we find an outage or hit the end of the span
while True:
#Get the next sample
sample = sstream.NextSample()
if sample is None:
#We reached the end of the span
break
#If power dropped near-zero over this 30 seconds, we've found our target
if sample.data['Wind Turbine #1 Power'].min() < 0.1:
stoptime = sample.time
break
if stoptime == False:
print("No Stoppage Found")
else:
print("Stopped At " + str(stoptime))
This code walks through the samples until it finds one with a minimum value of 0.1. The power dropping to zero tells us the turbine was offline.
===Other Examples===
This is an example of a problem with //unbounded timeframes// - where we wanted to find something without having a good idea of when it happened. Because SampleStream queries the range piece-by-piece and only if needed, you can scan large time-ranges for events.
Another key application is with //very fine time resolution//, where you want to scan a particular period of time for events that are measured in milliseconds. Even though you'll usually be working with fixed periods of time, the volume of data is still very large - SampleStream allows you to be efficient with memory and server resources, and drop-out early if you've found what you're interested in.
And the final application is in AI - if you want to predict, model or classify something using a Machine Learning model that uses data over time, SampleStream makes it quite easy to extract the data to train and test your model.
See the [[samplestream:view_the_documentation|SampleStream Class Reference]].