public IDevice CreateDevice(ILogger logger, ITransportFactory transportFactory,
     ITelemetryFactory telemetryFactory, IConfigurationProvider configurationProvider, InitialDeviceConfig config)
 {
     var device = new DeviceBase(logger, transportFactory, telemetryFactory, configurationProvider);
     device.Init(config);
     return device;
 }
Example #2
0
        public async Task <List <InitialDeviceConfig> > GetDeviceListAsync()
        {
            return(await Task.Run(() =>
            {
                _logger.LogInfo("********** READING DEVICES FROM APP.CONFIG ********** ");
                if (_devices.Any())
                {
                    return _devices;
                }

                StringCollection deviceList = Settings.Default.DeviceList;

                foreach (string device in deviceList)
                {
                    string[] deviceConfigElements = device.Split(',');
                    var deviceConfig = new InitialDeviceConfig();

                    if (deviceConfigElements.Length > 1)
                    {
                        deviceConfig.DeviceId = deviceConfigElements[0];
                        deviceConfig.HostName = _hostName;
                        deviceConfig.Key = deviceConfigElements[1];

                        _devices.Add(deviceConfig);
                    }
                }

                return _devices;
            }));
        }
        public async Task<List<InitialDeviceConfig>> GetDeviceListAsync()
        {
            return await Task.Run(() =>
            {
                _logger.LogInfo("********** READING DEVICES FROM APP.CONFIG ********** ");
                if (_devices.Any())
                {
                    return _devices;
                }

                StringCollection deviceList = Settings.Default.DeviceList;

                foreach (string device in deviceList)
                {
                    string[] deviceConfigElements = device.Split(',');
                    var deviceConfig = new InitialDeviceConfig();

                    if (deviceConfigElements.Length > 1)
                    {
                        deviceConfig.DeviceId = deviceConfigElements[0];
                        deviceConfig.HostName = _hostName;
                        deviceConfig.Key = deviceConfigElements[1];

                        _devices.Add(deviceConfig);
                    }
                }

                return _devices;
            });
        }
 protected virtual void InitDeviceInfo(InitialDeviceConfig config, dynamic initialDevice)
 {
     // = SampleDeviceFactory.GetSampleSimulatedDevice(config.DeviceId, config.Key);
     DeviceProperties = DeviceSchemaHelper.GetDeviceProperties(initialDevice);
     Commands = CommandSchemaHelper.GetSupportedCommands(initialDevice);
     HostName = config.HostName;
     PrimaryAuthKey = config.Key;
 }
        public void Init(InitialDeviceConfig config, dynamic initialDevice)
        {
            InitDeviceInfo(config, initialDevice);

            Transport = TransportFactory.CreateTransport(this);
            _telemetryController = TelemetryFactory.PopulateDeviceWithTelemetryEvents(this);

            InitCommandProcessors();
        }
        public void Init(InitialDeviceConfig config)
        {
            InitDeviceInfo(config);

            Transport            = TransportFactory.CreateTransport(this);
            _telemetryController = TelemetryFactory.PopulateDeviceWithTelemetryEvents(this);

            InitCommandProcessors();
        }
        protected virtual void InitDeviceInfo(InitialDeviceConfig config)
        {
            dynamic initialDevice = SampleDeviceFactory.GetSampleSimulatedDevice(config.DeviceId, config.Key);

            DeviceProperties = DeviceSchemaHelper.GetDeviceProperties(initialDevice);
            Commands         = CommandSchemaHelper.GetSupportedCommands(initialDevice);
            HostName         = config.HostName;
            PrimaryAuthKey   = config.Key;
        }
