Example #1
0
        public async Task <bool> InitSensor(Sensor newSlave)
        {
            if (newSlave != null)
            {
                var success = Sensors.TryAdd(newSlave.MAC, new HouseSlaveSensorClient {
                    Slave = newSlave, ConnectionId = Context.ConnectionId
                });
                if (success)
                {
                    _logger.Info($"Sensor with MAC: {newSlave.MAC}  has been added to current list");

                    var containsEntity =
                        await SensorRepository.ContainsEntityWithMAC(newSlave.MAC, CancellationToken.None);

                    if (!containsEntity)
                    {
                        await SensorRepository.Add(newSlave, Token);

                        _logger.Info($"Sensor with MAC: {newSlave.MAC} has been added to repository.");
                    }
                    else
                    {
                        await SensorRepository.Update(newSlave, Token);

                        _logger.Info($"Sensor with MAC: {newSlave.MAC} has been updated.");
                    }
                }
            }

            return(false);
        }
        protected override void ActivateInternal()
        {
            var setting        = Resolver.GetInstance <DeconzToMqttSetting>();
            var logManager     = Resolver.GetInstance <ILogManager>();
            var metricRecorder = Resolver.GetInstance <IMetricRecorder>();

            var sensorRepository = new SensorRepository(setting.DeconzApiKey, new Uri($"ws://{setting.DeconzAddress}:{setting.DeconzApiPort}"));
            var lightRepository  = new LightRepository(setting.DeconzApiKey, new Uri($"ws://{setting.DeconzAddress}:{setting.DeconzApiPort}"));

            var healthCheckService = new HealthCheckService(logManager.GetLogger <HealthCheckService>());
            var websockerReceiver  = new WebsocketReceiver(logManager.GetLogger <WebsocketReceiver>(), new Uri($"ws://{setting.DeconzAddress}:{setting.DeconzWebsocketPort}"));
            var mqttClient         = new MqttClient(logManager.GetLogger <MqttClient>(), metricRecorder, logManager, setting.MqttAddress, setting.MqttUsername, setting.MqttPassword);
            var eventHandler       = new EventHandlingService(logManager.GetLogger <EventHandlingService>(), websockerReceiver, mqttClient, sensorRepository);
            var telemetryService   = new TelemetryService(logManager.GetLogger <TelemetryService>(), metricRecorder, new DeconzRepository[] {
                sensorRepository,
                lightRepository
            }, mqttClient);

            healthCheckService.AddHealthCheck(websockerReceiver);
            healthCheckService.AddHealthCheck(mqttClient);

            mqttClient.Start();
            eventHandler.Start();
            websockerReceiver.Start();
            telemetryService.Start();
            healthCheckService.Start();
        }
Example #3
0
        public override void Configure(IFunctionsHostBuilder builder)
        {
            IConfiguration configuration = new ConfigurationBuilder()
                                           .SetBasePath(Environment.CurrentDirectory)
                                           .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                                           .AddEnvironmentVariables()
                                           .Build();

            IConfigurationSection influxDBConfigurationSection = configuration.GetSection("InfluxDB");
            IConfigurationSection featuresConfigurationSection = configuration.GetSection("Features");

            IInfluxDBConfiguration influxDBConfiguration = new InfluxDBConfiguration();
            IFeaturesConfiguration featuresConfiguration = new FeaturesConfiguration();

            influxDBConfigurationSection.Bind(influxDBConfiguration);
            featuresConfigurationSection.Bind(featuresConfiguration);

            InfluxDBClientOptions influxDBClientOptions = InfluxDBClientOptions.Builder
                                                          .CreateNew()
                                                          .Url(influxDBConfiguration.Url)
                                                          .AuthenticateToken(influxDBConfiguration.Token.ToCharArray())
                                                          .Org(influxDBConfiguration.Organisation)
                                                          .Bucket(influxDBConfiguration.Bucket)
                                                          .Build();

            InfluxDBClient    influxDBClient   = InfluxDBClientFactory.Create(influxDBClientOptions);
            ISensorRepository sensorRepository = new SensorRepository(influxDBClient);

            builder.Services.AddSingleton <IFeaturesConfiguration>(featuresConfiguration);
            builder.Services.AddSingleton <ISensorRepository>(sensorRepository);
            builder.Services.AddSensorService();
            builder.Services.AddFeatureService();
        }
Example #4
0
 public LabFarmService(LabFarmRepository labfarmRepository, SensorTypeRepository sensorTypeRepository, SensorRepository sensorRepository, ConfigurationService configService)
 {
     _labfarmRepository    = labfarmRepository;
     _sensorTypeRepository = sensorTypeRepository;
     _sensorRepository     = sensorRepository;
     _configService        = configService;
 }
