private boolean startSprinkler(StartReason reason) {
		if (DeviceStatus.humidityStatus >= 80 && reason != StartReason.MOTION) {
			Log.log(reason.toString() + ": humidity too high, sprinkler not started", deviceName);
			return false;
		} else if (DeviceStatus.weatherStatus == DeviceStatus.WeatherStatus.HEAVY_RAIN || DeviceStatus.weatherStatus == DeviceStatus.WeatherStatus.LIGHT_RAIN) {
			if (DeviceStatus.humidityStatus > 10) {
				Log.log(reason.toString() + ": it's going to rain, sprinkler not started", deviceName);
				return false;
			} else {
				Log.log("It's going to rain, but humidity is very low. Trying to start sprinkler.", deviceName);
			}
		}
		
		if (DeviceStatus.sprinklerStatus == DeviceStatus.SprinklerStatus.OFF) {
			DeviceStatus.sprinklerStatus = DeviceStatus.SprinklerStatus.ON;
			
			try {
				sprinkler.startSprinkler();
			} catch (Exception e) {
				Log.log("Exception occured during service usage: " + e, deviceName);
			}
			
			Log.log(reason.toString() + ": sprinkler started", deviceName);
			return true;
		} else if (DeviceStatus.sprinklerStatus == DeviceStatus.SprinklerStatus.ON) {
			Log.log(reason.toString() + ": failed to start sprinkler: already on", deviceName);
		} else {
			Log.log(reason.toString() + ": failed to start sprinkler: no sprinkler registered", deviceName);
		}
		return false;
	}