public async Task <ActionResult <SensorDetailsApiModel> > Create([BindRequired] SensorLocatorBindingModel view) { var device = await _service.GetDeviceByNameAsync(view.DeviceName); await _service.CreateSensorByDeviceAndNameAsync(device, view.Name); var sensor = await _service.GetSensorByDeviceAndNameAsync(device, view.Name); var res = new SensorDetailsApiModel(sensor); return(CreatedAtAction(nameof(Create), res)); }
public async Task <ActionResult <SensorDetailsApiModel> > Show(string deviceName, string sensorName, [FromQuery(Name = "started_at")] string?startedAtQuery = null, [FromQuery(Name = "duration")] string?durationQuery = null) { var device = await _service.GetDeviceByNameAsync(deviceName); var sensor = await _service.GetSensorByDeviceAndNameAsync(device, sensorName); var values = new List <(double, Instant)>(); _logger.LogTrace($"Getting query {startedAtQuery} and {durationQuery}"); var duration = Duration.FromSeconds(3600); if (durationQuery != null) { try { var converted = TypeDescriptor.GetConverter(typeof(Duration)).ConvertFromString(durationQuery); if (converted != null) { duration = (Duration)converted; } } catch (NotSupportedException) { // do nothing } catch (UnparsableValueException exception) { throw new InvalidArgumentException(exception.Message, "duration"); } } var startedAt = _clock.GetCurrentInstant() - duration; if (startedAtQuery != null) { try { var converted = TypeDescriptor.GetConverter(typeof(Instant)).ConvertFromString(startedAtQuery); if (converted != null) { startedAt = (Instant)converted; } } catch (NotSupportedException) { // do nothing } catch (UnparsableValueException exception) { throw new InvalidArgumentException(exception.Message, "started_at"); } } _logger.LogTrace($"Querying from {startedAt} with {duration}"); await foreach (var val in _valueService.GetNumberTimeSeriesBySensorAsync(sensor, startedAt, duration)) { values.Add(val); } var res = new SensorDetailsApiModel(sensor, values); return(Ok(res)); }
public async Task <ActionResult <SensorDetailsApiModel> > ShowLast(string deviceName, string sensorName, [FromQuery] int seconds = 120) { var device = await _service.GetDeviceByNameAsync(deviceName); var sensor = await _service.GetSensorByDeviceAndNameAsync(device, sensorName); var values = new List <(double, Instant)>(); await foreach (var val in _valueService.GetLastSecondsOfValuesBySensorAsync(sensor, seconds)) { values.Add(val); } var res = new SensorDetailsApiModel(sensor, values); return(Ok(res)); }