public override void Update() { SensorValueProvider.Update(); var newValue = SensorValueProvider.ValueOrDefault(float.NaN); if (float.IsNaN(newValue)) { return; } CurrentValue = newValue + _offset; }
public ISensorValueProvider CreateProvider(ISensor sensor) { ISensorValueProvider sensorValueProvider = new SensorValueProvider(sensor); var alpha = Math.Exp(-_config.SensorTimerInterval / (double)_config.DeviceSpeedTimerInterval); sensorValueProvider = new MovingAverageSensorValueDecorator(sensorValueProvider, alpha); if (_sensorConfigs.TryGetValue(sensor.Identifier, out var config) && config.Offset.HasValue) { sensorValueProvider = new OffsetSensorValueDecorator(sensorValueProvider, config.Offset.Value); } return(sensorValueProvider); }
public override void Update() { SensorValueProvider.Update(); var newValue = SensorValueProvider.ValueOrDefault(float.NaN); if (float.IsNaN(newValue)) { return; } if (CurrentValue == null) { CurrentValue = newValue; return; } CurrentValue = (float)((1 - _alpha) * newValue + _alpha * CurrentValue); }