async void SendTruckTelemetryAsync(Random rand, CancellationToken token) { while (true) { billingloginS = _BillingData.GetSubscriber_IDlogin(User.Identity.Name); //if (billingloginS == null) //{ // return null; //} int Subscriber_ID = 0; Subscriber_ID = billingloginS.Subscriber_ID; if (Subscriber_ID > 0) { IOTDEviceDetail = _DeviceData.GetIOTDEviceDetailsBySubscriberId(Subscriber_ID); } //if (IOTDEviceDetail == null) //{ // return null; //} UpdateTruck(); // Create the telemetry JSON message. var telemetryDataPoint = new { EnergyAmountkWh = Math.Round(tempContents, 2), VoltageReading = Math.Round(tempContents, 4), PowerReading = Math.Round(tempContents, 6), ConnectionStatus = 1, deviceId = IOTDEviceDetail.IOTDEviceId //PowerReading = Math.Round(tempContents, 5), //TruckState = state.ToString(), //CoolingSystemState = fan.ToString(), //ContentsState = contents.ToString(), //Location = new { lon = currentLon, lat = currentLat }, //Event = eventText, }; var telemetryMessageString = JsonSerializer.Serialize(telemetryDataPoint); var telemetryMessage = new Message(Encoding.ASCII.GetBytes(telemetryMessageString)); // Clear the events, as the message has been sent. eventText = noEvent; //Console.WriteLine($"\nTelemetry data: {telemetryMessageString}"); // Bail if requested. token.ThrowIfCancellationRequested(); // Send the telemetry message. await s_deviceClient.SendEventAsync(telemetryMessage); greenMessage($"Telemetry sent {DateTime.Now.ToShortTimeString()}"); await Task.Delay(intervalInMilliseconds); } }
public IOTDEviceDetailModel AddIOTDEviceDetails(IOTDEviceDetailModel newIOTDEvice) { SqlParameter Subscriber_ID = new SqlParameter("@Subscriber_ID", newIOTDEvice.Subscriber_ID); SqlParameter STAKEHOLDER_ID = new SqlParameter("@STAKEHOLDER_ID", newIOTDEvice.STAKEHOLDER_ID); SqlParameter ScopeID = new SqlParameter("@ScopeID", newIOTDEvice.ScopeID); SqlParameter PrimaryKey = new SqlParameter("@PrimaryKey", newIOTDEvice.PrimaryKey); SqlParameter IOTDEviceId = new SqlParameter("@IOTDEviceId", newIOTDEvice.IOTDEviceId); _context.Database.ExecuteSqlRaw("dbo.Insert_Select_AllIOTDEviceDetails @Subscriber_ID,@STAKEHOLDER_ID, @ScopeID,@PrimaryKey,@IOTDEviceId", Subscriber_ID, STAKEHOLDER_ID, ScopeID, PrimaryKey, IOTDEviceId); return(newIOTDEvice); }
public IOTDEviceDetailModel UpdateIOTDEviceDetails(IOTDEviceDetailModel UpdateDevice) { SqlParameter Device_ID = new SqlParameter("@IOTDEviceDetail_Id", UpdateDevice.IOTDEviceDetail_Id); SqlParameter Subscriber_ID = new SqlParameter("@Subscriber_ID", UpdateDevice.Subscriber_ID); SqlParameter STAKEHOLDER_ID = new SqlParameter("@STAKEHOLDER_ID", UpdateDevice.STAKEHOLDER_ID); SqlParameter ScopeID = new SqlParameter("@ScopeID", UpdateDevice.ScopeID); SqlParameter PrimaryKey = new SqlParameter("@PrimaryKey", UpdateDevice.PrimaryKey); SqlParameter IOTDEviceId = new SqlParameter("@IOTDEviceId", UpdateDevice.IOTDEviceId); _context.Database.ExecuteSqlRaw("dbo.Update_IOTDevicesDetails @IOTDEviceDetail_Id,@Subscriber_ID,@STAKEHOLDER_ID, @ScopeID,@PrimaryKey,@IOTDEviceId", Device_ID, Subscriber_ID, STAKEHOLDER_ID, ScopeID, PrimaryKey, IOTDEviceId); return(UpdateDevice); }
public IActionResult OnPost() { if (ModelState.IsValid == true) { if (IOTDEviceDetail.IOTDEviceDetail_Id > 0) { IOTDEviceDetail = _DeviceData.UpdateIOTDEviceDetails(IOTDEviceDetail); } else { IOTDEviceDetail = _DeviceData.AddIOTDEviceDetails(IOTDEviceDetail); } return(RedirectToPage("/Stackholders/ViewIOTDEviceDetails", new { IOTDEviceDetail.IOTDEviceDetail_Id })); } return(Page()); }
public IActionResult OnGet(int?IOTDEviceDetail_Id) { if (IOTDEviceDetail_Id.HasValue) { IOTDEviceDetail = _DeviceData.GetIOTDEviceDetailsById(IOTDEviceDetail_Id.Value); } else { IOTDEviceDetail = new IOTDEviceDetailModel(); } if (IOTDEviceDetail == null) { return(RedirectToPage("/Error")); } return(Page()); }
public IActionResult OnGet(int Subscriber_ID) { billingloginS = _BillingData.GetSubscriber_IDlogin(User.Identity.Name); if (billingloginS == null) { return(RedirectToPage("/identity/account/login")); } Subscriber_ID = billingloginS.Subscriber_ID; if (Subscriber_ID > 0) { IOTDEviceDetail = _DeviceData.GetIOTDEviceDetailsBySubscriberId(Subscriber_ID); } if (IOTDEviceDetail == null) { return(RedirectToPage("/Error")); } return(Page()); }
public async Task <DeviceRegistrationResult> RegisterDeviceAsync(SecurityProviderSymmetricKey security) { Console.WriteLine("Register device..."); billingloginS = _BillingData.GetSubscriber_IDlogin(User.Identity.Name); if (billingloginS == null) { return(null); } int Subscriber_ID = 0; Subscriber_ID = billingloginS.Subscriber_ID; if (Subscriber_ID > 0) { IOTDEviceDetail = _DeviceData.GetIOTDEviceDetailsBySubscriberId(Subscriber_ID); } if (IOTDEviceDetail == null) { return(null); } using (var transport = new ProvisioningTransportHandlerMqtt(TransportFallbackType.WebSocketOnly)) { ProvisioningDeviceClient provClient = ProvisioningDeviceClient.Create(GlobalDeviceEndpoint, IOTDEviceDetail.ScopeID, security, transport); Console.WriteLine($"RegistrationID = {security.GetRegistrationID()}"); Console.Write("ProvisioningClient RegisterAsync..."); DeviceRegistrationResult result = await provClient.RegisterAsync(); Console.WriteLine($"{result.Status}"); return(result); } }
//public async Task<IActionResult> OnPostAsyncOFF() //{ // return Page(); //} public async Task <IActionResult> OnPostAsync() { billingloginS = _BillingData.GetSubscriber_IDlogin(User.Identity.Name); if (billingloginS == null) { return(RedirectToPage("/identity/account/login")); } int Subscriber_ID = 0; Subscriber_ID = billingloginS.Subscriber_ID; if (Subscriber_ID > 0) { IOTDEviceDetail = _DeviceData.GetIOTDEviceDetailsBySubscriberId(Subscriber_ID); } if (IOTDEviceDetail == null) { return(RedirectToPage("/Error")); } rand = new Random(); colorMessage($"Starting {truckIdentification}", ConsoleColor.Yellow); currentLat = baseLat; currentLon = baseLon; // Connect to Azure Maps. azureMapsServices = new AzureMapsServices(AzureMapsKey); try { //using (var security = new SecurityProviderSymmetricKey(DeviceID, PrimaryKey, null)) using (var security = new SecurityProviderSymmetricKey(IOTDEviceDetail.IOTDEviceId, IOTDEviceDetail.PrimaryKey, null)) { DeviceRegistrationResult result = RegisterDeviceAsync(security).GetAwaiter().GetResult(); if (result.Status != ProvisioningRegistrationStatusType.Assigned) { //Console.WriteLine("Failed to register device"); Message = "Failed to register device"; return(Page()); } IAuthenticationMethod auth = new DeviceAuthenticationWithRegistrySymmetricKey(result.DeviceId, (security as SecurityProviderSymmetricKey).GetPrimaryKey()); s_deviceClient = DeviceClient.Create(result.AssignedHub, auth, TransportType.Mqtt_WebSocket_Only); } Message = "Failed to register device"; greenMessage("Device connected successfully"); SendDevicePropertiesAsync().GetAwaiter().GetResult(); //Console.Write("Register settings changed handler..."); Message = "Register settings changed handler..."; s_deviceClient.SetDesiredPropertyUpdateCallbackAsync(HandleSettingChanged, null).GetAwaiter().GetResult(); //Console.WriteLine("Done"); Message = "Done Successful"; cts = new CancellationTokenSource(); // Create a handler for the direct method calls. s_deviceClient.SetMethodHandlerAsync("GoToCustomer", CmdGoToCustomer, null).Wait(); s_deviceClient.SetMethodHandlerAsync("Recall", CmdRecall, null).Wait(); SendTruckTelemetryAsync(rand, cts.Token); //Console.WriteLine("Press any key to exit..."); Console.ReadKey(); cts.Cancel(); } catch (Exception ex) { Console.WriteLine(); Console.WriteLine(ex.Message); } TempData["msg"] = Message; return(Page()); }