Example #1
0
        public Sensor GetSensor(string MacAddress)
        {
            SensorDataController sdc = new SensorDataController();
            SensorData           sd  = sdc.GetSensorData(MacAddress);
            Sensor sensor            = null;

            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();

                string     sqlString = "SELECT * FROM Sensors WHERE MacAddress = '" + MacAddress + "'";
                SqlCommand cmd       = new SqlCommand(sqlString, conn);

                SqlDataReader reader = cmd.ExecuteReader();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        sensor = new Sensor {
                            MacAddress = reader[0].ToString(), Name = reader[1].ToString(), LimitUp = Convert.ToDouble(reader[2]), LimitLow = Convert.ToDouble(reader[3]), FK_UserId = Convert.ToInt32(reader[4]), Data = sd
                        };
                    }
                }

                reader.Close();
            }
            return(sensor);
        }
Example #2
0
        public Watering CheckWatering(string mac)
        {
            // make sensor obj
            Sensor sensor = sensorController.GetSensor(mac);
            // make sensorData obj
            SensorData sensorData = sensorDataController.GetSensorData(mac);
            // Get User
            User user = userController.GetUserGeo(sensor.FK_UserId);

            Watering wat = new Watering();

            wat.Port = sensorController.GetPort(mac).Port;

            if (sensorData.Humidity < sensor.LimitLow)
            {
                userController.UpdateWaterCount(user.Id);
                wat.Water = 1;
                return(wat);
                //return true;
            }
            else if (sensorData.Humidity < sensor.LimitUp)
            {
                // Generate Weathermodels
                weatherAPI = new WeatherAPI(user.Lat, user.Lon);
                WeatherModel weatherModel = weatherAPI.GetForecast();

                double incommingRain = 0;
                for (int i = 0; i < threeHourIntervals; i++)
                {
                    incommingRain += weatherModel.list[i].rain._3h;
                }

                if (incommingRain <= rainRequirementInMM)
                {
                    userController.UpdateWaterCount(user.Id);
                    wat.Water = 1;
                    return(wat);
                }
            }

            wat.Water = 0;
            return(wat);
        }