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", "http://db.unipi.technology/dbaccess")) { // 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 = "Level1", Value = "Floor 1"}, new KeyValuePair { IsKey = true, Key = "Level2", Value = "Room 7"}, new KeyValuePair { IsKey = true, Key = "Level3", 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(); } } }