public IActionResult CreateSensorData([FromBody] TheThingsNetworkUplinkBodyDto ttnBody) { Sensor sensor = _sensorInfoRepository.GetSensor(ttnBody.dev_id, false); if (sensor == null) { sensor = new Sensor { Description = ttnBody.dev_id }; _sensorInfoRepository.AddSensor(sensor); if (!_sensorInfoRepository.Save()) { return(StatusCode(500, "our server did an oopsie")); } } dynamic payload_fields = JsonConvert.DeserializeObject(ttnBody.payload_fields.ToString()); var lightValue = payload_fields.light; if (lightValue != null) { LightForCreationDto lightFromTtn = new LightForCreationDto() { Value = lightValue }; var finalLight = Mapper.Map <Entities.Light>(lightFromTtn); finalLight = _sensorActionDetermination.AutofillLight(finalLight); sensor = _sensorInfoRepository.GetSensor(ttnBody.dev_id, false); _sensorInfoRepository.AddLightForSensor(sensor.Id, finalLight); if (!_sensorInfoRepository.Save()) { return(StatusCode(500, "our server did an oopsie")); } } TheThingsNetworkDownlinkBodyDto downlinkBody = new TheThingsNetworkDownlinkBodyDto() { dev_id = ttnBody.dev_id, confirmed = false, payload_raw = "01", port = 1 }; _uplinkService.QueueDownlink(ttnBody.downlink_url, downlinkBody); return(Ok()); }
public void QueueDownlink(string downlinkUri, TheThingsNetworkDownlinkBodyDto downlinkBody) { Debug.WriteLine($"Sending to URI {downlinkUri}"); var client = new RestClient(downlinkUri); var request = new RestRequest(); request.AddJsonBody(downlinkBody); var response = client.Post(request); }