45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
|
using System;
|
|||
|
using InfluxDB.Client.Flux;
|
|||
|
|
|||
|
namespace OutputServiceTSDB.InfluxDB
|
|||
|
{
|
|||
|
public class InfluxReader
|
|||
|
{
|
|||
|
|
|||
|
private readonly char[] Token = "".ToCharArray();
|
|||
|
|
|||
|
public InfluxReader()
|
|||
|
{
|
|||
|
//
|
|||
|
// TODO: Add constructor logic here
|
|||
|
//
|
|||
|
}
|
|||
|
|
|||
|
public MeasurementObject Read()
|
|||
|
{
|
|||
|
var fluxClient = FluxClientFactory.Create("http://localhost:8086/");
|
|||
|
|
|||
|
var fluxQuery = "from(bucket: \"telegraf\")\n"
|
|||
|
+ " |> filter(fn: (r) => (r[\"_measurement\"] == \"cpu\" AND r[\"_field\"] == \"usage_system\"))"
|
|||
|
+ " |> range(start: -1d)"
|
|||
|
+ " |> sample(n: 5, pos: 1)";
|
|||
|
|
|||
|
fluxClient.QueryAsync(fluxQuery, (cancellable, record) =>
|
|||
|
{
|
|||
|
// process the flux query records
|
|||
|
Console.WriteLine(record.GetTime() + ": " + record.GetValue());
|
|||
|
},
|
|||
|
(error) =>
|
|||
|
{
|
|||
|
// error handling while processing result
|
|||
|
Console.WriteLine(error.ToString());
|
|||
|
|
|||
|
}, () =>
|
|||
|
{
|
|||
|
// on complete
|
|||
|
Console.WriteLine("Query completed");
|
|||
|
}).GetAwaiter().GetResult();
|
|||
|
return new MeasurementObject { DeviceID = "south", Probability = 0.5, Time = DateTime.UtcNow };
|
|||
|
}
|
|||
|
}
|
|||
|
}
|