private string CreateDeviceConfigurationString(DeviceConfiguration deviceConfig)
        {
            StringBuilder configStringBuilder = new StringBuilder();

            configStringBuilder.Append("$pollingon:");
            configStringBuilder.Append(deviceConfig.PollingEnabled?1:0);
            configStringBuilder.Append(";");

            configStringBuilder.Append("$interval:");
            configStringBuilder.Append(deviceConfig.PostBackIntervalMinutes);
            configStringBuilder.Append(";");

            WateringArea firstWateringArea = deviceConfig.WateringAreas.Single(w => w.WateringLocation == WateringLocation.First);

            configStringBuilder.Append("$water1max:");
            configStringBuilder.Append(firstWateringArea.MaxSoilHumidity);
            configStringBuilder.Append(";");

            configStringBuilder.Append("$water1min:");
            configStringBuilder.Append(firstWateringArea.MinSoilHumidity);
            configStringBuilder.Append(";");

            WateringArea secondWateringArea = deviceConfig.WateringAreas.Single(w => w.WateringLocation == WateringLocation.First);

            configStringBuilder.Append("$water2max:");
            configStringBuilder.Append(secondWateringArea.MaxSoilHumidity);
            configStringBuilder.Append(";");

            configStringBuilder.Append("$water2min:");
            configStringBuilder.Append(secondWateringArea.MaxSoilHumidity);
            configStringBuilder.Append(";");

            return(configStringBuilder.ToString());
        }
Exemplo n.º 2
0
        public static void Initialize(GreenHouseDatabaseContext context)
        {
            context.Database.EnsureCreated();

            // Look for any device configurations
            if (context.DeviceConfigurations.Any())
            {
                return;   // DB has been seeded
            }

            var deviceConfiguration = new DeviceConfiguration
            {
                SparkCoreId             = "300037001447343339383037",
                SparkCoreAccessToken    = "4c98879cda2840fbfdedfa6c6b872264a4015961",
                PollingEnabled          = true,
                PostBackUrl             = "greuter.azure.com",
                PostBackPort            = 8080,
                PostBackIntervalMinutes = 5,

                WateringAreas = new List <WateringArea>(),
            };

            WateringArea areaOne = new WateringArea
            {
                DeviceConfiguration = deviceConfiguration,
                AreaName            = "BachSeite",
                MaxSoilHumidity     = 80,
                MinSoilHumidity     = 50,
                WateringLocation    = WateringLocation.First
            };

            WateringArea areaTwo = new WateringArea
            {
                DeviceConfiguration = deviceConfiguration,
                AreaName            = "FeldSeite",
                MaxSoilHumidity     = 90,
                MinSoilHumidity     = 40,
                WateringLocation    = WateringLocation.Second
            };


            deviceConfiguration.WateringAreas.Add(areaOne);
            deviceConfiguration.WateringAreas.Add(areaTwo);

            context.DeviceConfigurations.Add(deviceConfiguration);

            context.SaveChanges();
        }
        public WateringArea UpdateWateringArea(int deviceId, WateringArea wateringArea)
        {
            DeviceConfiguration existingConfiguration = GetSingle(deviceId);

            if (existingConfiguration != null)
            {
                var wateringAreaToUpdate =
                    existingConfiguration.WateringAreas.SingleOrDefault(w => w.Id == wateringArea.Id);
                if (wateringAreaToUpdate != null)
                {
                    _dbContext.Update(wateringAreaToUpdate);

                    wateringAreaToUpdate.AreaName        = wateringArea.AreaName;
                    wateringAreaToUpdate.MaxSoilHumidity = wateringArea.MaxSoilHumidity;
                    wateringAreaToUpdate.MinSoilHumidity = wateringArea.MinSoilHumidity;

                    _dbContext.SaveChanges();

                    return(wateringAreaToUpdate);
                }
            }
            return(null);
        }