Example #8
0
        protected virtual void InitDeviceInfo(InitialDeviceConfig config)
        {
            DeviceModel initialDevice = SampleDeviceFactory.GetSampleSimulatedDevice(config.DeviceId, config.Key);

            DeviceProperties = initialDevice.DeviceProperties;
            Commands         = initialDevice.Commands ?? new List <Command>();
            Telemetry        = initialDevice.Telemetry ?? new List <Common.Models.Telemetry>();
            HostName         = config.HostName;
            PrimaryAuthKey   = config.Key;
        }
 public async Task AddOrUpdateDeviceAsync(InitialDeviceConfig deviceConfig)
 {
     var deviceEnity = new DeviceListEntity()
     {
         DeviceId = deviceConfig.DeviceId,
         HostName = deviceConfig.HostName,
         Key      = deviceConfig.Key
     };
     var operation = TableOperation.InsertOrReplace(deviceEnity);
     await _azureTableStorageClient.ExecuteAsync(operation);
 }
 public async Task AddOrUpdateDeviceAsync(InitialDeviceConfig deviceConfig)
 {
     var devicesTable = await AzureTableStorageHelper.GetTableAsync(_storageConnectionString, _deviceTableName);
     var deviceEnity = new DeviceListEntity
     {
         DeviceId = deviceConfig.DeviceId,
         HostName = deviceConfig.HostName,
         Key = deviceConfig.Key
     };
     var operation = TableOperation.InsertOrReplace(deviceEnity);
     await devicesTable.ExecuteAsync(operation);
 }
        public async Task AddOrUpdateDeviceAsync(InitialDeviceConfig deviceConfig)
        {
            var devicesTable = await AzureTableStorageHelper.GetTableAsync(_storageConnectionString, _deviceTableName);

            var deviceEnity = new DeviceListEntity()
            {
                DeviceId = deviceConfig.DeviceId,
                HostName = deviceConfig.HostName,
                Key      = deviceConfig.Key
            };
            var operation = TableOperation.InsertOrReplace(deviceEnity);
            await devicesTable.ExecuteAsync(operation);
        }
        public void GetDeviceInfoTests()
        {
            var config = new InitialDeviceConfig();

            config.HostName = "HostName";
            config.DeviceId = "test";
            config.Key      = "key";

            deviceBase.Init(config);
            var device = deviceBase.GetDeviceInfo();

            Assert.Equal(device.DeviceProperties.DeviceID, "test");
            Assert.Null(device.SystemProperties);
        }
        public void InitTests()
        {
            var config = new InitialDeviceConfig();

            config.HostName = "HostName";
            config.DeviceId = "test";
            config.Key      = "key";

            deviceBase.Init(config);

            Assert.Equal(deviceBase.DeviceID, "test");
            Assert.Equal(deviceBase.HostName, "HostName");
            Assert.Equal(deviceBase.PrimaryAuthKey, "key");
            Assert.NotNull(deviceBase.DeviceProperties);
            Assert.NotNull(deviceBase.Commands);
            Assert.NotNull(deviceBase.Telemetry);
        }
 public async Task<List<InitialDeviceConfig>> GetDeviceListAsync()
 {
     List<InitialDeviceConfig> devices = new List<InitialDeviceConfig>();
     var devicesTable = await AzureTableStorageHelper.GetTableAsync(_storageConnectionString, _deviceTableName);
     TableQuery<DeviceListEntity> query = new TableQuery<DeviceListEntity>();
     foreach (var device in devicesTable.ExecuteQuery(query))
     {
         var deviceConfig = new InitialDeviceConfig
         {
             HostName = device.HostName,
             DeviceId = device.DeviceId,
             Key = device.Key
         };
         devices.Add(deviceConfig);
     }
     return devices;
 }
        public async Task <List <InitialDeviceConfig> > GetDeviceListAsync()
        {
            List <InitialDeviceConfig>    devices = new List <InitialDeviceConfig>();
            TableQuery <DeviceListEntity> query   = new TableQuery <DeviceListEntity>();
            var devicesResult = await _azureTableStorageClient.ExecuteQueryAsync(query);

            foreach (var device in devicesResult)
            {
                var deviceConfig = new InitialDeviceConfig()
                {
                    HostName = device.HostName,
                    DeviceId = device.DeviceId,
                    Key      = device.Key
                };
                devices.Add(deviceConfig);
            }
            return(devices);
        }
Example #16
0
        public async void RemoveDeviceAsyncTest()
        {
            InitialDeviceConfig device = new InitialDeviceConfig()
            {
                DeviceId = this.testDeviceId,
                HostName = this.testHostName,
                Key      = this.testKey
            };

            Assert.False(await this.repo.RemoveDeviceAsync(device.DeviceId));

            await this.repo.GetDeviceListAsync();

            await this.repo.AddOrUpdateDeviceAsync(device);

            Assert.True(await this.repo.RemoveDeviceAsync(device.DeviceId));
            Assert.False(await this.repo.RemoveDeviceAsync(device.DeviceId));
        }
        public CoolerDeviceTests()
        {
            _fixture    = new Fixture();
            _initConfig = _fixture.Create <InitialDeviceConfig>();
            var loggerMock = new Mock <ILogger>();

            _transportMock = new Mock <ITransport>();
            var transportFactoryMock = new Mock <ITransportFactory>();

            transportFactoryMock.Setup(x => x.CreateTransport(It.IsNotNull <IDevice>())).Returns(_transportMock.Object);
            var telemetryFactoryMock      = new Mock <ITelemetryFactory>();
            var configurationProviderMock = new Mock <IConfigurationProvider>();
            var coolerDeviceFactory       = new CoolerDeviceFactory();

            _coolerDevice = coolerDeviceFactory.CreateDevice(loggerMock.Object, transportFactoryMock.Object,
                                                             telemetryFactoryMock.Object, configurationProviderMock.Object, _initConfig) as CoolerDevice;
            loggerMock.Setup(x => x.LogInfo(It.IsAny <string>(), It.IsAny <object[]>()));
        }
