public async Task <IHttpActionResult> PutGroup(int id, Group group) { group.UpdateDate = DateTime.Now; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != group.GroupID) { return(BadRequest()); } db.Entry(group).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!GroupExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public async Task <IHttpActionResult> PutRecord(long id, Record record) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != record.RecordID) { return(BadRequest()); } db.Entry(record).State = EntityState.Modified; try { await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RecordExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
private async void CheckAlarm(Record record) { using (var context = new EnergyMonitoringContext()) { DateTime dt = DateTime.Now; if ((int)dt.DayOfWeek == Config.AuditDayOfWeek) { if (dt.TimeOfDay >= Config.AuditTimeStart && dt.TimeOfDay <= Config.AuditTimeEnd) { if (record.Value < record.Sensor.LowerLimit || record.Value > record.Sensor.UpperLimit) { Alarm alarm = new Alarm(); alarm.RecordId = record.RecordId; alarm.CreateDate = DateTime.Now; _logger.LogInformation($"Alarm: {record.Equipment.Name};"); context.Alarm.Add(alarm); await context.SaveChangesAsync(); } } } } }
// POST: api/Sensors public async Task <IHttpActionResult> PostSensor(Sensor sensor) { using (EnergyMonitoringContext db = new EnergyMonitoringContext()) { sensor.CreateDate = DateTime.Now; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.Sensors.Add(sensor); await db.SaveChangesAsync(); } return(CreatedAtRoute("DefaultApi", new { id = sensor.SensorID }, sensor)); }
public async Task <IHttpActionResult> DeleteSensor(int id) { using (EnergyMonitoringContext db = new EnergyMonitoringContext()) { Sensor sensor = await db.Sensors.FindAsync(id); if (sensor == null) { return(NotFound()); } db.Sensors.Remove(sensor); await db.SaveChangesAsync(); return(Ok(sensor)); } }
private async void GetData() { // access database context with EF using (var context = new EnergyMonitoringContext()) { try { var config = context.Config.ToList().FirstOrDefault(); Config = config; _logger.LogInformation($"RecordInterval={config} Minuten;"); // read devices with relation entities from database var devices = context.Device.Include(device => device.Sensor) .ThenInclude(sensor => sensor.Unit) .Include(device => device.Equipment) .Where(x => (bool)x.Active) .ToList(); // iterate over device list foreach (var device in devices) { try { // read json var url = "http://" + device.Ip + "/rest/json"; // ping device Ping ping = new Ping(); PingReply reply = ping.Send(device.Ip, 1500); if (reply.Status == IPStatus.Success) { HttpClient request = new HttpClient(); var json = await request.GetStringAsync(url); WebIO obj = JsonConvert.DeserializeObject <WebIO>(json); _logger.LogInformation(device.Name); // iterate over sensor list foreach (var sensor in device.Sensor) { // iterate over inputs foreach (var item in obj.iostate.input) { if (sensor.Unit.Name.ToLower().Equals(item.name.ToLower())) { StringBuilder sb = new StringBuilder(); sb.Append(Environment.NewLine); sb.Append($"Equipment: number={device.Equipment.Number}; name={device.Equipment.Name}; "); sb.Append(Environment.NewLine); sb.Append($"Device: ip={device.Ip}; name={device.Name}; "); sb.Append(Environment.NewLine); sb.Append($"Sensor: id={sensor.SensorId}; "); sb.Append(Environment.NewLine); sb.Append($"Unit: name={sensor.Unit.Name}; sign={sensor.Unit.Sign}; "); sb.Append($"Input: {item.value}; "); sb.Append(Environment.NewLine); _logger.LogInformation(sb.ToString()); Record record = new Record(); record.Equipment = device.Equipment; record.Sensor = sensor; record.Value = (decimal)Math.Round(item.value, 1); record.CreateDate = DateTime.Now; context.Record.Add(record); await context.SaveChangesAsync(); if (device.Equipment.Active == true) { CheckAlarm(record); } } } } } else { _logger.LogError($"Fehler Verbindung: Status={device.Ip}; {reply.Status} DeviceName={device.Name};"); } } catch (JsonSerializationException ex) { _logger.LogError(ex.StackTrace); } catch (HttpRequestException ex) { _logger.LogError(ex.StackTrace); } catch (Exception ex) { _logger.LogError(ex.StackTrace); } } } catch (Microsoft.Data.SqlClient.SqlException e) { _logger.LogInformation(e.StackTrace); } } }