public static GeneratedEventStatusInfo Get(List <GeneratedEvents.GeneratedEvent> gEvents) { var statusInfo = new GeneratedEventStatusInfo(); // Get Device Status var deviceStatusEvents = gEvents.FindAll(o => o.EventName == "device_status" && o.CurrentValue != null); if (deviceStatusEvents.Any()) { var deviceStatusEvent = deviceStatusEvents.OrderBy(o => o.CurrentValue.Timestamp).Last(); if (deviceStatusEvent != null) { statusInfo.DeviceStatus = deviceStatusEvent.CurrentValue.Value; statusInfo.DeviceStatusTimer = (deviceStatusEvent.CurrentValue.Timestamp - deviceStatusEvent.CurrentValue.ChangedTimestamp).TotalSeconds; } } // Get Production Status var productionStatusEvents = gEvents.FindAll(o => o.EventName == "production_status" && o.CurrentValue != null); if (productionStatusEvents.Any()) { var productionStatusEvent = productionStatusEvents.OrderBy(o => o.CurrentValue.Timestamp).Last(); if (productionStatusEvent != null) { statusInfo.ProductionStatus = productionStatusEvent.CurrentValue.Value; statusInfo.ProductionStatusTimer = (productionStatusEvent.CurrentValue.Timestamp - productionStatusEvent.CurrentValue.ChangedTimestamp).TotalSeconds; } } return(statusInfo); }
private void UpdateGeneratedEvents(EventData data) { if (data.Data01 != null && data.Data02 != null) { var gEvents = (List <GeneratedEvents.GeneratedEvent>)data.Data02; // Only update if deviceInfo.Status is not null since this doesn't always include the Connected property which causes // the device to appear to be turning on and off using a client if (deviceInfo.Status != null) { // Update Generated Event Status Info var statusInfo = GeneratedEventStatusInfo.Get(gEvents); deviceInfo.Status.DeviceStatus = statusInfo.DeviceStatus; deviceInfo.Status.ProductionStatus = statusInfo.ProductionStatus; deviceInfo.Status.DeviceStatusTimer = statusInfo.DeviceStatusTimer; deviceInfo.Status.ProductionStatusTimer = statusInfo.ProductionStatusTimer; } // Update Generated Event Times deviceInfo.AddHourInfos(GeneratedEventTime.GetHourInfos(gEvents)); queue.Add(deviceInfo); } }
public static GeneratedEventStatusInfo Get(List<GeneratedEvents.GeneratedEvent> gEvents) { var statusInfo = new GeneratedEventStatusInfo(); // Get Device Status var deviceStatusEvents = gEvents.FindAll(o => o.EventName == "device_status" && o.CurrentValue != null); if (deviceStatusEvents.Any()) { var deviceStatusEvent = deviceStatusEvents.OrderBy(o => o.CurrentValue.Timestamp).Last(); if (deviceStatusEvent != null) { statusInfo.DeviceStatus = deviceStatusEvent.CurrentValue.Value; statusInfo.DeviceStatusTimer = (deviceStatusEvent.CurrentValue.Timestamp - deviceStatusEvent.CurrentValue.ChangedTimestamp).TotalSeconds; } } // Get Production Status var productionStatusEvents = gEvents.FindAll(o => o.EventName == "production_status" && o.CurrentValue != null); if (productionStatusEvents.Any()) { var productionStatusEvent = productionStatusEvents.OrderBy(o => o.CurrentValue.Timestamp).Last(); if (productionStatusEvent != null) { statusInfo.ProductionStatus = productionStatusEvent.CurrentValue.Value; statusInfo.ProductionStatusTimer = (productionStatusEvent.CurrentValue.Timestamp - productionStatusEvent.CurrentValue.ChangedTimestamp).TotalSeconds; } } return statusInfo; }