Example #18
0
        public async void AddOrUpdateDeviceAsyncTest()
        {
            //add device

            InitialDeviceConfig device = new InitialDeviceConfig()
            {
                DeviceId = this.testDeviceId,
                HostName = this.testHostName,
                Key      = this.testKey
            };

            //should fail before GetDeviceListAsync initializes the known list of devices
            await this.repo.AddOrUpdateDeviceAsync(device);

            //get all devices
            Assert.Null(await this.repo.GetDeviceAsync(device.DeviceId));
            List <InitialDeviceConfig> devices = await this.repo.GetDeviceListAsync();

            Assert.False(devices.Contains(device));

            //repeat and it should be added
            await this.repo.AddOrUpdateDeviceAsync(device);

            var returnedDevice = await this.repo.GetDeviceAsync(device.DeviceId);

            Assert.NotNull(returnedDevice);
            Assert.Equal(returnedDevice.Key, this.testKey);
            Assert.Equal(returnedDevice.HostName, this.testHostName);

            //repeat and it should be updated
            string changedKey = "changedKey";

            device.Key = changedKey;
            string changedHostName = "changedHostName";

            device.HostName = changedHostName;
            await this.repo.AddOrUpdateDeviceAsync(device);

            var changedDevice = await this.repo.GetDeviceAsync(device.DeviceId);

            Assert.NotNull(changedDevice);
            Assert.Equal(changedDevice.Key, changedKey);
            Assert.Equal(changedDevice.HostName, changedHostName);
        }
        public async Task <List <InitialDeviceConfig> > GetDeviceListAsync()
        {
            List <InitialDeviceConfig> devices = new List <InitialDeviceConfig>();
            var devicesTable = await AzureTableStorageHelper.GetTableAsync(_storageConnectionString, _deviceTableName);

            TableQuery <DeviceListEntity> query = new TableQuery <DeviceListEntity>();

            foreach (var device in devicesTable.ExecuteQuery(query))
            {
                var deviceConfig = new InitialDeviceConfig()
                {
                    HostName = device.HostName,
                    DeviceId = device.DeviceId,
                    Key      = device.Key
                };
                devices.Add(deviceConfig);
            }
            return(devices);
        }
Example #20
0
        public async void UpdateDeviceEnabledStatusAsyncTest_simulatedDevice()
        {
            var device   = this.fixture.Create <DeviceModel>();
            var keys     = fixture.Create <SecurityKeys>();
            var hostname = "hostname";

            device.IsSimulatedDevice = true;
            var deviceId = device.DeviceProperties.DeviceID;
            InitialDeviceConfig savedConfig = null;

            this._configProviderMock.Setup(x => x.GetConfigurationSettingValue(It.IsAny <string>())).Returns(hostname);
            this._iotHubRepositoryMock.Setup(mock => mock.UpdateDeviceEnabledStatusAsync(deviceId, It.IsAny <bool>())).ReturnsAsync(new Device());
            this._iotHubRepositoryMock.Setup(mock => mock.GetDeviceKeysAsync(deviceId)).ReturnsAsync(keys);
            this._deviceRegistryCrudRepositoryMock.Setup(
                mock => mock.UpdateDeviceEnabledStatusAsync(deviceId, It.IsAny <bool>()))
            .ReturnsAsync(device);
            this._virtualDeviceStorageMock.Setup(
                mock => mock.AddOrUpdateDeviceAsync(It.IsNotNull <InitialDeviceConfig>()))
            .Callback <InitialDeviceConfig>(conf => savedConfig = conf)
            .Returns(Task.FromResult(true))
            .Verifiable();

            // Enable simulated device
            var res = await this._deviceLogic.UpdateDeviceEnabledStatusAsync(deviceId, true);

            Assert.Equal(res, device);
            _virtualDeviceStorageMock.Verify();
            Assert.Equal(deviceId, savedConfig.DeviceId);
            Assert.Equal(hostname, savedConfig.HostName);
            Assert.Equal(keys.PrimaryKey, savedConfig.Key);

            this._virtualDeviceStorageMock.Setup(mock => mock.RemoveDeviceAsync(deviceId))
            .Returns(Task.FromResult(true))
            .Verifiable();
            // Disable simulated device
            res = await this._deviceLogic.UpdateDeviceEnabledStatusAsync(deviceId, false);

            Assert.Equal(res, device);
            _virtualDeviceStorageMock.Verify();
        }
