using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MervisDb_SaveData_Example.MervisDbService;
namespace MervisDb_SaveData_Example
{
class Program
{
static void Main(string[] args)
{
//
// Demo of asynchronous methods.
//
var task = Task.Run(async () =>
{
//
// Create access to the real server.
// Without SSL connections, you have to remove binding parameters "" in the App.config.
// The client is automatically generated from the WSDL file available here: https://kb.mervis.info/doku.php/en:mervis-db:10-api
//
using (HistoryDbAccessClient client = new HistoryDbAccessClient("HistoryAccess", "https://localhost:9876/RcWareDbAccess"))
{
// Authentication credetials in the database.
Credentials credentials = new Credentials { Name = "XXXX", Password = "YYYY" };
// Adding records...
List records = new List();
DateTime utcTimeStamp = new DateTime(2018, 1, 1, 12, 0, 0, DateTimeKind.Utc);
// Each value is stored in a ValueRecord structure
ValueRecord rec = new ValueRecord();
rec.UtcTimeStamp = utcTimeStamp; // time stamp of the value, UTC date time must be used
rec.HistoryValueType = HistoryValueType.Double; // type of the value
rec.DoubleValue = 23.4; // value itself
rec.Interval = 60.0; // sampling period in seconds. When the difference of timestamps of subsequent values if greater than 1.1 multiple of the interval, the data should be considered incomplete.
rec.Keys = new KeyValuePair[] // identification of the variable. At least one key-value pair must be "IsKey" to identify a variable.
{
new KeyValuePair { IsKey = true, Key = "Root", Value = "Building A"},
new KeyValuePair { IsKey = true, Key = "Guid", Value = "T26549821654"},
new KeyValuePair { IsKey = false, Key = "Level1", Value = "Floor 1"},
new KeyValuePair { IsKey = false, Key = "Level2", Value = "Room 7"},
new KeyValuePair { IsKey = false, Key = "Name", Value = "Temperature"},
new KeyValuePair { IsKey = false, Key = "Description", Value = "Temperature in the room 7"},
new KeyValuePair { IsKey = false, Key = "Unit", Value = "°C"},
};
records.Add(rec);
// Save data method returns the number of stored records
int recordsSaved = await client.SaveDataAsync(credentials, records.ToArray());
Console.WriteLine("Records saved: {0}", recordsSaved);
}
});
Console.WriteLine("DB communication is running in background");
try
{
task.Wait();
}
catch (Exception exc)
{
Console.WriteLine("Exception: {0}", exc.ToString());
}
Console.WriteLine("DB communication finished");
Console.ReadLine();
}
}
}