private async void OnOffSensor_04_digitalOnOffSensorSend(OnOffDigitalSensorMgr sender, OnOffDigitalSensorMgr.OnOffSensorEventArgs e) { await WriteOnOffEntityToCloud(e); }
async Task WriteOnOffEntityToCloud(OnOffDigitalSensorMgr.OnOffSensorEventArgs e) { //Console.WriteLine("Common-method Thread-Id: " + e.DestinationTable + " "+ Thread.CurrentThread.ManagedThreadId.ToString()); bool validStorageAccount = false; CloudStorageAccount storageAccount = null; Exception CreateStorageAccountException = null; try { storageAccount = Common.CreateStorageAccountFromConnectionString(connectionString); validStorageAccount = true; } catch (Exception ex0) { CreateStorageAccountException = ex0; } if (!validStorageAccount) { MessageBox.Show("Storage Account not valid\r\nEnter valid Storage Account and valid Key", "Alert", MessageBoxButton.OK); return; } CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable cloudTable = tableClient.GetTableReference(e.DestinationTable + DateTime.Today.Year); if (!existingOnOffTables.Contains(cloudTable.Name)) { try { await cloudTable.CreateIfNotExistsAsync(); existingOnOffTables.Add(cloudTable.Name); } catch (Exception exc) { Console.WriteLine("Could not create On/Off Table with name: \r\n" + cloudTable.Name + "\r\nCheck your Internet Connection.\r\nAction aborted."); return; } } // formatting the PartitionKey this way to have the tables sorted with last added row upmost string partitionKey = "Y3_" + DateTime.Today.Year + "-" + (12 - DateTime.Now.Month).ToString("D2"); DateTime actDate = DateTime.Now; // formatting the RowKey this way to have the tables sorted with last added row upmost string rowKey = (10000 - actDate.Year).ToString("D4") + (12 - actDate.Month).ToString("D2") + (31 - actDate.Day).ToString("D2") + (23 - actDate.Hour).ToString("D2") + (59 - actDate.Minute).ToString("D2") + (59 - actDate.Second).ToString("D2"); //string sampleTime = actDate.Month.ToString("D2") + "/" + actDate.Day.ToString("D2") + "/" + actDate.Year + " " + actDate.Hour.ToString("D2") + ":" + actDate.Minute.ToString("D2") + ":" + actDate.Second.ToString("D2"); string sampleTime = actDate.ToString("MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture) + " " + TimeOffsetUTCString; TimeSpan tflSend = e.TimeFromLastSend; string timeFromLastSendAsString = tflSend.Days.ToString("D3") + "-" + tflSend.Hours.ToString("D2") + ":" + tflSend.Minutes.ToString("D2") + ":" + tflSend.Seconds.ToString("D2"); string onTimeDayAsString = e.OnTimeDay.ToString(@"ddd\-hh\:mm\:ss", CultureInfo.InvariantCulture); Dictionary <string, EntityProperty> entityDictionary = new Dictionary <string, EntityProperty>(); entityDictionary.Add("SampleTime", EntityProperty.GeneratePropertyForString(sampleTime)); entityDictionary.Add("ActStatus", EntityProperty.GeneratePropertyForString(e.ActState ? "Off" : "On")); entityDictionary.Add("LastStatus", EntityProperty.GeneratePropertyForString(e.OldState ? "Off" : "On")); entityDictionary.Add("TimeFromLast", EntityProperty.GeneratePropertyForString(timeFromLastSendAsString)); entityDictionary.Add("OnTimeDay", EntityProperty.GeneratePropertyForString(onTimeDayAsString)); DynamicTableEntity dynamicTableEntity = await Common.InsertOrMergeEntityAsync(cloudTable, new DynamicTableEntity(partitionKey, rowKey, null, entityDictionary)); }
private async void OnOffSensor_02_digitalOnOffSensorSend(OnOffDigitalSensorMgr sender, OnOffDigitalSensorMgr.OnOffSensorEventArgs e) { //Console.WriteLine("OnOffSensor_02 Thread-Id: " + e.DestinationTable + " " + Thread.CurrentThread.ManagedThreadId.ToString()); await WriteOnOffEntityToCloud(e); }