Example #21
0
        public Task AddOrUpdateDeviceAsync(InitialDeviceConfig deviceConfig)
        {
            return(Task.Run(() =>
            {
                if (!_devices.Any())
                {
                    return;
                }

                var device = _devices.FirstOrDefault(x => x.DeviceId == deviceConfig.DeviceId);

                if (device != null)
                {
                    device.Key = deviceConfig.Key;
                    device.HostName = deviceConfig.HostName;
                }
                else
                {
                    _devices.Add(deviceConfig);
                }
            }));
        }
        public Task AddOrUpdateDeviceAsync(InitialDeviceConfig deviceConfig)
        {
            return Task.Run(() =>
            {
                if (!_devices.Any())
                {
                    return;
                }

                var device = _devices.FirstOrDefault(x => x.DeviceId == deviceConfig.DeviceId);

                if (device != null)
                {
                    device.Key = deviceConfig.Key;
                    device.HostName = deviceConfig.HostName;
                }
                else
                {
                    _devices.Add(deviceConfig);
                }
            });
        }
        public IDevice CreateDevice(ILogger logger, ITransportFactory transportFactory,
                                    ITelemetryFactory telemetryFactory, IConfigurationProvider configurationProvider, InitialDeviceConfig config)
        {
            var device = new EngineDevice(logger, transportFactory, telemetryFactory, configurationProvider);

            device.Init(config);
            return(device);
        }
        internal WeatherShieldDeviceFactory(ILogger logger, ITransportFactory transportFactory,
            ITelemetryFactory telemetryFactory, IConfigurationProvider configurationProvider, InitialDeviceConfig config)
        {

        }
        public async void StartDeviceSensorAsync(AbstractSensor sensor, dynamic device)
        {
            if (device == null)
                return;

            bool hasMutex = false;
            try
            {
                hasMutex = _mutex.WaitOne(5000);
                ;

                // check if device already exists
                string deviceID = DeviceSchemaHelper.GetDeviceID(device);
                WeatherShieldDevice existingDevice;
                if (!_devices.ContainsKey(deviceID))
                {
                    
                    var deviceCancellationToken = new CancellationTokenSource();
                    _cancellationTokens.Add(deviceID, deviceCancellationToken);

                    //Initialize device as a new
                    existingDevice = new WeatherShieldDevice(this._logger, this._transportFactory,
                        this._telemetryFactory, this._configProvider, deviceCancellationToken.Token);

                    InitialDeviceConfig config = await this._deviceConfiguration.GetDeviceAsync(deviceID);
                    if (config == null) {
                        config = new InitialDeviceConfig();
                        ///HostName=MtcDataCenter.azure-devices.net;DeviceId=makhluDev;SharedAccessKey=Q3e1wSyrkpspcR06m11bNw==
                        config.Key = @"QoGh9kGJus4hvWUX9Hhjag==";//string.Empty;
                        config.HostName = @"MtcDataCenter.azure-devices.net";//string.Empty;                        
                    }
                    existingDevice.Init(config, device);
                    
                    _devices.Add(deviceID, existingDevice);

                }
                else
                {
                    existingDevice = _devices[deviceID] as WeatherShieldDevice;
                }
                existingDevice.AddDeviceSensor(sensor);


                this._logger.LogInfo("Addedd sensor {0} dor device id {1}", new object[] { sensor.Title, existingDevice.DeviceID });

            }catch(Exception ex)
            {
                this._logger.LogError("Error adding {0} for device {1}. Error message: {2}", new object[] { sensor, device, ex.Message });
            }
            finally
                {
                    if (hasMutex)
                    {
                        _mutex.ReleaseMutex();
                    }
                }
}