Example #5
0
 public UnitOfWork(ApplicationDBContext context)
 {
     this.context = context;
     Users        = new UserRepository(context);
     Walls        = new WallRepository(context);
     Sensors      = new SensorRepository(context);
     Materials    = new MaterialRepository(context);
 }
 public EventHandlingService(ILogger logger,
                             WebsocketReceiver websocketReceiver,
                             MqttClient mqttClient,
                             SensorRepository sensorRepository)
 {
     _logger            = logger;
     _websocketReceiver = websocketReceiver;
     _mqttClient        = mqttClient;
     _sensorRepository  = sensorRepository;
 }
Example #7
0
        public SensorQuery(SensorRepository sensorRepository)
        {
            FieldAsync <SensorType>(
                "sensor",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <StringGraphType> > {
                Name = "id", Description = "id of the sensor"
            }
                    ),
                resolve: async context => await sensorRepository.Get(context.GetArgument <int>("id"))
                );

            FieldAsync <SensorType>(
                "sensors",
                resolve: async context => await sensorRepository.GetAll()
                );
        }
Example #8
0
        public async Task ShouldGetEntity()
        {
            // Arrange
            var temperatureContext = CreateTemperatureContext();
            var repository         = new SensorRepository(temperatureContext);
            var entity             = repository.Add(new Sensor {
                Name = "Name"
            });
            await repository.SaveChangesAsync();

            // Act
            var loadedEntity = await repository.Get(entity.Id);

            // Assert
            loadedEntity.Id.Should().Be(entity.Id);
            loadedEntity.Name.Should().Be(entity.Name);
            loadedEntity.TempReadings.Should().BeEquivalentTo(entity.TempReadings);
        }
Example #9
0
        public async Task ShouldCreateEntity()
        {
            // Arrange
            var temperatureContext = CreateTemperatureContext();
            var repository         = new SensorRepository(temperatureContext);

            // Act
            var createdEntity = repository.Add(new Sensor {
                Name = "Name"
            });
            var saved = await repository.SaveChangesAsync();

            // Assert
            saved.Should().BeTrue();
            createdEntity.Id.Should().BeGreaterThan(0);
            createdEntity.Name.Should().Be("Name");
            createdEntity.TempReadings.Should().BeNull();
        }
        public bool UpdateSensor(Sensor newSlave)
        {
            var sensorClient = Sensors.Where(x => x.Key == newSlave.MAC).Select(x => x.Value).FirstOrDefault();

            if (sensorClient != null)
            {
                sensorClient.Slave.Name = newSlave.Name;
                Sensors.AddOrUpdate(newSlave.MAC, sensorClient, (key, oldVal) => sensorClient);
                try
                {
                    SensorRepository.Update(newSlave, Token);
                }
                catch (Exception e)
                {
                    _logger.Error($"Problem with updating to Database.");
                    return(false);
                }
                _logger.Info($"Sensor with MAC {newSlave.MAC} was renamed.");
            }

            return(false);
        }
Example #11
0
        public async Task ShouldUpdateEntity()
        {
            // Arrange
            var temperatureContext = CreateTemperatureContext();
            var repository         = new SensorRepository(temperatureContext);
            var entity             = repository.Add(new Sensor {
                Name = "Name"
            });
            await repository.SaveChangesAsync();

            entity.Name = "New name";

            // Act
            var updatedEntity = repository.Update(entity);
            var saved         = await repository.SaveChangesAsync();

            // Assert
            saved.Should().BeTrue();
            updatedEntity.Id.Should().Be(entity.Id);
            updatedEntity.Name.Should().Be("New name");
            updatedEntity.TempReadings.Should().BeEquivalentTo(entity.TempReadings);
        }
        public SensorMutation(SensorRepository sensorRepository)
        {
            Name = "Mutation";

            FieldAsync <SensorType>(
                "createSensor",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <SensorInputType> > {
                Name = "sensor"
            }
                    ),
                resolve: async context =>
            {
                var sensor = context.GetArgument <Data.Sensor>("sensor");
                sensor     = sensorRepository.Add(sensor);
                await sensorRepository.SaveChangesAsync();
                return(sensor);
            });

            FieldAsync <SensorType>(
                "updateSensor",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <StringGraphType> >
            {
                Name = "id", Description = "id of the sensor"
            },
                    new QueryArgument <NonNullGraphType <SensorInputType> > {
                Name = "sensor"
            }
                    ),
                resolve: async context =>
            {
                var sensor = context.GetArgument <Data.Sensor>("sensor");
                sensor.Id  = context.GetArgument <int>("id");
                sensor     = sensorRepository.Update(sensor);
                await sensorRepository.SaveChangesAsync();
                return(sensor);
            });
        }
