public SmartTemperatureClient AddOrUpdateSmartTemperatureClient(SmartTemperatureClient client)
        {
            var scope = _serviceProvider.CreateScope();

            using (SmartServerContext db = scope.ServiceProvider.GetService <SmartServerContext>())
            {
                var storedClient = db.SmartTemperatureClients.FirstOrDefault(c => c.ChipId == client.ChipId);
                if (storedClient == null)
                {
                    db.Add(StoredSmartTemperatureClient.FromSmartTemperatureClient(client));
                }
                else
                {
                    storedClient.Temperature    = client.Temperature;
                    storedClient.Humidity       = client.Humidity;
                    storedClient.LastDataUpdate = client.LastDataUpdate;
                }

                if (db.SaveChanges() <= 0)
                {
                    return(null);
                }
                _logger.LogDebug("Updated/Added SmartTemperatureClient {0} with tmp: {1} hum:{2}", client.ChipId, client.Temperature, client.Humidity);
                return(db.SmartTemperatureClients.FirstOrDefault(c => c.ChipId == client.ChipId).ConvertToSmartClient());
            }
        }
Example #2
0
        public void HandleIncomingTemperatureMessage(string topic, string message)
        {
            string chipId = topic.Split('/').Last();

            if (chipId == null)
            {
                return;
            }
            string[] msgParts = message.Split(';');
            double   newTemperature, newHumidity;

            if (!Double.TryParse(msgParts.First(), NumberStyles.Any, CultureInfo.InvariantCulture, out newTemperature) || !Double.TryParse(msgParts.Last(), NumberStyles.Any, CultureInfo.InvariantCulture, out newHumidity))
            {
                return;
            }

            if (double.IsNaN(newHumidity) || double.IsNaN(newTemperature))
            {
                _logger.LogWarning("Temperature/Humidity Chip {0} is pushing NaN values.", chipId);
                return;
            }
            SmartTemperatureClient client = _temperatureDataSource.GetSmartTemperatureClientByChipId(chipId);

            if (client == null)
            {
                client = new SmartTemperatureClient {
                    ChipId = chipId
                };
            }
            client.Temperature    = newTemperature;
            client.Humidity       = newHumidity;
            client.LastDataUpdate = DateTime.Now;
            _temperatureDataSource.AddOrUpdateSmartTemperatureClient(client);
        }
Example #3
0
        public IActionResult UpdateSmartTemperatureClient([FromBody] SmartTemperatureClient smartTemperatureClient)
        {
            var res = _temperatureRepository.UpdateSmartTemperatureClient(smartTemperatureClient);

            if (res == null)
            {
                return(NotFound());
            }
            return(Ok(res));
        }
        public static StoredSmartTemperatureClient FromSmartTemperatureClient(SmartTemperatureClient client)
        {
            var storedClient = new StoredSmartTemperatureClient();

            storedClient.ChipId         = client.ChipId;
            storedClient.Humidity       = client.Humidity;
            storedClient.LastDataUpdate = client.LastDataUpdate;
            storedClient.Temperature    = client.Temperature;
            storedClient.Name           = client.Name;
            return(storedClient);
        }
Example #5
0
        public static SmartTemperatureClient ConvertToSmartClient(this StoredSmartTemperatureClient storedSmartTemperatureClient)
        {
            if (storedSmartTemperatureClient == null)
            {
                return(null);
            }
            SmartTemperatureClient smartTemperatureClient = new SmartTemperatureClient {
                ChipId = storedSmartTemperatureClient.ChipId
            };

            smartTemperatureClient.Temperature    = storedSmartTemperatureClient.Temperature;
            smartTemperatureClient.Humidity       = storedSmartTemperatureClient.Humidity;
            smartTemperatureClient.LastDataUpdate = storedSmartTemperatureClient.LastDataUpdate;
            smartTemperatureClient.Name           = storedSmartTemperatureClient.Name;
            return(smartTemperatureClient);
        }
Example #6
0
 public SmartTemperatureClient UpdateSmartTemperatureClient(SmartTemperatureClient smartTemperatureClient)
 {
     return(_temperatureDataSource.UpdateSmartTemperatureClientName(smartTemperatureClient.ChipId,
                                                                    smartTemperatureClient.Name));
 }