public async Task <NobreakState> ReadState() { OpenSerialPort(); _serial.Write("Q1\r"); var res = await Task.Run(() => _serial.ReadTo("\r"), new CancellationTokenSource(TimeSpan.FromSeconds(1)).Token); return(NobreakState.FromSerialResponse(res)); }
public async Task SaveState(NobreakState state) { using var scope = _serviceProvider.CreateScope(); using var context = scope.ServiceProvider.GetService <IDbContext>(); var lastState = await context.NobreakStates.OrderBy(s => s.Timestamp).LastOrDefaultAsync(); if (lastState == null || lastState.PowerState != state.PowerState) { context.Add(new NobreakStateChange(state)); } context.Add(state); await context.SaveChangesAsync(); }
public NobreakStateChange(NobreakState nobreakState) { NobreakState = nobreakState; }