private bool WriteDataToFile(string filePath, IGuadtimGardenData data)
		{
			using (StreamWriter streamWriter = new StreamWriter(filePath, true))
			{
				try
				{
					streamWriter.WriteLine(data.CreateDataLine());
					streamWriter.Flush();
					SignalWrittenFile();
				}
				catch (Exception)
				{
					SignalError();
					return false;
				}
				finally
				{
					streamWriter.Flush();
					streamWriter.Close();
					Debug.Print("File written");
				}
				
			}
			return true;
		}
		private string CreateWaterlevelsDataString(IGuadtimGardenData dataPackage)
		{
			var dataString = "CreatedDateTime=" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
			dataString += "&ReservoirIsEmpty=" + dataPackage.ReservoirIsEmpty;
			dataString += "&GrowPodIsEmpty=" + dataPackage.GrowPodIsEmpty;
			dataString += "&GrowPodIsFull=" + dataPackage.GrowPodIsFull;
			return dataString;
		}
		public void SendPumpData(IGuadtimGardenData dataPackage)
		{
			var dataString = CreatePumpDataString(dataPackage);

			var urlPath = "/pump";
			_httpSender.DoInitializeAndSend(dataString, urlPath);

		}
		//Check if there is a SD card

		//Create folder?

		//Create file

		//Append data to existing file

		public bool DoDataWrite(IGuadtimGardenData data)
		{
			_dateTime = DateTime.Now;
			if (DriveExists())
			{
				var filePath=PrepareFolderAndCreateFileName();
				return WriteDataToFile(filePath, data);
			}
			return false;
		}
		private string CreateHumidityDataString(IGuadtimGardenData dataPackage)
		{
			var dataString = "CreatedDateTime=" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
			dataString += "&Humidity=" + dataPackage.Humidity.ToString("f");
			dataString += "&Temperature=" + dataPackage.Temperature.ToString("f");
			return dataString;
		}
		public void SendTempAndHumidityData(IGuadtimGardenData dataPackage)
		{
			var dataString = CreateHumidityDataString(dataPackage);
			var urlPath = "/tempandhumidity";
			_httpSender.DoInitializeAndSend(dataString, urlPath);
		}
		//private string CreateDataString(IGuadtimGardenData dataPackage)
		//{
		//	var dataString = "CreatedDateTime=" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
		//	var humidity = dataPackage.Humidity;
		//	dataString += "&humidity=" + humidity.ToString("f");
		//	dataString += "&temperature=" + dataPackage.Temperature.ToString("f");
		//	dataString += "&IsWarming=" + dataPackage.HeaterIsOn.ToString();
		//	dataString += "&IsWatering=" + dataPackage.PumpOn.ToString();

		//	return dataString;
		//}

		public void SendWaterlevelsData(IGuadtimGardenData dataPackage)
		{
			var dataString = CreateWaterlevelsDataString(dataPackage);
			var urlPath = "/waterlevels";
			_httpSender.DoInitializeAndSend(dataString, urlPath);
		}
		private string CreateHeaterDataString(IGuadtimGardenData dataPackage)
		{
			var dataString = "CreatedDateTime=" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
			dataString += "&HeatOn=" + dataPackage.HeaterIsOn;
			return dataString;
		}
		public void SendDataToWeb(IGuadtimGardenData dataPackage)
		{//deviceId = BytesToHexString(networkInterface.PhysicalAddress);
			SendHeaterData(dataPackage);
			SendTempAndHumidityData(dataPackage);
			SendWaterlevelsData(dataPackage);
		}
		public static IGuadtimGardenData SetWaterLevelData(this IGuadtimGardenData gardenData, IGuadtimGardenData gardenDataToUpdateFrom)
		{
			gardenData = new GuadtimGardenData(gardenData.PumpOn, DateTime.Now, gardenData.Temperature, gardenData.Humidity, gardenData.HeaterIsOn, gardenDataToUpdateFrom.ReservoirIsEmpty, gardenDataToUpdateFrom.GrowPodIsEmpty, gardenDataToUpdateFrom.GrowPodIsFull);
			return gardenData;
		}
示例#11
0
 private static void DoLogicBasedOnHumidity(IGuadtimGardenData dataPackage)
 {
     //At some later time create a web method to post help for water if it is really dry!
 }
示例#12
0
        private static void DoLogicBasedOnWaterLevels(IGuadtimGardenData dataPackage)
        {
            
            if (!dataPackage.ReservoirIsEmpty)
            {
                if (dataPackage.GrowPodIsEmpty)
                {
                    _httpDataDeliverer.SendPumpData(new GuadtimGardenData().PumpOn());
                    while (!dataPackage.ReservoirIsEmpty && !dataPackage.GrowPodIsFull)
                    {

                        _relays.RunPump(1500);
                        //Send some message about pumping for a second?
                        var waterLevelData = _waterLevelSensorController.GetWaterLevelStatus();
                        dataPackage.UpdateWaterLevelData(waterLevelData);


                    }
                    _httpDataDeliverer.SendPumpData(new GuadtimGardenData().PumpOff());
                    _httpDataDeliverer.SendWaterlevelsData(new GuadtimGardenData().SetWaterLevelData(dataPackage));

                }
            }
            else
            {
                //Send some message about the reservoir being empty
                _httpDataDeliverer.SendWaterlevelsData(new GuadtimGardenData().SetWaterLevelData(dataPackage));
            }
        }
示例#13
0
        private static void DoLogicBasedOnTemperature(IGuadtimGardenData dataPackage)
        {
            var temperature=dataPackage.Temperature;
            var heatIsOn = dataPackage.HeaterIsOn;
            if (temperature > MaxTemperature && heatIsOn)
            {
                _relays.Heater(HeaterStatus.Off);
                _httpDataDeliverer.SendHeaterData(new GuadtimGardenData().AddHeaterOff());

            }
            if (temperature < MinimumTemperature && !heatIsOn)
            {
                _relays.Heater(HeaterStatus.On);
                _httpDataDeliverer.SendHeaterData(new GuadtimGardenData().AddHeaterOn());
            }

            //Send some message with chosen action to webserver?
        }
示例#14
0
        private static void StoreAndSendInitialData(IGuadtimGardenData dataPackage)
        {
            _sdCardController.DoDataWrite(dataPackage);

            _httpDataDeliverer.SendDataToWeb(dataPackage);
        }
示例#15
0
 private static void DoLogicBasedOnWaterLevelsWithHumidityFocus(IGuadtimGardenData dataPackage)
 {
     //Do we need to do anything?
 }