protected void SendOutput(double value)
        {
            var totalWatch = System.Diagnostics.Stopwatch.StartNew();

            var watches = new System.Diagnostics.Stopwatch[this.devices.Count];

            for (int i = 0; i < this.devices.Count; i++)
            {
                watches[i] = System.Diagnostics.Stopwatch.StartNew();

                var deviceOwner = this.devices[i].Observer;
                if (deviceOwner == null)
                {
                    continue;
                }

                deviceOwner.Data[DataElements.Brightness] = value;
                deviceOwner.PushData();

                watches[i].Stop();
            }
            totalWatch.Stop();

            if (watches.Any())
            {
                double max = watches.Select(x => x.ElapsedMilliseconds).Max();
                double avg = watches.Select(x => x.ElapsedMilliseconds).Average();

                if (totalWatch.ElapsedMilliseconds > 25)
                {
                    this.log.Information(string.Format("Devices {0}   Max: {1:N1}   Avg: {2:N1}   Total: {3:N1}",
                                                       this.devices.Count, max, avg, totalWatch.ElapsedMilliseconds));
                }
            }
        }