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()); } }
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); }
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); }
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); }
public SmartTemperatureClient UpdateSmartTemperatureClient(SmartTemperatureClient smartTemperatureClient) { return(_temperatureDataSource.UpdateSmartTemperatureClientName(smartTemperatureClient.ChipId, smartTemperatureClient.Name)); }