public async Task <IActionResult> RegisterDevices(RegisterDeviceDto[] deviceDtos) { List <Device> devices = deviceDtos.Select(dto => new Device { DeviceEui = dto.DeviceEui, Address = dto.Address, Status = new DeviceStatus { DeviceWorking = true, SentToKommune = true }, Configuration = new DeviceConfiguration { HeartbeatPeriodDays = dto.Configuration.HeartbeatPeriodDays, ScanMinuteOfTheDay = dto.Configuration.ScanMinuteOfTheDay, Status = ConfigurationStatus.NotSent } }).ToList(); await _detectionSystemService.RegisterDevices(devices); foreach (Device device in devices) { _endNodeCommunicator.SendMessage(new DownlinkDataMessage { Confirmed = true, DeviceEui = device.DeviceEui, Data = DetectionSystemServiceUtil.ConfigurationToDataString(device.Configuration.ScanMinuteOfTheDay, device.Configuration.HeartbeatPeriodDays) }); await _detectionSystemService.SetDeviceConfigurationStatus(device.DeviceEui, ConfigurationStatus.SentToNetwork); } return(Ok()); }
public void ConfigurationToDataStringTest() { Assert.Equal("04C105", DetectionSystemServiceUtil.ConfigurationToDataString(1217, 5)); Assert.Equal("001F05", DetectionSystemServiceUtil.ConfigurationToDataString(31, 5)); Assert.Equal("000305", DetectionSystemServiceUtil.ConfigurationToDataString(3, 5)); Assert.Equal("00001C", DetectionSystemServiceUtil.ConfigurationToDataString(0, 28)); }
public async Task <IActionResult> ConfigureDevices(ConfigurationDto[] configurations) { List <ConfigureDevice> configureDevices = new List <ConfigureDevice>(); foreach (ConfigurationDto configurationDto in configurations) { foreach (string deviceEui in configurationDto.DeviceEuis) { configureDevices.Add(new ConfigureDevice { DeviceEui = deviceEui, Configuration = new DeviceConfiguration { HeartbeatPeriodDays = configurationDto.Configuration.HeartbeatPeriodDays, ScanMinuteOfTheDay = configurationDto.Configuration.ScanMinuteOfTheDay, Status = ConfigurationStatus.NotSent } }); } } await _detectionSystemService.ConfigureDevices(configureDevices); foreach (ConfigureDevice configureDevice in configureDevices) { _endNodeCommunicator.SendMessage(new DownlinkDataMessage { Confirmed = true, DeviceEui = configureDevice.DeviceEui, Data = DetectionSystemServiceUtil.ConfigurationToDataString(configureDevice.Configuration.ScanMinuteOfTheDay, configureDevice.Configuration.HeartbeatPeriodDays) }); await _detectionSystemService.SetDeviceConfigurationStatus(configureDevice.DeviceEui, ConfigurationStatus.SentToNetwork); } return(Ok()); }