output-service-tsdb/InfluxDB/InfluxReader.cs

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 };
}
}
}