Пример #1
0
 public static TemperatureHumidityApiModel ToApiModel(this TemperatureHumidityReading businessModel)
 {
     return(new TemperatureHumidityApiModel
     {
         SensorId = businessModel.SensorId,
         TimestampWest = DateTimeOffsetHelper.ConvertToWest(businessModel.TimestampUtc),
         Temperature = businessModel.Temperature,
         Humidity = businessModel.Humidity
     });
 }
Пример #2
0
 public void AddReading(TemperatureHumidityReading reading)
 {
     Count++;
     TotalTemperature += reading.Temperature;
     TotalHumidity    += reading.Humidity;
 }
Пример #3
0
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
            [Table("TemperatureHumidity")] out TemperatureHumidityReading output,
            [SignalR(HubName = "climate")] IAsyncCollector <SignalRMessage> signalRMessages,
            ILogger log)
        {
            req.FixCorsHeaders();

            output = null;

            string requestBody;

            try
            {
                requestBody = new StreamReader(req.Body).ReadToEnd();
            }
            catch (Exception e)
            {
                log.LogWarning(e, "Could not read the body of the request");
                return(new BadRequestObjectResult("Could not read the body of the request"));
            }

            TemperatureHumidityInput input;

            try
            {
                input = JsonConvert.DeserializeObject <TemperatureHumidityInput>(requestBody);
            }
            catch (Exception e)
            {
                log.LogWarning(e, "The received json data ({Json}) could not be parsed", requestBody);
                return(new BadRequestObjectResult("The received json data could not be parsed"));
            }

            if (string.IsNullOrWhiteSpace(input.SensorId))
            {
                log.LogWarning("Sensor id missing");
                return(new BadRequestObjectResult("Sensor id missing"));
            }

            var readAtUtc = DateTimeOffset.UtcNow;

            output = new TemperatureHumidityReading
            {
                PartitionKey = input.SensorId,
                RowKey       = readAtUtc.ToRowKey(),
                ReadAtUtc    = readAtUtc,
                Temperature  = input.Temperature,
                Humidity     = input.Humidity
            };

            signalRMessages.AddAsync(
                new SignalRMessage
            {
                Target    = "notifyTemperatureHumidityUpdated",
                Arguments = new object[] { new
                                           {
                                               sensorId      = input.SensorId,
                                               timestampWest = DateTimeOffsetHelper.ConvertToWest(readAtUtc),
                                               temperature   = input.Temperature,
                                               humidity      = input.Humidity
                                           } }
            }).Wait();

            return(new OkResult());
        }
Пример #4
0
 public IntervalDataGroup(string sensorId, DateTimeOffset from, TimeSpan length, TemperatureHumidityReading reading)
 {
     SensorId         = sensorId;
     From             = from;
     To               = from.Add(length);
     Count            = 1;
     TotalTemperature = reading.Temperature;
     TotalHumidity    = reading.Humidity;
 }