Example #13
0
        public void DoWork(object state)
        {
            _logger.LogInformation("Timed Background Service is working.");

            using (var scope = _scopeFactory.CreateScope())
            {
                var databaseContext = scope.ServiceProvider.GetRequiredService <DatabaseContext>();

                SensorHistoryRepository sensorHistoryRepository = new SensorHistoryRepository(databaseContext);
                SensorRepository        sensorRepository        = new SensorRepository(databaseContext);

                var temperatureSensors = databaseContext.Sensors.OfType <TemperatureSensor>().ToList();
                var humiditySensors    = databaseContext.Sensors.OfType <HumiditySensor>().ToList();
                var smokeSensors       = databaseContext.Sensors.OfType <SmokeSensor>().ToList();
                var motionSensors      = databaseContext.Sensors.OfType <MotionSensor>().ToList();

                double       currentTemperature = 0;
                double       currentHumidity    = 0;
                double       currentSmoke       = 0;
                double       currentMotion      = 0;
                const double MAX_NUMBER         = 1.5;
                const double MIN_NUMBER         = 0.5;

                foreach (var sensor in temperatureSensors)
                {
                    currentTemperature = random.NextDouble() * ((double)sensor.MaxValue * MAX_NUMBER - (double)sensor.MinValue * MIN_NUMBER) + (double)sensor.MinValue * MIN_NUMBER;
                    _logger.LogInformation("currentTemperature = " + currentTemperature);

                    if (currentTemperature > sensor.MaxValue || currentTemperature < sensor.MinValue)
                    {
                        sensor.IsOn        = true;
                        sensor.Temperature = currentTemperature;
                    }

                    else
                    {
                        sensor.IsOn        = false;
                        sensor.Temperature = currentTemperature;
                    }

                    _logger.LogInformation("IsOn = " + sensor.IsOn);

                    //sensorHistoryRepository.AddTemperatureSensorHistory(sensor);
                    sensorRepository.UpdateTemperatureSensor(sensor);
                }

                foreach (var sensor in humiditySensors)
                {
                    currentHumidity = random.NextDouble() * ((double)sensor.MaxValue * MAX_NUMBER - (double)sensor.MinValue * MIN_NUMBER) + (double)sensor.MinValue * MIN_NUMBER;
                    _logger.LogInformation("currentHumidity = " + currentHumidity);

                    if (currentHumidity > sensor.MaxValue || currentHumidity < sensor.MinValue)
                    {
                        sensor.IsOn     = true;
                        sensor.Humidity = currentHumidity;
                    }

                    else
                    {
                        sensor.IsOn     = false;
                        sensor.Humidity = currentHumidity;
                    }

                    _logger.LogInformation("IsOn = " + sensor.IsOn);

                    sensorRepository.UpdateHumiditySensor(sensor);
                }

                foreach (var sensor in smokeSensors)
                {
                    currentSmoke = random.NextDouble() * ((double)sensor.MaxValue * MAX_NUMBER - (double)sensor.MinValue * MIN_NUMBER) + (double)sensor.MinValue * MIN_NUMBER;
                    _logger.LogInformation("currentSmoke = " + currentSmoke);

                    if (currentSmoke > sensor.MaxValue || currentSmoke < sensor.MinValue)
                    {
                        sensor.IsOn  = true;
                        sensor.Smoke = currentSmoke;
                    }

                    else
                    {
                        sensor.IsOn  = false;
                        sensor.Smoke = currentSmoke;
                    }

                    _logger.LogInformation("IsOn = " + sensor.IsOn);

                    sensorRepository.UpdateSmokeSensor(sensor);
                }

                foreach (var sensor in motionSensors)
                {
                    currentMotion = random.NextDouble();
                    _logger.LogInformation("currentMotion = " + currentMotion);

                    if (currentMotion > 0.5)
                    {
                        sensor.IsOn   = true;
                        sensor.IsMove = true;
                    }

                    else
                    {
                        sensor.IsOn   = false;
                        sensor.IsMove = false;
                    }

                    _logger.LogInformation("IsOn = " + sensor.IsOn);

                    sensorRepository.UpdateMotionSensor(sensor);
                }
            }
        }
Example #14
0
 public SensorService(string username, string password)
 {
     sensorRepository = new SensorRepository(username, password);
 }
Example #15
0
 public SensorManager(SailbotContext context)
 {
     sensorRepository = new SensorRepository <T>(context);
 }
 internal GatewayService()
 {
     _gatewayRepository = new GatewayRepository();
     _sensorRepository  = new SensorRepository();
 }
 internal SensorBgWService()
 {
     _sensorService    = new SensorService();
     _sensorRepository = new SensorRepository();
     _modbusService    = new ModbusService();
 }
Example #18
0
 public SensorController(SensorRepository sensorRepository)
 {
     _sensorRepository = sensorRepository;
 }
Example #19
0
 public CarService()
 {
     _sensorRepository = new SensorRepository();
 }
Example #20
0
 public SensorRepositoryFixture()
 {
     _connectionString = ConfigurationManager.ConnectionStrings["TheDump"].ConnectionString;
     _sensorRepository = new SensorRepository();
 }
Example #21
0
 public SensorService(SensorRepository sensorRepository)
 {
     _sensorRepository = sensorRepository;
 }