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; }
private static void DoLogicBasedOnHumidity(IGuadtimGardenData dataPackage) { //At some later time create a web method to post help for water if it is really dry! }
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)); } }
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? }
private static void StoreAndSendInitialData(IGuadtimGardenData dataPackage) { _sdCardController.DoDataWrite(dataPackage); _httpDataDeliverer.SendDataToWeb(dataPackage); }
private static void DoLogicBasedOnWaterLevelsWithHumidityFocus(IGuadtimGardenData dataPackage) { //Do we need to do anything? }